我有一个绑定到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的好处是,您可以根据条件条件(即名称已从其原始值更改(控制按钮的启用或禁用时间。有了这里提到的技巧,你应该能够在短时间内做你想做的事。只要在谷歌上搜索每个主题,你就会得到你需要的东西。