Asynchronous WPF绑定isAsync获取状态
我使用Binding IsAsync属性来保持UI响应,并从属性的get访问器加载数据,这在使用MVVM时被证明是一个很好的选择。这种方法非常好,异步操作不需要任何手动代码。很少有我的数据加载需要几秒钟的情况,在此期间很难区分“无数据”和“数据加载”。是否有一个属性可以检测绑定“IsBusy”或“Loading”的状态,以便显示加载操作未完成的消息 非常感谢您的帮助。 在等待值到达时,绑定报告FallbackValue(如果有)或绑定目标属性的默认值Asynchronous WPF绑定isAsync获取状态,asynchronous,binding,Asynchronous,Binding,我使用Binding IsAsync属性来保持UI响应,并从属性的get访问器加载数据,这在使用MVVM时被证明是一个很好的选择。这种方法非常好,异步操作不需要任何手动代码。很少有我的数据加载需要几秒钟的情况,在此期间很难区分“无数据”和“数据加载”。是否有一个属性可以检测绑定“IsBusy”或“Loading”的状态,以便显示加载操作未完成的消息 非常感谢您的帮助。 在等待值到达时,绑定报告FallbackValue(如果有)或绑定目标属性的默认值 您可以使用此值在加载绑定时向用户显示消息。我
您可以使用此值在加载绑定时向用户显示消息。我知道,这是一个旧线程。但是如果有人还感兴趣 您可以使用PriorityBinding,本文中有一个解释得很好的示例: 其思想是规定一个PriorityBinding,它反过来定义了几个常规绑定,如下所示:
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock.Text>
<PriorityBinding>
<Binding ElementName="MainWindow" Path="Slow" IsAsync="True" />
<Binding ElementName="MainWindow" Path="Fast" />
</PriorityBinding>
</TextBlock.Text>
</TextBlock>
绑定的顺序决定优先级,优先级最高的优先。在这种情况下,快速绑定(最低优先级)将立即填充textblock,因为您可能会将其绑定到字符串属性“Loading…”或“Sorting…”,这取决于当时发生的情况,并且没有延迟
但稍后,当慢速异步绑定的属性返回值时,它的优先级更高意味着它将接管,因为它在列表中的较早位置,其结果将被绑定,显示实际结果
如果需要填充进度弹出窗口,您可以在ViewModel的绑定属性getter中实现它,尽管我没有尝试过类似的操作。谢谢您。。。正在尝试通过viewmodel和/或xaml将其绑定到“等待”弹出窗口。。通过WPF-MVVM应用程序模型提供极大程度的简单性。然而。。看起来没有简单的方法来实现这一点。@Bhuvan:您还可以有一个公开VM当前状态的公共枚举属性。。。已初始化,正在加载,准备就绪。然后你可以在UI中绑定到它,并在这些状态下向用户显示你想要的任何东西。。。