【问题标题】:Enabling/Disabling Button based on the validation of the text box is not working基于文本框验证的启用/禁用按钮不起作用
【发布时间】:2013-11-11 13:44:14
【问题描述】:

我有一个包含文本框和按钮的 WPF 用户控件。 文本框有关联的验证规则(它执行一些业务规则。这个类实现了ValidationRule)。 按钮需要根据文本框验证结果启用/禁用。

文本框的验证正常进行。

按钮的启用/禁用未正确进行。 一旦按钮被启用,即使文本框的验证导致它不会被禁用 错误。

      <TextBox MaxLength="3" Width="40" Margin="5" x:Name="Text1" HorizontalContentAlignment="Center">
                <TextBox.Text>
                    <Binding Path="Densities[0].Value" UpdateSourceTrigger="PropertyChanged" >
                        <Binding.ValidationRules>
                            <administration:ValidateDensityRule/>
                        </Binding.ValidationRules>
                    </Binding>
                </TextBox.Text>
      </TextBox>

按钮 Xaml

<Button.Style>
    <Style TargetType="{x:Type Button}" BasedOn="{StaticResource ButtonStyle}">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Text1,Path=(Validation.HasError)}" Value="True">
                                <Setter Property="IsEnabled" Value="False"></Setter>                                    
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </Button.Style>

我在这里错过了什么?

【问题讨论】:

  • 您在 DataTrigger 绑定中错过了 ElementName。将您的 DataTrigger 更改为 &lt;DataTrigger Binding="{Binding ElementName=Text1,Path=(Validation.HasError)}" Value="True"&gt;

标签: .net wpf


【解决方案1】:

为您的绑定提供ElementName,以便它可以正确绑定到您的TextBox -

<DataTrigger Binding="{Binding Path=(Validation.HasError), ElementName=Text1}" 
             Value="True">

现在您可以在输出窗口中看到绑定错误。

【讨论】:

    猜你喜欢
    • 2010-12-04
    • 1970-01-01
    • 2013-04-27
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 2017-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多