我正在尝试根据用户输入的数据启用和禁用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}" />
问题是标题值更改时,按钮未启用。可能是我错过了什么。谢谢你的帮助!
答案 0 :(得分:5)
听起来你需要在命令中引发CanExecuteChanged
事件。有关详细信息,请参阅http://wpftutorial.net/DelegateCommand.html和http://msdn.microsoft.com/en-us/library/system.windows.input.icommand.canexecutechanged.aspx
请注意,第一个链接是DelegateCommand的实现,可能不是您实际使用的。对于prism DelegateCommand,您只需要在确定是否应该重新启用该按钮时调用RaiseCanExecuteChanged()
方法。
内特
答案 1 :(得分:0)
添加:
SubmitCommand.RaiseCanExecuteChanged();
后:
this.RaisePropertyChanged();