У меня есть текстовый блок в моем XAML, где видимость связана со свойством в моей модели представления. Когда окно загружается впервые, значение из модели представления корректно определяет видимость (я попытался вручную переопределить значение переменной резервного хранилища, и оно отлично работает, скрывая элемент управления по мере необходимости). Однако при изменении значения свойства видимость не меняется.
Вот XAML для элемента управления:
<TextBlock Text="Click the button" Style="{StaticResource Message}" Visibility="{Binding NoResultsMessageVisibility}" />
Свойство «NoResultsMessageVisibility», к которому я привязываю, таково:
public Visibility NoResultsMessageVisibility
{
get { return _noResultsMessageVisibility; }
set
{
_noResultsMessageVisibility = value;
NotifyPropertyChanged("NoResultsMessageVisibility");
}
}
NotifyPropertyChange вызывает событие PropertyChanged для указанного имени с использованием стандартного INotifyPropertyChanged.
Может кто-нибудь заметить мою ошибку?
EDIT
В ответ на комментарии / ответ пока.
Программа очень проста, поэтому нет параллелизма / многопоточности.
DataContext устанавливается только один раз при загрузке окна, используя:
new MainWindow { DataContext = new MainWindowViewModel() }.ShowDialog();
При первой загрузке привязка работает. Я также заметил, что текстовое поле, которое я связал со свойством, не обновляется при изменении свойства. Однако, свойство определенно обновляется, когда я изменяю текстовое поле, поскольку значение используется в качестве основы для команды, связанной с кнопкой. Когда текст изменяется, кнопка включается и отключается правильно, и когда я щелкаю ее, значение из свойства является правильным. Опять же, если я задаю значение для переменной резервного хранилища, это отображается в текстовом поле при первой загрузке окна.