用户控件-WPF IPAddress依赖项属性



我创建了一个名为LocalIPProperty的依赖属性作为字符串依赖属性。一切都很好,但当我在应用程序中使用UserControl并在VS属性窗口中将LocalIProperty更改为非IP文本时,VS属性窗口显示默认的IP字符串(127.0.0.1),并在XAML中添加:LocalIP="sdahashfah",然后当我尝试运行应用程序时,我会得到XalmParserException。

我还试着简单地将LocalIPProperty创建为IPAddressDependency属性,但在使用UserControl的应用程序中,我无法更改IPAddress。

我想要的是,当我在VS属性窗口中将LocalIP设置为非IP字符串时,该值保持不变。

我现在拥有的是:

public static DependencyProperty LocalIPProperty = DependencyProperty.
            Register("LocalIP", typeof(string), typeof(UserControl1),
            new FrameworkPropertyMetadata("127.0.0.1"), IPPropertyValidate);
        private static bool IPPropertyValidate(object value)
        {
            try
            {
                IPAddress.Parse((string)value);
            }
            catch { return false; }
            return true;
        }
        [Description("IP for listening."), Category("Address")]
        public string LocalIP
        {
            get { return (string)GetValue(LocalIPProperty); }
            set { SetValue(LocalIPProperty, value); }
        }

感谢您的努力。

听起来像VS编辑器中的一个bug。看起来它试图设置您输入的无效属性值,但不知道当它从验证中返回错误值时该怎么办。它可能试图将其设置为在运行时忽略的设计时值,但没有输出正确的语法。