开发者

Not logic in Binding conveter

Is 开发者_如何学Pythonit possible to do something similar to this without introducing a new variable like

bool showsearch = !ShowUser;

Visibility="{Binding !ShowUser, Converter={StaticResource BoolToVis}}"


You can do it using a style and a DataTrigger. Apply the style to the element in question, and provide 2 datatrigger values- one to set visibility to true, one to false. Similar to DataTrigger where value is NOT null?


I don't think it's possible, you have to create an inverted Visibility converter like this,

public class InvertedBooleanToVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        bool flag = false;
        if (value is bool)
        {
            flag = (bool) value;
        }
        else if (value is bool?)
        {
            bool? nullable = (bool?) value;
            flag = nullable.Value;
        }
        return flag ? Visibility.Collapsed : Visibility.Visible;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return value is Visibility && (Visibility) value == Visibility.Collapsed;
    }
}


You can Write a Converter BoolToCollapsed Converter ForExample

public class BoolToVisibleConverter : ConverterMarkupExtension<BoolToVisibleConverter>, 
              IValueConverter
{
      public object Convert(object value, Type targetType, object parameter, 
                                CultureInfo culture)
            {
      bool obj=(bool) value;
      if(!obj)
      return Visibility.Collapsed;
      else
      return Visibility.Visible;

    }
     public object ConvertBack(object value, Type targetType, object parameter, 
             CultureInfo culture)
             {
               Visibility obj=(Visibility) value;
               if(obj==Visibility.Visible)
               return true;
               else
               return false;
             }

}

Add a Static Resource to Window.Resources

<Window.Resources>
    <converter:BoolToVisibleConverter x:Key="BoolToCollapsed"/>
</Window.Resources>

And then use it to a Grid,DockPanel Or anyother

 <DockPannel Visibility={Binding DockVisible, 
         Converter={StaticResource BoolToCollapsed}/>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜