gpt4 book ai didi

c# - 为什么切换按钮的 guard 属性在其名称与属性匹配时会被忽略?

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:30 25 4
gpt4 key购买 nike

当我有一个 ToggleButton 定义时:

<ToggleButton Name="Taco"/>

在我的 ViewModel 中:

public void Taco() {}

public bool CanTaco { get { return false; }}

该按钮已正确禁用。但是,如果我改为将 Taco 设为 bool 属性以反射(reflect) ToggleButton 的 IsChecked 状态,它会受到 CM 约定的约束,但不再使用 CanTaco 属性:

public bool Taco { get; set; }

public bool CanTaco { get { return false; } } // completely ignored

按钮已启用。我可以手动将 IsEnabled 绑定(bind)到 CanTaco,它再次正常工作。

在这种情况下,约定是否有不使用 guard 属性的原因,或者这是一个错误?

最佳答案

这与其说是错误,不如说是绑定(bind)基础结构的限制。守卫方法对操作起作用,因为我们可以“拦截”方法调用并首先检查守卫。然而,当它是一个属性时,双向绑定(bind)会设置该属性,并且没有地方可以插入保护检查。

如果添加该功能会很好,但不幸的是不可能,保护方法只适用于方法而不适用于属性。

关于c# - 为什么切换按钮的 guard 属性在其名称与属性匹配时会被忽略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23815239/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com