【问题标题】:the namespace prefix "utilities" is not defined命名空间前缀“utilities”未定义
【发布时间】: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


【解决方案1】:

它没有被定义,因为你没有定义它。查看 XAML 文件的顶部,所有类似 xmlns:foobar="clr-namespace:Foo.Bar" 的内容。你需要在那里定义它。

【讨论】:

    猜你喜欢
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-16
    • 1970-01-01
    • 2011-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多