问题描述
我有一个绑定到 ICommand 接口的 Button,但是当我运行应用程序时它没有被触发。
当应用运行时,按钮应该被禁用,在 ICommand 或 CanUpdate 中放置一个断点,但它没有被点击。
就我所见,ICommand 似乎已正确实施 - 为简单起见,已替换 CanUpdate 中的值...
抓着我的头锻炼缺少什么?....
XAML
<StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="1">
<RadioButton Width="64" IsChecked="{Binding Passed}" GroupName="T1">Yes</RadioButton>
<RadioButton Width="64" IsChecked="{Binding Passed,Converter={StaticResource InverseBoolRadioConverter}}" GroupName="T1" >No</RadioButton>
</StackPanel >
Button Command="{Binding UpdateHasPassed}" Content="Update"></Button>
代码隐藏:-
private RelayCommand hasPassed;
public bool Passed
{
get
{
return passed;
}
set
{
if (passed !=value )
{
passed = value;
OnPropertyChanged();
}
}
}
public ICommand HasPassed
{
get
{
if (hasPassed == null)
{
haspassed = new RelayCommand( param => CanUpdate());
}
return haspassed;
}
}
private bool CanUpdate()
{
return (1 != 2)
}
解决方法
您在研究 INotifyPropertyChanged 方面走在正确的轨道上。我还建议阅读 WPF 数据绑定、ICommand 接口(特别是创建 RelayCommand,稍后会详细介绍)和 MVVM 设计。
WPF 数据绑定和 ICommand 的好处是您可以根据您的条件标准(即名称已从其原始值更改)控制何时启用或禁用按钮。有了这里提到的技巧,你应该能够在短时间内做你想做的事。只需在 google 上搜索每个主题,您就会得到所需的内容。