「実行」ボタン、結果コントロール、処理コントロールの 3 つのコントロールを持つユーザー ウィンドウがあります。私の目標は、実行が押された後に処理コントロールを表示し、実行メソッドが終了したら非表示にすることです。
ただし、処理コントロールは表示されると思ったときに表示されません...代わりに、ユーザー入力を促す別のウィンドウを作成するコールバック関数が呼び出された場合にのみ表示されます。
処理コントロールは、Processing
BoolToVis コンバーターを介してビューモデルの bool にバインドされた可視性を持っています。execute メソッドはProcessing
、開始時に true に設定され、終了時に false に設定されます。私のビューモデルが実装するProcessing
呼び出しのセッターOnPropertyChanged.
INotifyPropertyChanged.
private bool _processing;
public bool Processing
{
get
{ return _processing; }
set
{
_processing = value;
this.OnPropertyChanged("Processing");
}
}
private RelayCommand _search;
public RelayCommand Search
{
get { return _search ?? (_search = new RelayCommand(p => OnSearch(), p => CanSearch())); }
}
private void OnSearch()
{
this.Processing = true;
DoWork(delegate callBack);
this.Processing = false;
}
XAML の一部:
<BooleanToVisibilityConverter x:Key="BoolToVis" />
<me:ProcessingControl Visibility="{Binding Path=Processing, Converter={StaticResource ResourceKey=BoolToVis}}"/>