[英]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.