c# - wpf 验证 - 我怎样才能让这个代码在输入发生时触发验证(离开字段时比较)

标签 c# .net wpf

我怎样才能让这段代码在输入发生时触发验证(cf 离开字段时)。下面的代码在验证方面工作正常,但是直到离开该字段(而不是在您键入时)才会工作。

XAML

<Grid.Resources>
    <Style TargetType="{x:Type TextBox}">
        <Style.Triggers>
            <Trigger Property="Validation.HasError" Value="True">
                <Setter 
                    Property="ToolTip" 
                    Value="{Binding RelativeSource={RelativeSource Self},Path=(Validation.Errors)[0].ErrorContent}" />
            </Trigger>
        </Style.Triggers>
    </Style>

. . .

                <TextBox IsEnabled="{Binding ElementName=ProxyModeRadioButton, Path=IsChecked}"
                         Width="Auto" Name="ProxyHostTextBox" VerticalAlignment="Center" MinWidth="150" >
                    <TextBox.Text>
                        <Binding Path="Proxy" >
                            <Binding.ValidationRules>
                                <local:SpecialCharactersRule/> 
                            </Binding.ValidationRules>
                        </Binding>
                    </TextBox.Text>
                </TextBox>

谢谢

最佳答案

尝试

<TextBox IsEnabled="{Binding ElementName=ProxyModeRadioButton, UpdateSourceTrigger=PropertyChanged, Path=IsChecked}" Width="Auto" Name="ProxyHostTextBox" VerticalAlignment="Center" MinWidth="150" >
    <TextBox.Text>
        <Binding Path="Proxy" >
            <Binding.ValidationRules>
                <local:SpecialCharactersRule/> 
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

注意绑定(bind)中的 UpdateSourceTrigger=PropertyChanged

更新

正如盲人所说,我将 UpdateSourceTrigger 放在了错误的绑定(bind)框中……我的错误。它应该与 TextBox.Text 一起使用。对不起...

<TextBox IsEnabled="{Binding ElementName=ProxyModeRadioButton, Path=IsChecked}" Width="Auto" Name="ProxyHostTextBox" VerticalAlignment="Center" MinWidth="150" >
    <TextBox.Text>
        <Binding Path="Proxy" UpdateSourceTrigger="PropertyChanged" >
            <Binding.ValidationRules>
                <local:SpecialCharactersRule/> 
            </Binding.ValidationRules>
        </Binding>
    </TextBox.Text>
</TextBox>

关于c# - wpf 验证 - 我怎样才能让这个代码在输入发生时触发验证(离开字段时比较),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3682316/

相关文章:

c# - "float: left"WPF 中的行为

c# - 绑定(bind)中的属性 setter 调用了两次

c# - 更新 iQueryable 中的多行

c# - .NET 中程序集的标记类型是什么?

c# - 为什么这个ajax调用失败了?

c# - 如何自动创建属性?

c# - Microsoft Azure 队列中的内存使用情况

c# - 模式中缺少参数

c# - MongoDB c# Update.PushWrapped,怎么用?

WPF:将 DataGrid 绑定(bind)到 List<String>