它是一個簡單的任務,我仍然還沒有找到它的解決方案。WPF數據網格設置複選框列
我有OBJETS的列表中的每個保持2個屬性,一個字符串和[]一個字節。我將該列表設置爲我的Datatgid的項目源。我創建了一個帶有對字符串屬性的綁定的文本列。現在我想添加一個Checkboxcolumn,如果byte []屬性爲NULL,則不應該檢查它,否則應該檢查。
我發現這沒有例子,到目前爲止,我猜這也許可以用datatrigger要做,但我甚至不能寫下來的財產以後沒有compliler抱怨。
它是一個簡單的任務,我仍然還沒有找到它的解決方案。WPF數據網格設置複選框列
我有OBJETS的列表中的每個保持2個屬性,一個字符串和[]一個字節。我將該列表設置爲我的Datatgid的項目源。我創建了一個帶有對字符串屬性的綁定的文本列。現在我想添加一個Checkboxcolumn,如果byte []屬性爲NULL,則不應該檢查它,否則應該檢查。
我發現這沒有例子,到目前爲止,我猜這也許可以用datatrigger要做,但我甚至不能寫下來的財產以後沒有compliler抱怨。
您可以使用數據綁定引擎和財產直接綁定到複選框。當然,該複選框被期待Nullable<bool>
,所以你必須使用一個IValueConverter
到byte[]
陣列轉換成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" />
注意,我標誌着結合模式爲單向和複選框作爲禁用(即只讀),因爲在場景中,允許用戶更改複選框的狀態是沒有意義的。
我不能在我的StaticResoure中設置XAML。我創建了一個名爲myconverter的IsNullConverter實例,並嘗試這樣做:VisualStudio抱怨說找不到它。 – Lorgarn 2014-12-03 14:04:09
@Lorgarn:請參閱如何創建靜態資源這個MSDN鏈接:http://msdn.microsoft.com/en-us/library/ms750613(v=vs.110).aspx – 2014-12-03 14:58:37
它不是那樣工作。我花了幾乎整晚的時間才弄明白。首先,我必須創建一個lokal命名空間,之後我可以使用它來從轉換器類創建資源,而不用在代碼後面創建實例。然後我可以像上面的代碼一樣使用資源中的Key值作爲StaticResource。我真的讚賞你的幫助,我會將其標記爲已回答,但我不能在此評論中發佈代碼,如果XAML完整,你的示例對其他人更有幫助。 – Lorgarn 2014-12-04 08:13:41
您是否嘗試過使用值轉換器?你可以在byte []和bool之間進行轉換,這裏有一個鏈接:http://www.wpf-tutorial.com/data-binding/value-conversion-with-ivalueconverter/ – rauland 2014-12-03 13:43:34