布尔到可见性转换器

我该怎么做这样的事情

      

有没有办法使用布尔到vis转换器,但没有在C中编写一个完整的方法来反转? 或者我应该让这些图像重叠并在需要时隐藏一个?

据我所知,你必须为此编写自己的实现。 这是我使用的:

 public class BooleanToVisibilityConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { bool boolValue = (bool)value; boolValue = (parameter != null) ? !boolValue : boolValue; return boolValue ? Visibility.Visible : Visibility.Collapsed; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } 

我通常设置ConverterParameter='negate'因此在代码中清楚参数正在做什么。 不指定ConverterParameter使转换器的行为类似于内置的BooleanToVisibilityConverter。 如果您希望您的用法有效,您当然可以使用bool.TryParse()解析ConverterParameter并对其做出反应。

来自@K Mehta( https://stackoverflow.com/a/21951103/1963978 ),对Windows 10 Universal应用程序的方法签名稍作更新(从“CultureInfo culture”更改为“string language”,按照https:// msdn.microsoft.com/en-us/library/windows/apps/xaml/hh701934.aspx ):

 public class BooleanToVisibilityConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, string language) { bool boolValue = (bool)value; boolValue = (parameter != null) ? !boolValue : boolValue; return boolValue ? Visibility.Visible : Visibility.Collapsed; } public object ConvertBack(object value, Type targetType, object parameter, string language) { throw new NotImplementedException(); } }