【发布时间】:2016-10-06 18:27:32
【问题描述】:
我对 WPF 相当陌生...我试图将验证绑定到 WPF 中的文本框。
这是我在 xaml 中的文本框:
<TextBox>
<TextBox.Text>
<Binding Source="{x:Static r:Settings.Default}" Path="ServerIP" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<utilities:PingValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
这是我的验证类:
public class PingValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
...
if (ipCorrect) return new ValidationResult(true, null);
else return new ValidationResult(false, "It's not an IP");
}
}
这样我有以下错误:
错误未定义命名空间前缀“utilities”。
有人知道为什么吗?
【问题讨论】:
-
它没有定义,因为你没有定义它。查看 XAML 文件的顶部,所有类似
xmlns:foobar="clr-namespace:Foo.Bar"的内容。你需要在那里定义它。 -
是的,就是这样。现在我应该可以中断我的方法,并且在调试时它应该停在那里对吗?
-
是的,我认为应该可以,从我那里看到的情况来看——尽管尝试一下。
-
它不会停止,我只是按一个按钮,文本框没有验证。
-
如果你将
PresentationTraceSources.TraceLevel="High"添加到Binding标签中,当你在文本框中输入时,你会在VS的输出窗格中看到什么?
标签: c# wpf validation binding