我想禁用一個按鈕,而其命令正在處理。WPF。 RelayCommand - CanExecute false,而執行正在處理
public ICommand Search { get; set; }
private void InitilizeSearchCommand()
{
Search = new RelayCommand<string>(
param => DoSearch(param),
param => !_isSearchInProgress);
}
如何修改_isSearchInProgress?我不能這樣做,裏面的「執行」的代表,因爲它從一個地方(RelayCommand對象)執行,其中場是無法訪問的(如果我的理解是真實的):
Search = new RelayCommand<string>(
param =>
{
_isSearchInProgress = true;
DoSearch(param);
_isSearchInProgress = false;
},
param => !_isSearchInProgress);
預先感謝任何幫助。
喬爾,你能告訴更多關於這個嗎?如果我爲DoSearch()使用單獨的線程並在內部包含_isSearchInProgres方法,那麼它工作良好,但只是第一次。稍後我應該點擊UI來更新它。 – 2012-02-01 14:44:37
您是否對包含_isSearchInProgress的類使用INotifyPropertyChanged,因此,是_isSearchInProgress的一個公共屬性,並且當它發生更改時觸發PropertyChanged? – 2012-02-01 16:47:38
_isSearchInProgress是一個私人領域,它不綁定到UI,這就是爲什麼INotifyPropertyChanged不會幫助我。這是一個很大的謎題,它爲什麼不能在主線程中工作,並且部分在單獨工作。 – 2012-02-02 09:09:49