質問

列の1つがチェックボックスである動的なデータグリッドがあります。 Datagridの列をそのクラスのさまざまなプロパティにバインドする「トランザクション」クラスを作成しました。チェックボックスを整数であるプロパティにバインドしたいと思います。クエリからデータベースにプロパティを埋め込んでいるため、整数です。考えられる整数は、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には、チェックボックスが表示されますが、プロパティが1を表示している場合でも、それらは常にチェックされていません。行の検証を行ったとしても、列に表示される値は正しいです。行のアイテムアレイ。何らかの理由でチェックボックスがUIでチェックされていないということです。誰かがこれで私を助けることができますか?

役に立ちましたか?

解決

使用できます Converters プロパティ値0と1をfalse and trueに変換します。おそらくiScheckedプロパティは価値0と1を理解していません。 IValueConverter そのコンバーターを適用して、INTをブールに変換します。

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

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

現在、上記のプロパティでバインドするINTプロパティでバインドする代わりに

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top