我有以下复选框:
<dxe:CheckEdit Margin="2,0" IsChecked="{Binding SelectedContact.isMajor,Mode=TwoWay,Converter={StaticResource CheckBoxNullToFalse}}">More than 18</dxe:CheckEdit>
这就是我想要实现的:当用户点击复选框时,我想调用一个函数,但也分配了isMajor字段。
我看到如何执行此操作的唯一方法是绑定到将执行两个操作的命令
有更简单的方法吗?
由于
约翰
答案 0 :(得分:1)
使isMajor
成为属性而不是字段,并在setter中调用方法
private bool _isMajor;
public bool IsMajor
{
get { return _isMajor; }
set
{
_isMajor = value;
OnPropertyChanged("IsMajor");
DoSomething();
}
}
答案 1 :(得分:1)
老实说,使用Command是我遇到的第一件事。我假设dxe:CheckEdit
是一些CheckBox变体 - 作为替代方案,您可能会发现ToggleButton
很有用,具体取决于您正在寻找的行为。
我不确定你的意思是“直截了当”(最少代码,最容易理解等),但将IsChecked
绑定到isMajor
属性(根据@Thomas Levesque)和绑定到命令(例如Relay或Delegate)以调用该函数提供了一种干净的方式来执行您想要的两件事而不会在代码中引入副作用,就像您调用时一样例如,属性设置器或Converter
中的函数对其他开发人员来说并不明显。或者对你来说,当你从现在开始回归维持这一年。 :)