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

时间:2012-09-10 15:16:22

标签: wpf user-controls wpf-controls wpfdatagrid

我有一个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
}

我尝试在网上搜索但无法找到解决方案。如果您需要我的最终信息,请通知我。

请帮忙! 提前谢谢。

此致

萨马

1 个答案:

答案 0 :(得分:0)

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

此致

Dhaval S