WPF: Использование выражений в привязке данных для оценки истинного / ложного - PullRequest
3 голосов
/ 23 марта 2011

Я надеюсь, что это легко.

В моей модели просмотра у меня есть массив, который может быть пустым или содержать до 8 записей.У меня есть 8 кнопок на экране, и я хотел бы связать видимость кнопки с наличием записи в соответствующем массиве.Так что для кнопки 2 я покажу это, если myArray имеет более 1 записи.Я надеялся, что смогу сделать что-то вроде: -

{{Binding {myArray.Length > 1}, Converter={StaticResource BooleanToVisibilityConverter}}

Я думаю (очевидно, ошибочно!), Что myArray.Length > 1 будет принимать значение true / false, и преобразователь значений примет это и превратит в видимость.

Но это не работает: (

Возможно ли это?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 23 марта 2011

Вы можете создать собственный конвертер для этого.

Преобразователь связывается с массивом. Длина и принимает значение int в качестве параметра, определяющего, сколько элементов должно быть в массиве, чтобы он возвращал значение true. Он проверит, имеет ли привязка значение NULL или больше, чем параметр, и вернет соответствующее значение Visibility

2 голосов
/ 23 марта 2011

К сожалению, нет, это невозможно.Самое простое, что можно сделать, это добавить свойство в модель представления, например:

public bool HasItems {
    get {
        return myArray.Length > 1;
    }
}

Ваш объект должен будет реализовать INotifyPropertyChanged и вызвать событие PropertyChanged для "HasItems"когда myArray изменяется.Затем вы привязываете к HasItems вместо вашего массива.

В качестве альтернативы вы можете привязаться к myArray.Length и создать собственный IValueConverter , который преобразует 0 в false и любое положительное целоек истине.

...