在我的几个用户控件中,我使用了更改光标
this.Cursor = Cursors.Wait;
Run Code Online (Sandbox Code Playgroud)
当我点击某些东西时.
现在我想在按钮点击的WPF页面上做同样的事情.当我将鼠标悬停在我的按钮上时,光标会变为一只手,但是当我单击它时,它不会更改为等待光标.我想知道这是否与它是一个按钮,或者因为这是一个页面而不是用户控件这一事实有关?这看似奇怪的行为.
我有一个使用MVVM模式的WPF应用程序,当它忙于做一些用户必须等待的事情时,有时必须显示一个等待标记.感谢本页面上的答案组合:在应用程序繁忙时显示沙漏,我有一个几乎可以工作的解决方案(尽管它在精神上并不是真正的MVVM).每当我在视图模型中做一些耗时的事情时,我会这样做:
using (UiServices.ShowWaitCursor())
{
.. do time-consuming logic
this.SomeData = somedata;
}
Run Code Online (Sandbox Code Playgroud)
(ShowWaitCursor()返回一个显示waitcursor的IDisposable,直到它被处理掉.)我的例子中的最后一行是我设置一些属性的地方.此属性绑定在我的XAML中,例如:
<ItemsControl ItemsSource="{Binding SomeData}" />
Run Code Online (Sandbox Code Playgroud)
但是,由于这可能是一个很长的对象列表,有时候会有复杂的数据模板等,实际的绑定和渲染有时需要相当长的时间.由于此绑定发生在using语句之外,因此waitcursor将在用户实际等待结束之前消失.
所以我的问题是如何在WPF MVVM应用程序中进行等待,将数据绑定考虑在内?