私のビューには、以下の2つのボタンが含まれます。私のVMでは、WPF Commandパターンによってキャンセル/送信]ボタンを有効にし
<StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Button Content="Start" Width="100" Height="30" Margin="20" Command="{Binding OkCommand}"/>
<Button Content="Cancel" Width="100" Height="30" Margin="20" Command="{Binding CancelCommand}"/>
</StackPanel>
を - 私は、コマンドの傍受を設定しています。
class StockViewModel
{
#region Properties
public ICommand OkCommand { get; set; }
public ICommand CancelCommand { get; set; }
#endregion
#region Constructor
public StockViewModel()
{
OkCommand = new myCommand(myOkExecute, myCanOkExecute);
CancelCommand = new myCommand(myCancelExecute, myCanCancelExecute);
}
#endregion
private void myOkExecute (object parameter)
{
......
}
private bool myCanOkExecute(object parameter)
{
........
}
private bool myCanCancelExecute(object parameter)
{
.......
}
private myCanCancelExecute(object parameter)
{
............
}
#endregion
public class myCommand : ICommand
{
}
質問:私は、ボタンの動作はOPPになりたい - 1がクリックされたときに意味(送信)他が無効とその逆によって必要があります。最初にフォームがロードされたとき - Submit btnはデフォルトで有効になっています。
私は複数の方法を試しましたが、これはうまくいかないようです。
ここではプリミティブ/イベントアグリゲーターの概念を使用しないプレーンなMVVMコードを作成しています。
このようなコマンドビヘイビアが一般的にどのように処理されるのか(コードスムージングで)お勧めします。
なぜコマンドがICommand.CanExecuteChangedイベントを発生させることができないのですか? – Rich
更新されたコードを見てください - それはすべての出来事を持っています - そこにbtnStateにアクセスしてそれらをtrueまたはfalseに設定する方法を理解できないようです – Patrick