繁体   English   中英

UWP XAML用户控件静态属性与实例属性

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM