2014-12-09 2 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

Смежные вопросы