checkboxcolumn не может сохранить свой проверенный статус, когда в wpf используется convertback

У меня есть сетка данных, к которой я программно добавляю столбец флажка. К этому столбцу у меня есть перечисление, которое нужно привязать, но поскольку столбец флажка будет принимать только логическое значение, я использую конвертер. Мне также нужно обновить свой источник, когда мой целевой флажок изменится. Хотя мой код обновляет мой источник, когда я устанавливаю флажок, но как только я теряю фокус, флажок (галочка) исчезает. Как я могу сделать проверку флажка постоянной?

Я пробовал другие значения UpdateSourceTrigger, но они не работают.

Ниже приведен код столбца флажка.

        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
}

Я пробовал искать в сети, но не смог найти решение. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация с моей стороны.

Пожалуйста помоги! Заранее спасибо.

С уважением,

Самар


person samar    schedule 10.09.2012    source источник


Ответы (1)


Я получил решение своей проблемы. В методе «Конвертировать» я проверял, выбран ли GridCRUDStatus, затем возвращал true, а в методе «ConvertBack» я проверял, истинно ли значение, затем возвращал GridCRUDStatus.Delete, это снова вызывало метод «Преобразовать» и снова возвращало false, что было снятие флажка.

С уважением,

Дхавал С

person samar    schedule 11.09.2012