在wpf中使用convertback时,checkboxcolumn无法保持其选中状态

在wpf中使用convertback时,checkboxcolumn无法保持其选中状态,wpf,user-controls,wpf-controls,wpfdatagrid,Wpf,User Controls,Wpf Controls,Wpfdatagrid,我有一个datagrid,我正在以编程方式向其中添加一个checkboxcolumn。对于这个列,我有一个需要绑定的枚举,但是由于checkboxcolumn只接受bool值,所以我使用了一个转换器。当我的目标复选框更改时,我还需要更新我的源代码。虽然当我选中复选框时,我的代码正在更新我的源代码,但一旦我失去焦点,选中的(勾号)就会消失。如何使复选框的选中保持持久性 我尝试了其他UpdateSourceTrigger值,但它不起作用 以下是checkboxcolumn的代码 Bi

我有一个datagrid,我正在以编程方式向其中添加一个checkboxcolumn。对于这个列,我有一个需要绑定的枚举,但是由于checkboxcolumn只接受bool值,所以我使用了一个转换器。当我的目标复选框更改时,我还需要更新我的源代码。虽然当我选中复选框时,我的代码正在更新我的源代码,但一旦我失去焦点,选中的(勾号)就会消失。如何使复选框的选中保持持久性

我尝试了其他
UpdateSourceTrigger
值,但它不起作用

以下是checkboxcolumn的代码

        Binding binding = new Binding("GridCRUDStatus") { Converter = new CheckBoxColConverter(), Mode = BindingMode.TwoWay, UpdateSourceTrigger = UpdateSourceTrigger.Explicit };
        DataGridCheckBoxColumn chkCol = new DataGridCheckBoxColumn() { Header = "Select", Binding = binding };
转换器类

internal class CheckBoxColConverter : IValueConverter
{
    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        GridCRUDStatus status;
        if (Enum.TryParse<GridCRUDStatus>(value.ToString(), out status))
        {
            if (status == GridCRUDStatus.Selected)
                return true;
        }

        return false;
        //throw new NotImplementedException();
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        bool chkValue;
        if (Boolean.TryParse(value.ToString(), out chkValue))
        {
            if (chkValue)
                return GridCRUDStatus.Delete;
        }
        return GridCRUDStatus.Read;

        //return null;
    }

    #endregion
}
内部类CheckBoxColConverter:IValueConverter
{
#区域转换器成员
公共对象转换(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
GridCRUDStatus状态;
if(Enum.TryParse(value.ToString(),out status))
{
如果(状态==GridCRUDStatus.Selected)
返回true;
}
返回false;
//抛出新的NotImplementedException();
}
公共对象转换回(对象值、类型targetType、对象参数、System.Globalization.CultureInfo区域性)
{
布尔值;
if(Boolean.TryParse(value.ToString(),out chkValue))
{
if(chkValue)
返回GridCRUDStatus.Delete;
}
返回GridCRUDStatus.Read;
//返回null;
}
#端区
}
我试着在网上搜索,但没有找到解决办法。请让我知道,如果你需要任何进一步的信息从我的结束

请帮忙! 提前谢谢

问候,


萨马尔

我找到了解决问题的办法。在“Convert”方法中,我检查是否选中了GridCRUDStatus,然后返回true;在“ConvertBack”方法中,我检查值是否为true,然后返回GridCRUDStatus.Delete,这是再次调用“Convert”方法并再次返回false,取消选中复选框

问候,

达瓦尔S