StaticExtension Wert nicht aufgelöst werden kann

Ich bin vor einige Probleme mit einer WPF-Bindung an eine statische Eigenschaft. In meiner Anwendung gibt es eine Klasse namens " Globals enthält eine statische Eigenschaft ThisAddIn. Dieses Objekt ermöglicht mir den Zugriff auf eine User-Eigenschaft, die im Grunde ist, was ich verwenden möchte in meine Bindung. So, mein XAML-Code sieht wie folgt aus:

<TextBlock Text="{Binding Path=User.Name
                   , Source={x:Static Member=s:Globals.ThisAddIn}}" />

Den namespace s ist erklärte an der Oberseite von die folgende Zeile ein:

xmlns:s="clr-namespace:ConsoleApplication16.Model"

Fand ich eine Menge verschiedener Ansätze, wie Sie beziehen sich auf die statische Eigenschaft in XAML, aber keiner von Ihnen arbeitete außer für diese, die auch scheint die logischste für mich. Einige Proben habe ich gefunden, nicht verwenden Pfad oder Mitglied überhaupt.

Nach einigen Tests habe ich den richtigen Weg gefunden, dies zu tun, ist mit "x:Static-Member" um die Klasse zu definieren und die statische Eigenschaft, die Sie verwenden möchten, während der Pfad definiert die richtigen Eigenschaften in diesem Objekt, genauso wie eine normale Bindung tun würde.

Obwohl diese Lösung kompiliert ohne jegliche Beschwerden, eine XAMLParseException öffnet sich direkt mir zu sagen, dass die StaticExtension Wert nicht aufgelöst werden kann, um eine enumeration, statische Feld oder die statische Eigenschaft.

  • Wie ist das genau die right way wenn es eine exception wirft?
  • Auch Sie sollten in der Lage sein, um die drop Path= und Member= denn das aufrufen der jeweiligen contructors, die entsprechende Eigenschaften festlegen.
  • Ich in der Regel binden statische Klassen/Eigenschaften, die mit {Binding Source={x:Static local:MyStaticClass.SomeStaticProperty.PropertyName}. Nur sicher sein, Ihre Eigenschaften müssen get/set Beisitzer. Zum Beispiel werden Sie sicher, dass Sie public string PropertyName { get; set; } statt public string PropertyName;
  • Das wird sicher nicht funktionieren, da x:Static hat eine Feste syntax ns:Class.Property.
  • Du hast Recht, ich bin nicht sicher, warum ich die PropertyName dort. {Binding PropertyName, Source={x:Static local:MyStaticClass.SomeStaticProperty}
  • Was machen die Klassen Aussehen? Der XAML-Code sieht gut aus.
  • "keiner von Ihnen arbeitete außer diesem einen Pfad definiert, der die richtigen Eigenschaften in diesem Objekt" -- Sorry, aber das ist Unsinn. StaticExtension nicht über eine Path-Eigenschaft, und verlassen Mitglied= funktioniert, weil dann der Wert, den Sie bieten, ist ein argument für den Konstruktor von StaticExtension, die stellt nur Mitglied, um es. Es hilft, die Dokumentation zu Lesen, anstatt nur versuchen zufällige Dinge. "kompiliert ohne jegliche Beschwerden, eine XAMLParseException erscheint direkt" -- du hast dir selbst widersprochen.

InformationsquelleAutor Roper | 2012-03-19
Schreibe einen Kommentar