我在datagrid中选中了复选框
<DataTemplate>
<CheckBox x:Name="chkActive" IsChecked="{Binding Active, Mode=TwoWay}"
Style="{StaticResource checkboxStyleNormal}" IsEnabled="True"/>
</DataTemplate>
并绑定datagrid
datagrid1.ItemSource = dtData.DefaultView;
在数据表中,我正在0
和1
处于“有效状态”,我希望在Active = 0
网格绑定但我无法绑定复选框。
有人请告诉我如何根据我的情况显示复选框选中/取消选中。
答案 0 :(得分:5)
IsChecked需要一个布尔值(true / false),但该表包含一个数字类型。您需要将ValueConverter添加到绑定语句中,该语句将数值转换为布尔值。
检查How to bind a boolean to a combobox in 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;
}
}
}
<强>更新强>
这个post有一个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
}
答案 1 :(得分:0)
如果有帮助的话,试试这个:
答案 2 :(得分:0)
我尝试在绑定到datagrid之前修改我的查询,并将“case”添加到我的查询
Select ID ,DESC, CASE WHEN [STATUS] = 0 THEN 'True' WHEN [STATUS] = 1 THEN 'False' END AS [Active], ORDER [Order] from tbldesc
它对我来说很好。