[英]How can I use my inherited property in a User Control?
我有一個名為A的UserControl類,其中包含一個Border屬性。 然后其他類從A類繼承,但是我不能使用新的Property。
public class A : UserControl
{
public A()
{
Border2 = new Border();
Border2.BorderBrush = Media.Brushes.LightGray;
}
public static readonly DependendyProperty Border2Property = DependencyProperty.Register("Border2", typeof(Border), typeof(A));
public Border Border2
{
get { return (Border)GetValue(Border2Property); }
set { SetValue(Border2Property, value); }
}
}
然后,當我使用從A繼承的另一個類時,無法使用此Border2屬性,我在寫類似以下內容:
<local:A.Border2></...
但這告訴我Border2屬性不支持Grid類型的值。
那是因為您已經創建了一個標准的依賴項屬性。 如果要在A以外的其他類型上進行設置,則想創建一個附加屬性。 這僅需要進行少量代碼更改:
GetBorder2
和SetBorder2
方法添加到類A。即使您的代碼未調用這些方法,它們也屬於模式的一部分,需要在其中使用-它們是如何告訴編譯器是的,您確實打算人們可以在XAML中設置此附加屬性。 例如:
public static readonly DependencyProperty Border2Property =
DependencyProperty.RegisterAttached("Border2", typeof(Border), typeof(A));
public static Border GetBorder2(DependencyObject obj)
{
return (Border) obj.GetValue(Border2Property);
}
public static void SetBorder2(DependencyObject obj, Border2 value)
{
obj.SetValue(Border2Property, value);
}
如果您的屬性僅對某些元素類型可用(例如,如果它僅適用於FrameworkElement及其后代,或者僅適用於Panel及其后代,或類似的東西),則將該屬性用作GetBorder2的第一個參數的類型和SetBorder2。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.