簡體   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