[英]UWP XAML User control static properties vs instance properties
因此,我创建了一个用户控件,并在其上创建了依赖属性TestProperty。
我想要此用户控件的2个实例,并将每个实例的TestProperty设置为不同的值。
<widgets:mycontrol Test="val1"></widgets:WTComboBox>
<widgets:mycontrol Test="val2"></widgets:WTComboBox>
如果我将testproperty创建为静态DependencyProperty,则如下所示:
public static readonly DependencyProperty TestProperty=
DependencyProperty.Register("Test", typeof(string), typeof(mycontrol), null);
在控件中,那么显然我不能在每个实例中为其设置不同的值,但是当我将testproperty创建为普通实例属性时
public DependencyProperty TestProperty;
public mycontrol()
{
TestProperty = DependencyProperty.Register("Test", typeof(string), typeof(mycontrol), null);
}
在控件上,那么设计器无法识别该属性的存在并产生错误,但是在运行时,该控件可以正常运行,并且该控件的每个实例都具有test属性的正确值。
所以问题是如何在设计器中使用实例依赖属性?
谢谢
DependencyProperty
已注册为Type而不是实例。 您正确编写了此代码进行注册。 从这里参考。
public static readonly DependencyProperty TestProperty=
DependencyProperty.Register("Test", typeof(string), typeof(mycontrol), null);
然后你说
那么显然我无法在每个实例中为其设置不同的值
这不是真的。
尽管DependencyProperty
是以这种方式注册的,但每个实例的事件可以具有不同的值,它不是静态属性 ,对于所有类型的实例只能具有一个值,就像常规的CLR属性除外。 要了解Dependency属性和CLR属性之间的区别,请参见此答案 。
然后,您定义一个非静态的依赖项属性(并询问如何使设计者识别此属性),则不应这样做。 对于为什么不应该写一个非静态的依赖属性,即使它看起来可以工作,已经有了一些答案 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.