2011-05-05 5 views
11

Próbuję uzyskać DependencyProperty pracy w WPF. Używam:DependencyProperty Wartość domyślna

public static readonly DependencyProperty DisplayModeProperty = DependencyProperty.Register("DisplayMode", typeof (TescoFoodSummary), typeof (Orientation), new UIPropertyMetadata(Orientation.Vertical)); 
    /// <summary> 
    /// Gets or sets the orientation. 
    /// </summary> 
    /// <value>The orientation.</value> 
    public Orientation DisplayMode { 
     get { return (Orientation)base.GetValue(DisplayModeProperty); } 
     set { base.SetValue(DisplayModeProperty, value); } 
    } 

Po zainicjowaniu okna pojawia się błąd: Domyślny typ wartości nie pasuje do typu właściwości "DisplayMode". Jednak, jeśli pozostawię domyślną wartość, otrzymuję wyjątek odwołania zerowego, gdy okno ładuje się z powodu braku ustawienia DisplayModeProperty.

+1

Drugim parametrem jest nieruchomość type, trzecim parametrem jest rodzaj kontrolki, bądź uważny, zamień go w swoim przykładzie. – vorrtex

+0

To był głupi błąd. Dzięki. – Echilon

+0

@vorrtex: Opublikuj to jako odpowiedź ... –

Odpowiedz

13

Zamieszczanie komentarza jako odpowiedzi.

Zgodnie z MSDN DependencyProperty.Register Method składnia wygląda tak:

public static DependencyProperty Register(
    string name, 
    Type propertyType, 
    Type ownerType, 
    PropertyMetadata typeMetadata 
) 

W twoim przypadku ownerType jest TescoFoodSummary i propertyType jest Orientation, więc parametry mają następujące pozycje:

DependencyProperty.Register("DisplayMode", typeof (Orientation), typeof (TescoFoodSummary), new UIPropertyMetadata(Orientation.Vertical)); 
+0

Dzięki, łatwy błąd. – Echilon