Jor*_*dan 3 wpf binding real-time
很简单,我怎样才能使绑定更具响应性。也就是说,更接近于在后台更改视图模型时更改界面。
我有一个基于计时器的进度条,它非常跳跃。而且我有一个触摸屏键盘,可以在按下键后更新字段,例如数小时(夸张)。
好的,您可以使用三个选项来使 UI 具有响应性:
(1). 使用异步绑定:
<TextBlock Text="{Binding ViewModelTextProperty, IsAsync=True}"/>
Run Code Online (Sandbox Code Playgroud)
这样, 的值ViewModelTextProperty
将被异步检索。
(2). 使用PriorityBinding
- 它类似于上一个选项,但另外它允许您在主绑定异步执行时显示一些内容:
<TextBlock>
<TextBlock.Text>
<PriorityBinding>
<Binding Path="ViewModelTextProperty" IsAsync="True"/>
<Binding Path="FastViewModelTextProperty" IsAsync="True"/>
</PriorityBinding>
</TextBlock.Text>
</TextBlock>
Run Code Online (Sandbox Code Playgroud)
在顶部指定慢速绑定,在底部指定快速绑定。也就是说,在这个例子中,FastViewModelTextProperty
将首先显示值的值,当值的值ViewModelTextProperty
准备好时,它将被显示。
(3). 最后,您可以在视图模型中使用通常的异步编程(异步调用方法、使用计时器等)。每当您准备好显示一些数据时,请使用 Dispatcher 更新 UI(设置绑定属性的值):
private void OnAsyncOperationCompleted()
{
Application.Current.Dispatcher.BeginInvoke(new Action(() => {
// Update the UI
}));
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5707 次 |
最近记录: |