2014-12-09 50 views
0

我有DataGrid和對象列表。 DataGrid僅用於可視化。現在我想更改綁定到DataGridCheckBoxColumn的行爲。我想三個州這樣的:WPF更改DataGridCheckBoxColumn的行爲null false

null = unchecked 
false = half checked 
true = checked 

現在它看起來像這樣:

null = half checked 
false = unchecked 
true = checked 

我可以改變的邏輯裏面的代碼和治療無效的虛假和錯誤的爲空,但對我來說更好的解決方案只是不同的展示。 綁定看起來像

<DataGridCheckBoxColumn Header="SomeColumn" Binding="{Binding SomeProperty}" x:Name="SomeName" Visibility="Visible"/> 

回答

0

你可以簡單地用一個轉換器,像這樣:

public class CheckBoxConverter:IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if (value == null) 
      return false; 
     if ((bool) value) 
      return true; 
     return null; //value is false 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     //Add the convert back if needed 
     throw new NotImplementedException(); 
    } 
} 

和XAML中會:

<DataGridCheckBoxColumn Header="SomeColumn" Binding="{Binding SomeProperty,Converter={StaticResource CheckBoxConverter}}" x:Name="SomeName" Visibility="Visible"/> 

,不要忘記添加轉換器到您的窗口(或頁面)的資源:

<Window.Resources> 
    <converters:CheckBoxConverter x:Key="CheckBoxConverter"/> 
</Window.Resources> 
+0

謝謝,這項工作完全按照我的意願 – Marcin1199 2014-12-09 15:13:12

相關問題