2014-12-03 3 views
0

Его простая задача по-прежнему я не нашел для нее решения.Набор WPat datagrid Checkbox Column по нулевому значению

У меня есть список объектов, каждый из которых имеет 2 свойства, строку и байт []. Я устанавливаю список как источник товаров для своего Datatgid. Я создал textcolumn с привязкой к свойству string. Теперь я хочу добавить Checkboxcolumn, который НЕ должен проверяться, если свойство byte [] равно NULL, и в противном случае должно быть checkt.

Я не нашел примера для этого до сих пор, я догадался, что это возможно сделать с помощью datatrigger, но я не могу даже написать что-то вниз без жалобщиков-компиляторов.

+0

Вы пробовали использовать конвертер значений? Вы сможете конвертировать между байтами [] и bool, вот ссылка: http://www.wpf-tutorial.com/data-binding/value-conversion-with-ivalueconverter/ – rauland

ответ

1

Вы можете использовать механизм привязки данных и привязать свойство непосредственно к флажку. Конечно, флажок ожидает 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" /> 

Примечания, я отметил связывающий режим как OneWay и флажок как отключено (т.е. только для чтения), потому что со сценарием не имеет смысла разрешать пользователю вносить изменения в состояние флажка.

+0

Я не могу установить StaticResoure в моем XAML. Я создаю экземпляр IsNullConverter, называемый myconverter, и попробуйте это: VisualStudio жалуется, что не может найти его. – Lorgarn

+0

@Lorgarn: см. Ссылку msdn о том, как создать статический ресурс: http://msdn.microsoft.com/en-us/library/ms750613(v=vs.110).aspx –

+0

Это не работает. Мне потребовалась почти вся ночь, чтобы понять это. Во-первых, мне пришлось создать локальное пространство имен, которое я мог бы использовать впоследствии для создания ресурса из класса конвертера без создания экземпляра его в коде позади. Затем я могу использовать значение Key в ресурсе как StaticResource, как в приведенном выше коде. Я действительно предлагаю вам помощь, и я буду отмечать это как ответ, но я не могу опубликовать код в этом комментарии, и вы, например, будете намного больше помогать другим, если XAML будет завершен. – Lorgarn