在WPF中验证文本框时启用按钮

时间:2015-02-02 17:01:42

标签: c# wpf validation multidatatrigger

我正在尝试在验证文本框时禁用/启用按钮。

我得到验证工作(我知道它可行,因为它改变了设计)。 但是,当文本框验证时,我似乎无法将按钮从禁用更改为启用。

这是我的代码:

<AdornerDecorator>
    <TextBox Width="150"
             Validation.ErrorTemplate="{StaticResource ValidationErrorTemplate}"
             x:Name="OrgNoTextBox">
        <TextBox.Text>
            <Binding Path="Customer.OrgNo" UpdateSourceTrigger="PropertyChanged" >
                <Binding.ValidationRules>
                    <client:RegexValidationRule ValidatesOnTargetUpdated="True" Pattern="OrgNo" />
                </Binding.ValidationRules>
            </Binding>
        </TextBox.Text>
    </TextBox>
</AdornerDecorator>

...

<Button Width="80"
        Height="25" 
        Margin="0 0 5 0" 
        Command="{Binding OkCommand}" 
        HorizontalAlignment="Left" 
        IsDefault="True" 
        Content="Save">
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Setter Property="IsEnabled" Value="false" />
            <Style.Triggers>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding  ElementName=OrgNo, Path=(Validation.HasError)}" 
                                       Value="false" />
                    </MultiDataTrigger.Conditions>
                    <Setter Property="IsEnabled" 
                            Value="true" />
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

2 个答案:

答案 0 :(得分:5)

ElementName中的MultiDataTrigger错误。它应该是OrgNoTextBox而不是OrgNo

答案 1 :(得分:0)

喜欢它

 private void Grid_MouseMove_1(object sender, MouseEventArgs e)
    {
        btn.IsEnabled = false;
        if (txt.IsArrangeValid == true)
        {
            btn.IsEnabled = true;
        }
    }