2014-12-03 27 views
0

它是一個簡單的任務,我仍然還沒有找到它的解決方案。WPF數據網格設置複選框列

我有OBJETS的列表中的每個保持2個屬性,一個字符串和[]一個字節。我將該列表設置爲我的Datatgid的項目源。我創建了一個帶有對字符串屬性的綁定的文本列。現在我想添加一個Checkboxcolumn,如果byte []屬性爲NULL,則不應該檢查它,否則應該檢查。

我發現這沒有例子,到目前爲止,我猜這也許可以用datatrigger要做,但我甚至不能寫下來的財產以後沒有compliler抱怨。

+0

您是否嘗試過使用值轉換器?你可以在byte []和bool之間進行轉換,這裏有一個鏈接:http://www.wpf-tutorial.com/data-binding/value-conversion-with-ivalueconverter/ – rauland 2014-12-03 13:43:34

回答

1

您可以使用數據綁定引擎和財產直接綁定到複選框。當然,該複選框被期待Nullable<bool>,所以你必須使用一個IValueConverterbyte[]陣列轉換成bool?

[ValueConversion(typeof(object), typeof(bool?)] 
public class IsNullConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return value == null; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotSupportedException(); 
    } 
} 


<CheckBox IsChecked="{Binding Path=MyByteArray, 
           Converter={StaticResource MyConverter}, 
           Mode=OneWay}" 
      IsEnabled="False" /> 

注意,我標誌着結合模式爲單向和複選框作爲禁用(即只讀),因爲在場景中,允許用戶更改複選框的狀態是沒有意義的。

+0

我不能在我的StaticResoure中設置XAML。我創建了一個名爲myconverter的IsNullConverter實例,並嘗試這樣做:VisualStudio抱怨說找不到它。 – Lorgarn 2014-12-03 14:04:09

+0

@Lorgarn:請參閱如何創建靜態資源這個MSDN鏈接:http://msdn.microsoft.com/en-us/library/ms750613(v=vs.110).aspx – 2014-12-03 14:58:37

+0

它不是那樣工作。我花了幾乎整晚的時間才弄明白。首先,我必須創建一個lokal命名空間,之後我可以使用它來從轉換器類創建資源,而不用在代碼後面創建實例。然後我可以像上面的代碼一樣使用資源中的Key值作爲StaticResource。我真的讚賞你的幫助,我會將其標記爲已回答,但我不能在此評論中發佈代碼,如果XAML完整,你的示例對其他人更有幫助。 – Lorgarn 2014-12-04 08:13:41