如何注册基于数字类型的自定义属性?
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"
答案 0 :(得分:1)
第一个问题是 DP标识符的最后一个参数中提供的默认元数据不正确。
而不是
new UIPropertyMetadata(default(Double))
,
应该是
new UIPropertyMetadata(typeof(Double))
第二个问题。使用 x:Type
传递类型。
<nb:NumberBox xmlns:sys="clr-namespace:System;assembly=mscorlib"
FormatValue="{x:Type sys:Int32}"/>
答案 1 :(得分:0)
从这里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>