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.htmlhttp://msdn.microsoft.com/en-us/library/system.windows.input.icommand.canexecutechanged.aspx

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

祝你好运!

内特

于 2013-02-12T23:02:51.267 回答
0

添加:

 SubmitCommand.RaiseCanExecuteChanged();

后:

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