2013-10-15 2 views
0

Я попробовал сегодня этот пример =>http://weblogs.asp.net/psteele/archive/2011/05/31/wpf-simple-busy-overlay.aspx для простого наложения в моем окне, чтобы показать пользователю, что он выполняет свое действие. Но у меня есть небольшая проблема. В моей функции для продолжения действия я переключу свойство IsBusy в начале на true и в конце до false. Но gui не обновляется, и я не вижу оверлей. Я попробовал дополнительную кнопку для переключения наложения, и он работает.Пример наложения WPF, привязка не работает правильно

Кто-нибудь знает, почему у меня возникла эта проблема? Я думаю, что это имеет какое-то отношение к приоритету операций привязки, но я точно этого не знаю.

ответ

1

не видя свой код ...

Возможно ли, что операция переключения IsBusy свойства происходит на UI/Main нити? Итак, пользовательский интерфейс фактически не дает возможности «обновиться» между вами, установив свойство true, а затем обратно на false?

Если вы только IsBusy = true, но не вернулись к false, накладывается ли наложение? Если да, то это, вероятно, то, что происходит; вам нужно вызвать метод в другом потоке, чтобы пользовательский интерфейс мог обновлять.

1

Свойство IsBusy должно быть либо зависимым, либо реализовать интерфейс INotifyPropertyChanged, чтобы пользовательский интерфейс распознал его изменения. В противном случае пользовательский интерфейс не будет знать, что вы установили свойство, и как таковой не будет отображаться оверлей.

По неизвестным причинам это не делается в example source вашего примера, поэтому он тоже не должен работать. Короче говоря, вы в основном хотите поднять событие PropertyChanged после установки свойства IsBusy.

Смежные вопросы