1

列の 1 つが CheckBox である動的 DataGrid があります。データグリッドの列をそのクラスのさまざまなプロパティにバインドする「Transactions」クラスを作成しました。チェックボックスを整数のプロパティにバインドしたい。クエリからデータベースにプロパティを入力しているため、これは整数です。可能な整数は、1 (True) または 0 (False) です。データベースを作成するためにこれまでに持っているものは次のとおりです。

    private DataGridTemplateColumn GetVoidColumn()
    {
        DataGridTemplateColumn voidColumn = new DataGridTemplateColumn();
        voidColumn.Header = "Void";

        Binding bind = new Binding("Visible");
        bind.Mode = BindingMode.TwoWay;

        // Create the CheckBox
        FrameworkElementFactory voidFactory = new FrameworkElementFactory(typeof(CheckBox));
        voidFactory.SetValue(CheckBox.IsCheckedProperty, bind);
        DataTemplate voidTemplate = new DataTemplate();
        voidTemplate.VisualTree = voidFactory;

        voidColumn.CellTemplate = voidTemplate;

        return voidColumn;
    }

実際の Datagrid では、CheckBox が表示されますが、プロパティが 1 を示している場合でも、常にチェックされていません。行の検証を行っても、列に表示される値は正しく、1 または 0 が含まれています行の ItemArray。何らかの理由でチェックボックスがUIでチェックされていないだけです。誰かがこれで私を助けることができますか?

4

1 に答える 1

0

Convertersプロパティ値 0 と 1 を false と true に変換するために使用できます。IsChecked プロパティが値 0 と 1 を認識していない可能性があります。IValueConverterそのコンバーターを実装して適用し、int を bool に変換するクラスを作成します。

別のオプションは、クラスでこれのプロパティを作成することです

public bool IsChecked
{
   get
   {
       if(IntProperty == 0)
          return false;
       return true;
   }
   set
   {
       if(value)
          IntProperty = 1;
       else 
          IntProperty = 0;
   }
}

int プロパティでバインドする代わりに、上記のプロパティでバインドするようになりました

于 2012-01-14T18:46:24.680 に答える