#binding
#привязка
Вопрос:
У меня есть экран, который я использую для отображения данных из таблицы данных. Привязки XAML работают, и они отображаются нормально. Однако рядом с одним полем данных у меня есть кнопка, которую я хочу использовать для других целей. Моя проблема в том, что я не хочу, чтобы кнопка показывала, является ли поле данных нулевым или пустым. Ниже приведены фрагменты кода XAML и объекта данных, которые я использую.
XAML для кнопки:
Я начинаю со скрытой кнопки.
Вот XAML, который охватывает стиль «DetailButton»:
Вот код объекта данных, который устанавливает PplOlderFlag:
_bOlderFlag = (_sPplOlderInfo.Length > 0);
public bool PplOlderFlag
{
get
{
return _bOlderFlag;
}
}
Как я уже сказал, привязка (PplOlderInfo) работает и отображается нормально. Но кнопка все еще там, когда PplOlderInfo равен null или пуст.
Я могу достаточно легко настроить видимость кнопки в коде позади, но только кажется, что было бы действительно здорово, если бы я мог заставить ее работать в XAML.
Есть идеи относительно того, что я упускаю или что я делаю неправильно?
Комментарии:
1. По какой-то причине XAML не отображался. Как мне заставить XAML отображаться в описании моего вопроса?
Ответ №1:
Не должен ли тип PplOlderFlag иметь тип System.Windows.Видимость?
В моем тестовом приложении, если я создам эквивалентное свойство типа System.Windows.Видимость, я могу сделать кнопку видимой или невидимой по мере необходимости.
Редактировать:
Из вашего примера кода я бы реализовал как:
public System.Windows.Visibility PplOlderFlag
{
get
{
return _bOlderFlag ? System.Windows.Visibility.Visible :
System.Windows.Visibility.Hidden;
}
}
Комментарии:
1. Вот XAML для кнопки: ‘code’ <Сетка кнопок. Столбец = «2» Сетка.Строка = «8» Поле = «5» x: Имя =»btnOlderDetail» Видимость = «Скрытый» Стиль =»{StaticResource DetailButton}»> <Кнопка. Содержимое> <Label FontSize=»20″ Содержимое = «Detail» Передний план = «White»/> </Кнопка. Содержимое> </Button>
2. Видимость кнопки в вашем примере не привязана к данным. Вам нужно что-то вроде: Видимость =»{Путь привязки =PplOlderFlag}». Также вы убедились, что класс, содержащий PplOlderFlag, реализует System. ComponentModel. INotifyPropertyChanged? Вы установили соответствующий DataContext?