[英]WPF: How can I disable one button if my window has any validation error?
我在窗口中有一些(> 20)控件,每个控件都绑定到ViewModel的属性。
ViewModel实现IDataErrorInfo
,以进行一些验证,并且运行良好。
现在,我在窗口中添加一个类似“提交”的按钮。 如果任何控件有验证错误,我想禁用该按钮。
尽管我可以使用DataTrigger
来完成以下操作:
<Button Content="Commit">
<Button.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=control1, Path=(Validation.HasError)}" Value="True">
<Setter Property="Button.IsEnabled" Value="False" />
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=control2, Path=(Validation.HasError)}" Value="True">
<Setter Property="Button.IsEnabled" Value="False" />
</DataTrigger>
<!-- DataTriggers for control3, 4, 5... -->
</Style.Triggers>
</Style>
</Button.Style>
</Button>
那将是一个很长的XAML代码,因为我在此窗口中有20多个控件,所以我想知道是否有更好的解决方案?
也许您应该在ViewModel中创建一个命令。 像这样:
class ViewModel
{
public ICommand CommitCommand{ get; private set; }
public ViewModel()
{
CommitCommand = new RelayCommand(Commit, CanCommit);
}
private void Commit(object parameter)
{
// button click handler
}
private bool CanCommit(object parameter)
{
// check: view model has errors
}
}
实现ICommand接口,您可以在这里获得: Wpf教程
XAML代码:
<Button Command={Binding CommitCommand}/>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.