Prism Delegate命令不启用按钮

时间:2013-02-12 22:54:39

标签: wpf prism

我正在尝试根据用户输入的数据启用和禁用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}" />

问题是标题值更改时,按钮未启用。可能是我错过了什么。谢谢你的帮助!

2 个答案:

答案 0 :(得分:5)

听起来你需要在命令中引发CanExecuteChanged事件。有关详细信息,请参阅http://wpftutorial.net/DelegateCommand.htmlhttp://msdn.microsoft.com/en-us/library/system.windows.input.icommand.canexecutechanged.aspx

请注意,第一个链接是DelegateCommand的实现,可能不是您实际使用的。对于prism DelegateCommand,您只需要在确定是否应该重新启用该按钮时调用RaiseCanExecuteChanged()方法。

祝你好运!

内特

答案 1 :(得分:0)

添加:

 SubmitCommand.RaiseCanExecuteChanged();

后:

 this.RaisePropertyChanged();