当我有一个ToggleButton定义时:
<ToggleButton Name="Taco"/>
在我的ViewModel中:
public void Taco() {}
public bool CanTaco { get { return false; }}
该按钮已正确禁用。但是,如果我改为使Taco成为bool属性以反映ToggleButton的IsChecked状态,那么它将受到CM约定的约束,但不再使用CanTaco属性:
public bool Taco { get; set; }
public bool CanTaco { get { return false; } } // completely ignored
该按钮已启用。我可以手动将IsEnabled绑定到CanTaco,它可以再次正常工作。
在这种情况下,约定是否有理由不使用guard属性,还是一个bug?
答案 0 :(得分:0)
这是绑定基础结构的限制而不是bug。 Guard方法可以防止动作,因为我们可以“拦截”方法调用并首先检查防护。然而,当它是一个属性时,双向绑定设置属性,并且无处插入警卫的检查。
添加该功能会很高兴,但遗憾的是不可能,保护方法只适用于方法而不是属性。