1

我有一个基于几个文本框的validation.hasError 属性启用/禁用的按钮,它工作正常,直到我想根据一些业务逻辑从代码中禁用和启用这个相同的按钮。例如。

if(recordExist) { btn.IsEnabled=true;} else{ btn.isenabled=false;}

现在发生的情况是,一旦else执行了逻辑并且按钮被禁用,即使validation.HasError所有控件返回 false,按钮也不会再次重新启用。同样,如果执行if逻辑并启用按钮,即使validation.hasError返回 true,它也会保持启用状态。我想要的是以某种方式重新触发multiDataTriggers以检查并Validation.hasError相应地textboxes更新isEnabled按钮的属性。我希望我足够清楚。

4

1 回答 1

1

请参阅MSDN 上的依赖属性值优先级。

一旦设置了本地值,触发器就不能覆盖它。您需要调整绑定、触发器等以考虑后面代码中的逻辑。如果您正在使用 MVVM(并且应该),您可以将条件添加到您的视图模型中。

或者,如果您希望控件忘记本地值并让触发器优先,您可以使用ClearValue. 或者您可以使用SetCurrentValue并避免优先考虑新值。但是,您应该避免使用这些函数,它们会使您的代码更难理解和维护。

于 2015-05-23T05:42:16.637 回答