Roc*_*cky 0 c# wpf ivalueconverter
我在datagrid中选中了复选框
<DataTemplate>
<CheckBox x:Name="chkActive" IsChecked="{Binding Active, Mode=TwoWay}"
Style="{StaticResource checkboxStyleNormal}" IsEnabled="True"/>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
并绑定数据网格
datagrid1.ItemSource = dtData.DefaultView;
Run Code Online (Sandbox Code Playgroud)
在数据表中,我正在使用Active,0并且1,我想在显示我的复选框时检查Active = 0
网格绑定但我无法绑定复选框.
有人请告诉我如何根据我的情况显示复选框选中/取消选中.
IsChecked需要一个布尔值(true/false),但该表包含一个数字类型.您需要将ValueConverter添加到绑定语句,该语句将数值转换为布尔值.
检查如何将布尔值绑定到WPF中的组合框以获得相反的情况(将bool转换为int).在您的情况下,ValueConverter应该是:
public class NumToBoolConverter: IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return ((int)value == 1);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return (bool)value ? 1 : 0;
}
}
Run Code Online (Sandbox Code Playgroud)
}
UPDATE
这篇文章有一个NumToBoolConverter,它也进行类型和空检查:
public class NumToBoolConverter : IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
if (value!=null && value is int )
{
var val = (int)value;
return (val==0) ? false : true;
}
return null;
}
public object ConvertBack(object value, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
if (value!=null && value is bool )
{
var val = (bool)value;
return val ? 1 : 0;
}
return null;
}
#endregion
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1324 次 |
| 最近记录: |