2012-01-14 23 views
1

私は、列の1つがCheckBoxである動的なDataGridを持っています。私は "トランザクション"クラスを作成しました。このクラスでは、データグリッドの列をそのクラスのさまざまなプロパティにバインドします。私は自分のチェックボックスをプロパティである整数にバインドしたい。これは、データベースからクエリのプロパティを取得しているため、整数です。可能な整数は1(真)または0(偽)です。ここで私は自分のデータベースを作成するために、これまで持っているものです。DataGridTemplateColumn with CheckBox

私の実際のデータグリッドで
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; 
    } 

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

+0

上でプロパティをint型のプロパティのバインドと結合することであろう。あなたはint値をboolに変換します... 'http:// msdn.microsoft.com/ja-us/library/system.windows.data.binding_properties.aspx'このlisnkは、' Converter'プロパティで役に立ちます。 – Ankesh

答えて

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; 
    } 
} 

あなたのクラスで、このためのプロパティを作成し、今の代わりに、あなたが.....すなわちコンバータを使用してみました