0

我今天尝试了这个例子=> http://weblogs.asp.net/psteele/archive/2011/05/31/wpf-simple-busy-overlay.aspx在我的窗口中进行简单的覆盖,以显示用户即时进行他的操作. 但我有一个小问题。在我执行操作的函数中,我IsBusy将开头true和结尾的属性切换为false. 但是 gui 没有更新,我没有看到覆盖。我尝试了一个额外的按钮来切换覆盖,它可以工作。

有人知道我为什么会遇到这个问题吗?我认为这与绑定操作的优先级有关,但我并不确切知道。

4

2 回答 2

1

没有看到任何你自己的代码......

切换IsBusy属性的操作是否可能发生在 UI/主线程上?那么,在您将属性设置为 true 然后再设置为 false 之间,用户界面实际上没有机会“刷新”自身?

如果您设置IsBusy = true但不返回 false,是否显示叠加层?如果是,那么这可能就是正在发生的事情;您需要在不同的线程上调用该方法,以便 UI 可以更新。

于 2013-10-15T09:23:15.427 回答
1

您的IsBusy属性需要是依赖属性或实现INotifyPropertyChanged接口以使 UI 识别其更改。否则 UI 将不知道您设置了该属性,因此不会显示覆盖。

由于未知原因,您的示例的示例源中没有这样做,因此它也不应该在那里工作。简而言之,您基本上是想在设置属性PropertyChanged后引发事件。IsBusy

于 2013-10-15T09:27:13.610 回答