job*_*lot 11 silverlight silverlight-3.0
我想将控件可见性绑定到布尔属性值的反转.我有一个属性CanDownload,如果是真的那么我想隐藏文本框,反之亦然.我怎样才能做到这一点?
谢谢
Ant*_*nes 42
这类问题是问这么频繁,答案等等类似我以为布尔它的时间有一个单一的答案全部(OK可"最")到值的转换问题.我在这里写了博客.
代码非常简单,所以我也将它粘贴在这里: -
public class BoolToValueConverter<T> : IValueConverter
{
public T FalseValue { get; set; }
public T TrueValue { get; set; }
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
return FalseValue;
else
return (bool)value ? TrueValue : FalseValue;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value != null ? value.Equals(TrueValue) : false;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以使用单行创建转换器以实现可见性: -
public class BoolToVisibilityConverter : BoolToValueConverter<Visibility> { }
Run Code Online (Sandbox Code Playgroud)
那么你可以在这样的资源中创建一个实例转换器: -
<local:BoolToVisibilityConverter x:Key="InverseVisibility" TrueValue="Collapsed" FalseValue="Visible" />
Run Code Online (Sandbox Code Playgroud)
注意TrueValue并且FalseValue从更自然的顺序交换,为您提供所需的反转逻辑.有了这个在Resources你UserControl甚至App.xaml中,你现在可以用它来绑定到CanDownload属性,TextBox Visibility属性: -
<TextBox Visibility="{Binding CanDownload, Converter={StaticResource InverseVisibility}}" />
Run Code Online (Sandbox Code Playgroud)