我正在使用WPF,Caliburn.Micro和WPF Extended Toolkit在更改显示的视图时显示忙指示符。问题是繁忙的指标不会显示在切换的视图之间(这就是为什么我需要它)。执行其他操作之前的WPF更新UI
它如何工作虽然残破
- 点击菜单项
- 设置IsBusy =真
- 没有忙指示灯显示出来
- 更改视图(ChangeActiveItem(视图模型,布尔))
- 查看显示器
- 忙显示器显示
它应该如何工作
- 点击菜单项
- 设置IsBusy =真
- 忙碌指示灯显示
- 更改视图
- 查看显示器,充分呈现
- IsBusy =假
- BusyIndicator控件隐藏
ShellView(BusyIndicator控件片段)
<xctk:BusyIndicator IsBusy="{Binding IsBusy}">
<ContentControl x:Name="ActiveItem" />
</xctk:BusyIndicator>
NavigationViewModel(方法 - 点击菜单项时触发)
public void NavigationItemClicked(NavigationItem item)
{
_eventAggregator.PublishOnUIThread(new NavigationItemClicked(item.ViewModelType));
}
ShellViewModel(方法 - 渔获消息来自NavigationViewModel。NavigationItemClicked)
public void Handle(NavigationItemClicked message)
{
worker = new BackgroundWorker();
worker.DoWork += (s, e) =>
{
ChangeActiveItem(QuestDetails, true);
IsBusy = false;
};
IsBusy = true;
worker.RunWorkerAsync();
}
也试过
- 更改 'PublishOnUiThread' 到 'PublishOnBackgroundThread'
- Ayyappan萨勃拉曼尼亚建议
我想你应该尝试worker.RunWorkerAsync() ; IsBusy = true; –
那不行,不幸的是 – Jeff