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