如何进行复选框检查并取消选中wpf

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

网格绑定但我无法绑定复选框.

有人请告诉我如何根据我的情况显示复选框选中/取消选中.

Pan*_*vos 5

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)