首页 文章

在数据网格中从数据库绑定Checkbox的IsChecked属性

提问于
浏览
0

当我的数据网格从数据库加载时,我试图绑定一个复选框的属性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 回答

  • 0

    这种绑定有很多错误:

    • 您正在将源设置为转换器 . 转换器进入"Converter"属性 .

    • 您正在设置转换器对象上的函数的路径 . 路径应该是位字段属性 .

    • 您正在使用ConverterParameter,但没有设置Converter属性,这不会做一件坏事 .

    • 你在一个复选框上有一个PropertyChanged的更新触发器,它永远没有/失去焦点,因此当用户点击时它总是会改变!它赢得了't hurt you, but you shouldn' t需要它 .

    话虽如此,你的绑定应该只是:

    IsChecked="{Binding Path=ItemMarcado}"
    

    您可以使用转换器检查“MARCADO”字符串,但是使用绑定它总是会有该字符串,所以额外的复杂性是不值得的 .

    如果我能澄清任何事情或以任何其他方式提供帮助,请告诉我!

相关问题