数字类型为DependencyProperty

本文关键字:DependencyProperty 类型 数字 | 更新日期: 2023-09-27 18:06:57

如何注册基于数字类型的自定义属性?

public class NumberBox : TextBox
    {
        public static readonly DependencyProperty FormatProperty = DependencyProperty.Register("FormatValue", typeof(Type), typeof(NumberBox), new UIPropertyMetadata(default(Double)));
        public Type FormatValue
        {
            get
            {
                return (Type)GetValue(FormatProperty);
            }
            set
            {
                SetValue(FormatProperty, value);
            }
        }
   }

XAML

<nb:NumberBox FormatValue="{System:Int32}"/>

我知道,这并不完美,但我真的不知道它是如何可行的。

更新:

基本上,我需要有一种方法来设置我的数字框的类型。例如,如果我需要使用Double NumberBox,我只需设置FormatValue="Double"

数字类型为DependencyProperty

第一个问题是 DP标识符最后一个参数提供的默认元数据不正确

不是

new UIPropertyMetadata(default(Double))

应该是

new UIPropertyMetadata(typeof(Double))

XAML中的第二个问题。使用 x:Type 传递类型

<nb:NumberBox xmlns:sys="clr-namespace:System;assembly=mscorlib"
              FormatValue="{x:Type sys:Int32}"/>

从这里http://msdn.microsoft.com/en-us/library/ee792002%28v=vs.110%29.aspx,类型是x:Int32, x:Double,…

所以你想用:

 <nb:NumberBox FormatValue="{x:Type x:Int32}"/>

一般来说,您必须在XAML:

中包含名称空间。
 <Window ...
         xmlns:ns="clr-namespace:MyNamepsace;assembly=MyAssembly"
         >
     <nb:NumberBox FormatValue="{x:Type ns:MyType}"/>
 </Window>
相关文章:
  • 没有找到相关文章