2012-01-14 165 views
1

我有一個動態DataGrid,其中一列是CheckBox。我創建了一個「事務」類,其中我將數據網格的列綁定到該類中的不同屬性。我希望我的複選框綁定到一個整數屬性。它是一個整數,因爲我將查詢中的屬性填充到我的數據庫中。可能的整數是1(True)或0(False)。以下是我迄今爲止的創建數據庫:帶有複選框的DataGridTemplateColumn

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.即使當我做我行確認,列中顯示的值是正確的,在行的ItemArray中包含1或0。只是因爲某些原因,複選框沒有在UI中被檢查。有人可以幫我解決這個問題嗎?

+0

結合做您嘗試使用轉換器..... IE瀏覽器。把int值傳給bool ... 'http:// msdn.microsoft.com/en/us/library/system.windows.data.binding_properties.aspx'這個lisnk可以幫助你使用屬性'Converter'。 – Ankesh 2012-01-14 18:30:47

回答

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屬性綁定財產上述