0

プログラムでチェックボックス列を追加するデータグリッドがあります。この列には、バインドする必要のある列挙型がありますが、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
}

ネットで検索してみましたが、解決策が見つかりませんでした。私の側からさらに情報が必要な場合はお知らせください。

助けてください!前もって感謝します。

よろしく、

サマール

4

1 に答える 1

0

私は私の問題の解決策を得ました。「Convert」メソッドでGridCRUDStatusが選択されているかどうかを確認してからtrueを返し、「ConvertBack」メソッドで値がtrueであるかどうかを確認してからGridCRUDStatus.Deleteを返しました。これは「Convert」メソッドを再度呼び出し、再びfalseを返しました。チェックボックスのチェックを外します。

よろしく、

ダヴァル S

于 2012-09-11T06:36:33.260 に答える