我有基于 MVVM 模式的 wpf 应用程序。我有烦人的问题,我不知道该如何解决。
我的应用程序是向导应用程序,当用户按下“下一步”时,我正在另一个线程(后台工作人员)中开始一些进展,当 bgWorker 启动时,他设置CanMoveNext = false
绑定到 Next 按钮 isEnabled 属性,当 bgworker 完成时,他设置回 CanMoveNext =真的;
当CanMoveNext
获取IsEnabled = false
UI 时立即显示它,但在 isEnabled 属性设置回 true 后,UI 会在鼠标单击或键盘按键后刷新。
在我m changing the property I
使用OnPropertyChanged()
方法之后,我什至尝试使用 CommandManager.InvalidateRequerySuggested();
,但没有鼠标点击它仍然无法刷新。
我怎么解决这个问题?
这是我的代码:
public override bool CanMoveNext
{
get
{
return canMoveNext;
}
set
{
canMoveNext = value;
OnPropertyChanged("CanMoveNext");
}
}
public void StartProgress()
{
CanMoveNext = false;
InitBGworkers(out bgStartPersonalWorker);
bgStartPersonalWorker.RunWorkerAsync();
}
void bgStartPersonalWorker_DoWork(object sender, DoWorkEventArgs e)
{
DoStuff();
}
void bgStartPersonalWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
CanMoveNext = true;
//Even CommandManager.InvalidateRequerySuggested(); doen`t help
}
//来自 XAML 的代码
<Button Content="{Binding ButtonNextCaption}" IsEnabled="{Binding CanMoveNext, UpdateSourceTrigger=PropertyChanged}" Command="{Binding Path=NavigateNextCommand}" Margin="5,0,5,0" Width="100" Height="40" FontSize="14" FontWeight="Bold"/>
谢谢