数字类型为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"
第一个问题是 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>