Почему не обновляется свойство видимости, связанное с WPF? - PullRequest
0 голосов
/ 05 мая 2011

У меня есть текстовый блок в моем 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();

При первой загрузке привязка работает. Я также заметил, что текстовое поле, которое я связал со свойством, не обновляется при изменении свойства. Однако, свойство определенно обновляется, когда я изменяю текстовое поле, поскольку значение используется в качестве основы для команды, связанной с кнопкой. Когда текст изменяется, кнопка включается и отключается правильно, и когда я щелкаю ее, значение из свойства является правильным. Опять же, если я задаю значение для переменной резервного хранилища, это отображается в текстовом поле при первой загрузке окна.

Ответы [ 2 ]

1 голос
/ 05 мая 2011

Не вижу в этом ничего плохого, возможно ли, что DataContext будет изменен, так что привязка нарушится? (Вы указываете только путь, поэтому он относительно текущего DataContext)

0 голосов
/ 10 июня 2011

Решил это. Я тупой придурок:)

Я скопировал некоторый код из другого класса и по какой-то причине я добавил событие PropertyChanged в интерфейс моей модели представления, а не реализовал INotifyPropertyChanged в интерфейсе. D'Oh!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...