我当前的设置会将Text
的{{1}}属性绑定到某个TextBox
对象。我喜欢使用WPF的内置验证来检测无效的URI,然后从那里开始。但这似乎没有用?
我想如果我输入例如“aaaa”作为URI,它会引发异常。因此,触发我当前的设置,它应该检测如下的异常:
Uri
然后我想我可以检查各种验证属性,就像这样?
<TextBox Grid.Column="1" Name="txtHouseListFile" DockPanel.Dock="Right" Margin="3">
<TextBox.Text>
<Binding Source="{StaticResource Settings}" Path="Default.HouseListFile" Mode="TwoWay">
<Binding.ValidationRules>
<ExceptionValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
但是,这似乎不起作用。也许它在尝试转换时不会抛出异常?或者也许我的设置错了?对两者的更正都会很好。
答案 0 :(得分:1)
您可以尝试创建我们自己的ValidationRule(继承自ValidationRule)。在此类中,重写Validate(...)并尝试创建URI对象并捕获异常。在catch中,只需将e.Message设置为异常消息。
(我不太确定你的绑定源是什么。它是一个URI对象还是一个字符串?)
答案 1 :(得分:0)
试试这个: 创建一个转换器类(继承自IValueConverter):
将转换器放入Binding中。然后,收敛器将在Uri构造函数中抛出异常,并且您的ExceptionValidationRule将捕获它。
Look here了解如何使用转换器。