4

ユーザーが入力したデータに基づいて、WPF(PRISM)ユーザーコントロールのボタンを有効または無効にしようとしています。

In the constructor I do
SubmitCommand = new DelegateCommand<object>(OnSubmit, CanSubmit);


public ICommand SubmitCommand { get; private set; }

private void OnSubmit(object arg)   
{
     _logger.Log(arg.ToString());
}

private bool CanSubmit(object arg) 
{
    return Title.Length > 0; 
}

private string _title="";

public string Title
{
get { return _title; }
set 
{
    if (_title != value)
    {
           _title = value;
       this.RaisePropertyChanged();
    }
}
}

以下のようにXamlでSubmitCommandをバインドしました

<Button Content="Submit" Width="100" Command="{Binding Path=SubmitCommand}" CommandParameter="{Binding ElementName=TitleText, Path=Text}" />

問題は、タイトル値が変更されたときにボタンが有効にならないことです。何かが足りないのかもしれません。ご協力いただきありがとうございます!

4

2 に答える 2

5

CanExecuteChangedコマンドでイベントを発生させる必要があるようです。詳細については、http://wpftutorial.net/DelegateCommand.htmlおよび http://msdn.microsoft.com/en-us/library/system.windows.input.icommand.canexecutechanged.aspxを参照してください。

最初のリンクはDelegateCommandの実装へのリンクであり、おそらく実際に使用しているものではないことに注意してください。プリズムDelegateCommandの場合RaiseCanExecuteChanged()、ボタンを再度有効にするかどうかを決定するときに、メソッドを呼び出す必要があります。

幸運を!

ネイト

于 2013-02-12T23:02:51.267 に答える
0

追加:

 SubmitCommand.RaiseCanExecuteChanged();

後:

 this.RaisePropertyChanged();
于 2013-02-12T23:13:14.197 に答える