Frage

Ich habe eine Abhängigkeitseigenschaft (Vordergrund) auf einem benutzerdefinierten Steuerelement, das von Control erbt. Wenn ich die Kontrolle bin Laden, will ich sehen, ob der Benutzer die Abhängigkeit Eigenschaft festgelegt ist oder wenn es den Standardwert verwendet, bevor ich für sie den Wert gesetzt. Das Problem ist ein wenig komplizierter dann, dass, hier ist es:

Die Steuerung ist in einer benutzerdefinierten Steuerelement-Bibliothek, die ein Benutzer für ihr Projekt hinzufügt. Wenn sie ihr Projekt einrichten, habe ich die Möglichkeit, für sie eine Linie, um ihre app.xaml Datei mit einem bestimmten x hinzuzufügen: Schlüsseln, die die Einstellungen enthalten, die ich gelesen, während für meine Steuerelemente der Standardwerte zu setzen. Wenn sie jedoch den Wert entweder im Code oder in XAML festlegen, ich will nicht den Wert mit diesem globalen Wert setzen. Hier sind ein paar Fälle zu helfen, zu visualisieren, was ich spreche:

  1. Der Benutzer erstellt ein Steuerelement aus meiner Bibliothek und legt sie auf ihrer Seite. Sie setzen dann den Vordergrund zu grün. Ich möchte den Wert des Vordergrund für das Steuerelement, grün sein.

  2. Der Benutzer fügt eine spezielle Linie, um ihre app.xaml, dass sie alle Steuerelemente einer bestimmten Art besagt, wollen einen Vordergrund von rot haben. Ich möchte den Wert des Vordergrund aller Kontrollen dieser Art rot sein.

  3. Der Benutzer fügt eine spezielle Linie, um ihre app.xaml, dass sie alle Steuerelemente einer bestimmten Art besagt, wollen einen Vordergrund von rot haben. Sie setzen dann den Wert des Vordergrund einer einzigen Kontrolle (in XAML) nach gelb. Ich möchte den Wert des Vordergrund aller Kontrollen dieser Art rot sein, außer für die, die sie sonst gelb angegeben werden.

Wenn die Steuerung laden, mag ich die Abhängigkeitseigenschaft lesen, um zu sehen, ob sie den Wert eingestellt haben, oder wenn es der Standardwert ist die im Stil definiert ist. Wenn es der Standardwert ist, mag ich dann ihre spezielle Linie aus der app.xaml Datei lesen und den Vordergrund zu Boden zu dieser Farbe gesetzt.

War es hilfreich?

Lösung 2

Ich habe ein bisschen mehr Forschung getan und glaube, dass ich eine Antwort gefunden habe. Wenn ich die Kontrolle bin Laden (oder Aktualisierung) prüfe ich die Art von Read (ForegroundProperty), wenn dieser Typ System.Object ist, dann wird es nicht in xAML festlegen. Wenn jedoch diese Art etwas anderes dann System.Object (Like System.Windows.Media.Brush) ist, dann wird es gesetzt in XAML.

Andere Tipps

Erweitern Sie Ihre Lösung zu vervollständigen, von MSDN-Seite Read :

if (ReadLocalValue(FontSizeProperty) == DependencyProperty.UnsetValue)
    // Do your thing...

Das heißt, es existiert DependencyProperty.UnsetValue, gegen die überprüfen, ob der Wert gesetzt ist oder nicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top