我有基於MVVM模式的wpf應用程序。 我有惱人的問題,我無法確定如何解決它。button isEnabled = true沒有鼠標點擊無法工作WPF MVVM
我的應用程序是嚮導應用程序,當用戶按下「下一步」時,我開始在另一個線程(backgroundworker)中取得一些進展,當bgWorker開始時,他設置CanMoveNext = false
綁定到Next按鈕的isEnabled屬性,當bgworker完成他設置了CanMoveNext = true;
當CanMoveNext
獲得IsEnabled = false
UI將立即顯示,但在isEnabled propery設置回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"/>
感謝
只是胡亂出手,但你有沒有嘗試從UI線程設置屬性?例如使用「Dispatcher.Invoke」設置CanMoveNext? – Blachshma
是的,沒有成功 – Ofir
好吧我想通了 - 你的評論幫助我罰款解決方案 – Ofir