MultiDataTrigger 一旦按钮 isEnabled 属性 从代码隐藏更改后就不会触发
MultiDataTrigger Not firing once the button isEnabled property is changed from code behind
我有一个 enabled/disabled 按钮,它基于 validation.hasError 属性 几个文本框,它工作正常,直到我想从基于代码的后台禁用和启用同一个按钮一些业务逻辑。例如。
if(recordExist) { btn.IsEnabled=true;} else{ btn.isenabled=false;}
现在发生的情况是,一旦执行了 else
逻辑并禁用了按钮,即使所有控件的 validation.HasError
[=28],按钮也不会再次重新启用=] 错误。同样,如果执行 if
逻辑并启用按钮,即使 validation.hasError
return 为真,它也会保持启用状态。我想要的是以某种方式重新触发 multiDataTriggers
以检查 textboxes
上的 Validation.hasError
并相应地更新按钮的 isEnabled
属性。我希望我足够清楚。
请参阅 MSDN 上的 Dependency Property Value Precedence。
设置本地值后,触发器无法覆盖它。您需要调整绑定、触发器等,以将代码背后的逻辑考虑在内。如果您正在使用 MVVM(并且您应该),您可以将条件添加到您的视图模型中。
或者,如果您希望控件忘记本地值并让触发器优先,您可以使用 ClearValue
。或者您可以使用 SetCurrentValue
并避免优先考虑新值。但是,您应该避免使用这些函数,它们会使您的代码更难理解和维护。
我有一个 enabled/disabled 按钮,它基于 validation.hasError 属性 几个文本框,它工作正常,直到我想从基于代码的后台禁用和启用同一个按钮一些业务逻辑。例如。
if(recordExist) { btn.IsEnabled=true;} else{ btn.isenabled=false;}
现在发生的情况是,一旦执行了 else
逻辑并禁用了按钮,即使所有控件的 validation.HasError
[=28],按钮也不会再次重新启用=] 错误。同样,如果执行 if
逻辑并启用按钮,即使 validation.hasError
return 为真,它也会保持启用状态。我想要的是以某种方式重新触发 multiDataTriggers
以检查 textboxes
上的 Validation.hasError
并相应地更新按钮的 isEnabled
属性。我希望我足够清楚。
请参阅 MSDN 上的 Dependency Property Value Precedence。
设置本地值后,触发器无法覆盖它。您需要调整绑定、触发器等,以将代码背后的逻辑考虑在内。如果您正在使用 MVVM(并且您应该),您可以将条件添加到您的视图模型中。
或者,如果您希望控件忘记本地值并让触发器优先,您可以使用 ClearValue
。或者您可以使用 SetCurrentValue
并避免优先考虑新值。但是,您应该避免使用这些函数,它们会使您的代码更难理解和维护。