当我的数据网格从数据库加载时,我试图绑定一个复选框的属性IsChecked . 在我的数据库中,我有这个表包含一个接收位字段的列 .
因此,当数据网格被加载时,我必须验证我的列字段是真还是假 . 如果是,我想将复选框的IsChecked属性设置为true .
我尝试了下面的代码,但它没有用 .
这是我的XAML代码:
<Classes:SetIsChecked x:Key="itemChecked" />
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="ItemMarcado" Checked="ItemMarcado_Checked"
IsChecked="{Binding Source={StaticResource itemChecked}, Path=Convert Mode=TwoWay,
ConverterParameter=MARCADO, UpdateSourceTrigger=PropertyChanged }">
</CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
我的C#代码:
class SetIsChecked:IValueConverter {public static bool IsChecked {get;组; }
公共对象转换(对象值,类型targetType,对象参数,CultureInfo文化)
{
项目项目=(项目)值;
string tipoIcon =(string)参数;
尝试
{
if((item.ItemMarcado == true)&&(tipoIcon ==“MARCADO”))
{
IsChecked = true;
返回IsChecked;
}
IsChecked = false;
返回IsChecked;
}
grab
{
IsChecked = false;
返回IsChecked;
}
}
公共对象ConvertBack(对象值,类型targetType,对象参数,CultureInfo文化)
{
throw new NotImplementedException();
}
}
1 回答
这种绑定有很多错误:
您正在将源设置为转换器 . 转换器进入"Converter"属性 .
您正在设置转换器对象上的函数的路径 . 路径应该是位字段属性 .
您正在使用ConverterParameter,但没有设置Converter属性,这不会做一件坏事 .
你在一个复选框上有一个PropertyChanged的更新触发器,它永远没有/失去焦点,因此当用户点击时它总是会改变!它赢得了't hurt you, but you shouldn' t需要它 .
话虽如此,你的绑定应该只是:
您可以使用转换器检查“MARCADO”字符串,但是使用绑定它总是会有该字符串,所以额外的复杂性是不值得的 .
如果我能澄清任何事情或以任何其他方式提供帮助,请告诉我!