我今天试过这个例子=> http://weblogs.asp.net/psteele/archive/2011/05/31/wpf-simple-busy-overlay.aspx用于在我的窗口中进行简单叠加,以显示用户即时进行操作。
但我有一点问题。在我继续执行操作的功能中,我将开头的IsBusy
属性切换为true
,最后切换为false
。但gui没有更新,我没有看到叠加。我尝试了一个额外的按钮来切换叠加层,它可以正常工作。
有人知道我为什么会遇到这个问题吗?我认为它与绑定操作的优先级有关,但我不完全清楚它。
答案 0 :(得分:1)
没有看到任何你自己的代码......
是否有可能在UI /主线程上发生切换IsBusy
属性的操作?那么,在设置属性为true然后又回到false之间,UI实际上没有机会“刷新”自己?
如果仅设置IsBusy = true
但不回复为false,是否显示了叠加层?如果是,那么这可能正在发生;您需要在不同的线程上调用该方法,以便UI可以更新。
答案 1 :(得分:1)
您的IsBusy
属性需要是依赖项属性或实现INotifyPropertyChanged
接口以使UI识别其更改。否则,UI将不知道您设置了属性,因此不会显示叠加层。
由于未知原因,这不是在您的示例的example source中完成的,因此它也不应该在那里工作。简而言之,您基本上希望在设置PropertyChanged
属性后提升IsBusy
事件。