布尔值转换器
Converter to Bool
我有一个普通的 Checkbox
,我想将 IsChecked
属性 设置为 Binding
资源。
资源是自己写的classmyClass
,可以null
也可以引用(表示不是null
)
如果分配的对象 myObject
(在 myClass
中)是 null
,则 Checkbox
应该 不检查
并检查,如果不是 null
.
我的 xaml
文件中的 IsChecked="..."
属性 必须写什么?
您可以使用 DataTrigger
创建样式,设置 IsChecked
属性。
<CheckBox>
<CheckBox.Style>
<Style TargetType="{x:Type CheckBox}" BasedOn="{StaticResource {x:Type CheckBox}}">
<Setter Property="IsChecked" Value="True"/>
<Style.Triggers>
<DataTrigger Binding="{Binding MyObject}" Value="{x:Null}">
<Setter Property="IsChecked" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>
</CheckBox>
另一种方法是创建一个可重用的值转换器。
public class NotNullToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value != null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new InvalidOperationException();
}
}
在任何资源字典中创建转换器的实例,例如申请资源。
<local:NotNullToBooleanConverter x:Key="NotNullToBooleanConverter"/>
这个转换器可以直接在绑定中使用。
<CheckBox IsChecked="{Binding MyObject, Converter={StaticResource NotNullToBooleanConverter}}"/>
我有一个普通的 Checkbox
,我想将 IsChecked
属性 设置为 Binding
资源。
资源是自己写的classmyClass
,可以null
也可以引用(表示不是null
)
如果分配的对象 myObject
(在 myClass
中)是 null
,则 Checkbox
应该 不检查
并检查,如果不是 null
.
我的 xaml
文件中的 IsChecked="..."
属性 必须写什么?
您可以使用 DataTrigger
创建样式,设置 IsChecked
属性。
<CheckBox>
<CheckBox.Style>
<Style TargetType="{x:Type CheckBox}" BasedOn="{StaticResource {x:Type CheckBox}}">
<Setter Property="IsChecked" Value="True"/>
<Style.Triggers>
<DataTrigger Binding="{Binding MyObject}" Value="{x:Null}">
<Setter Property="IsChecked" Value="False"/>
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>
</CheckBox>
另一种方法是创建一个可重用的值转换器。
public class NotNullToBooleanConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value != null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new InvalidOperationException();
}
}
在任何资源字典中创建转换器的实例,例如申请资源。
<local:NotNullToBooleanConverter x:Key="NotNullToBooleanConverter"/>
这个转换器可以直接在绑定中使用。
<CheckBox IsChecked="{Binding MyObject, Converter={StaticResource NotNullToBooleanConverter}}"/>