wpf - 数据最终不是一步一步来查看的;如何使用 Dispatcher 在 UI 线程和渲染线程之间切换?
问题描述
我正在尝试使用使用 WPF 和 MVVM 的文本框构建状态栏,状态即将到来,但最终我希望它逐步到来。
我试过这段代码。我也尝试提供Thread.Sleep(200);
代码,但没有看到重大变化。在 viewModel 中为 Status 创建一个属性
private string myStatus;
public string MyStatus
{
get { return myStatus; }
set
{
myStatus = value;
NotifyPropertyChanged("MyStatus");
}
}
并初始化它
public void LoadData()
{
MyStatus = "";
for(int i=0;i<list.Count();i++)
{
switch(list.ElementAt(i))
{
case -1:
MyStatus = "Negative value\n";
//Thread.Sleep(200);
break;
case 0:
MyStatus = "value is zero\n";
//Thread.Sleep(200);break;
case 1:
MyStatus = "Positive value\n";
//Thread.Sleep(200);
break;
}
}
}
并在视图中将其与属性绑定
<TextBox IsReadOnly="True" VerticalScrollBarVisibility="Visible" Name="tbMultiline" Text="{Binding MyStatus}" />
文本框正在填充,但最后我希望它在每次循环迭代期间发生。UI 会冻结一段时间,并在后端代码完成后恢复。我搜索了一下,我了解了调度程序,谁能告诉我如何在 MVVM 模式中使用调度程序在 UI 线程和渲染线程之间切换。
解决方案
我希望我能准确理解您的问题。您必须更改您的 xaml 端代码;
<TextBox IsReadOnly="True" VerticalScrollBarVisibility="Visible" Name="tbMultiline" Text="{Binding MyStatus, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
推荐阅读
- signal-processing - 复数乘法指令Hexagon DSP
- java - 带有java模块的springframework ldap核心问题
- asp.net - 无法加载模板:(HTTP 状态:未定义未定义)在 ASP.Net 中的捆绑缩小后
- c++ - 结构中的 C/C++ 指针
- c - 我的代码中有多个错误,我不明白
- dafny - 如何在 Dafny 中验证前置/后置条件
- rust - nightly-x86_64-pc-windows-gnu 错误读取 rustc 版本
- windows - 如何杀死进程在Windows中每隔一秒重复一次?
- git - git checkout HEAD -- 之间有区别吗?和 git reset --hard HEAD?
- python - 合并两个排序列表返回运行时错误