我完全不知道是什么原因造成的。
背景:使用 Prism 框架
- 我有一个按钮绑定到
DelegateCommand
- 我打电话
RaiseCanExecuteChanged
当我在 Visual Studio 中以调试模式启动应用程序时,一切正常。该应用程序运行完美。
然后当我通过 .exe 打开应用程序时,RaiseCanExecuteChanged
没有调用该方法。我不知道为什么会这样。还有其他人遇到类似的问题吗?
编辑:当我第一次通过 .exe 打开应用程序时,RaiseCanExecuteChanged
会调用它(因为我在 my 的构造函数中设置了它ViewModel
)。但是,它再也不会被调用。
需要时的代码:
private readonly DelegateCommand _buttonCommand;
public ViewModel()
{
_buttonCommand = new DelegateCommand(Button, CanExecuteButton);
}
public DelegateCommand ButtonCommand
{
get { return this._buttonCommand; }
}
public void Button()
{
... do stuff ...
_buttonCommand.RaiseCanExecuteChanged();
}
public bool CanExecuteButton()
{
if (some condition)
return true;
else
return false;
}
<Button x:Name="MyButton" Content="ClickMe"
Command="{Binding ButtonCommand}">
我什至绝望了,并试图IsEnabled
在我的 Button 中放置一个属性,但我必须CanExecuteButton
……但无济于事。