我是 WPF 新手并且有一个(在我看来)奇怪的问题:我想将本地属性(名称:XmlText)绑定到 TextBox.Text 属性并使用如下验证规则验证值:
<TextBox Height="23" Width="301" Margin="78,14,0,0" Name="tbXMLFile" HorizontalAlignment="Left" VerticalAlignment="Top" TextChanged="tbXMLFile_TextChanged">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors),
Converter={StaticResource ErrorsToStringConverter}}"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBox.Style>
<TextBox.Text>
<Binding Path="XmlText" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<local:RegexValidationRule Dateiendung="xml"></local:RegexValidationRule>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
每次我的属性 XmlText 获得一个新值时,验证不会做任何事情,但如果我在我的 TextBox 中手动输入文本,它会验证。
如果我删除 TextChanged-Event 或将以下代码添加到事件中,验证将不再起作用:
XmlText = ((TextBox)sender).Text;
有人可以解释为什么程序会这样吗?