簡體   English   中英

WPF:如果我的窗口有任何驗證錯誤,如何禁用一個按鈕?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM