Hier finden Sie eine große Anzahl versteckter Funktionen, die für verschiedene Sprachen erläutert werden. Jetzt bin ich neugierig auf einige versteckte Funktionen von XAML und WPF?
Eines, das ich gefunden habe, ist das Header-Klick-Ereignis einer ListView
<ListView x:Name='lv'
Height="150"
GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler">
Die GridViewColumnHeader.Click-Eigenschaft ist nicht aufgeführt.
Einige der bisher relevanten Funktionen:
Siehe auch:
- Versteckte Funktionen von C #
- Versteckte Funktionen von Python
- Versteckte Funktionen von ASP.NET
- Versteckte Funktionen von Perl
- Versteckte Funktionen von Java
- Versteckte Funktionen von VB.NET
- Versteckte Funktionen von PHP
- Versteckte Funktionen von Ruby
- Versteckte Funktionen von C.
- Und so weiter........
wpf
xaml
hidden-features
Sauron
quelle
quelle
Antworten:
Multibinding (kombiniert mit StringFormat):
quelle
Es gibt auch den PresentationTraceSources.TraceLevel-Trick, um zu debuggen, was mit Bindungen in einem bestimmten Szenario passiert. Sie müssen lediglich auf den System.Diagnostics-Namespace in der WindowsBase-Assembly verweisen
und fügen Sie dann dem Bindungsausdruck Folgendes hinzu:
Das Protokoll sieht folgendermaßen aus:
quelle
3.5sp1 führte TargetNullValue in Bindungen ein. Dadurch wird die gebundene Eigenschaft auf Null gesetzt, wenn der Wert eingegeben wird. Wenn Ihre Eigenschaft Null ist, wird dieser Wert angezeigt.
quelle
3.5sp1 führte StringFormat in Bindungsausdrücke ein, z
quelle
Text={Binding Date, StringFormat='{}{0:MM/dd/yyyy}'}"
Manchmal erhalten Sie eine Zeichenfolge, die zu lang ist, um auf dem Etikett angezeigt zu werden. In diesem Fall können wir die
TextTrimming
Eigenschaft von verwendenTextBlock
, um Ellipsen anzuzeigenMSDN Link
quelle
Hinzufügen eines Aero-Effekts zum Fenster
quelle
Generika in XAML mit x: TypeArguments
Wenn Sie eine ObservableCollection in XAML verwenden möchten, müssen Sie einen Typ erstellen, der von ObservableCollection abgeleitet ist, da Sie ihn in XAML nicht deklarieren können. Mit XAML 2009 können Sie das Attribut x: TypeArguments verwenden, um den Typ eines generischen Typs zu definieren.
quelle
Tooltip auf einem deaktivierten Steuerelement anzeigen
Mit Wpf kann der Tooltip für ein Steuerelement angezeigt werden, wenn es deaktiviert ist.
Beispielsweise
quelle
Verwendung von Nicht-Standardkonstruktoren mit x: Argumenten
In XAML 2006 müssen Objekte über einen öffentlichen Standardkonstruktor verfügen, um sie verwenden zu können. In XAML 2009 können Sie Konstruktorargumente mithilfe der Syntax x: Arguments übergeben.
quelle
Nicht wirklich eine versteckte Funktion, aber mit WPF / XAML erhalten Sie Bea Stollnitz und Josh Smith . Königin und König der WPF / XAML-Programmierung.
quelle
Markup-Erweiterungen und angehängte Eigenschaften sind meine Lieblingsfunktionen. Sie ermöglichen es Ihnen, das "Vokabular" von XAML auf sehr elegante Weise zu erweitern.
Markup-Erweiterungen
Angehängte Eigenschaften
Quelle für GridViewSort (übrigens verwendet es das
GridViewColumnHeader.Click
von Ortus erwähnte Ereignis)quelle
WinUtil.EnableAeroGlass
irgendwo verfügbar?Sie können mit dem Pluszeichen (
+
) auf verschachtelte Typen in XAML verweisen . Wenn wir zum Beispiel diese Klasse hätten:Wir könnten
SomeValue
in XAML mit der folgenden Syntax verweisen :Diese Syntax ist in MSDN nicht dokumentiert und wird nicht offiziell unterstützt. Jemand hat in den MSDN-Foren danach gefragt , und anscheinend bricht es den WPF-Designer von VS2010. Es ist berichtet worden , auf Microsoft Connect.
quelle
Teilen der Rastergröße ( hier ein gutes Beispiel). Kurz gesagt, Sie können Rasterspalten und -zeilen auch über verschiedene Raster hinweg gemeinsam nutzen. Dies ist von unschätzbarem Wert für alle Personen, die DataGrids verwenden, ohne die vorhandenen Daten bearbeiten zu müssen.
quelle
PriorityBinding . Ermöglicht die Verwendung von Asyn-Bindungen in der Reihenfolge "Wer zuerst kommt, mahlt zuerst":
quelle
Verwendung statischer Factory-Methoden mit x: FactoryMethod
Wenn Sie einen Typ haben, der keinen öffentlichen Konstruktor, sondern eine statische Factory-Methode hat, mussten Sie diesen Typ in XAML 2006 im Code erstellen. Mit XAML 2009 können Sie das Attribut x: FactoryMethodx: Arguments verwenden, um die Argumentwerte zu übergeben.
quelle
Erweiterte "Beschriftung" -Eigenschaften
Eine andere Sache, die nicht sehr klar ist, ist der Inhalt einiger Eigenschaften, die wir gewohnt sind, nur Text zu enthalten. Wenn die Eigenschaft eines GUI-Elements vom Typ Objekt ist, können Sie sehr wahrscheinlich, anstatt nur den Text festzulegen, ein Bedienfeld hinzufügen, das eine Reihe von Steuerelementen enthält.
Ein Beispiel hierfür ist das MenuItem, bei dem die
Header
Eigenschaft (die normalerweise nur Text enthält) eine Reihe von GUI-Elementen enthalten kann, die in ein Bedienfeld eingeschlossen sind (oder nur ein GUI-Element, wenn Sie nur eines benötigen).Beachten Sie auch die
Icon
Eigenschaft im MenuItem. Dies enthält normalerweise ein Image-Element, kann aber auch alles enthalten!quelle
XAML-Konverter
Die folgende Liste zeigt Konverter, die von der WPF-Community entwickelt wurden, um verschiedene Formate in XAML zu konvertieren oder umgekehrt.
Adobe Illustrator XAML-Export-Plugin
Adobe Photoshop zu XAML Converter
Blender XAML Export Plugin
Lightwave XAML Export Plugin
Visio XAML Export
3D Studio Max zu XAML Konverter
Maya zu XAML Konverter
Flash to XAML Converter
SVG zu XAML Konverter
WMF / EMF zu XAML Konverter
quelle
Eingebaute Typen
Wenn Sie einem Ressourcenwörterbuch heute Objekte einfacher Typen wie Zeichenfolge oder Doppel hinzufügen möchten, müssen Sie die erforderlichen CLR-Namespaces einem XML-Namespace zuordnen. In XAML 2009 gibt es viele einfache Typen, die in der XAML-Sprache enthalten sind.
Die folgenden Typen sind in der XAML-Sprache enthalten:
quelle
Einfache Objektreferenzen mit {x: Referenz}
Wenn Sie heute eine Objektreferenz erstellen möchten, müssen Sie eine Datenbindung durchführen und die Quelle mit einem Elementnamen deklarieren. In XAML 2009 können Sie die neue Markup-Erweiterung {x: Reference} verwenden
quelle
x:Reference
um eine XAML 2009-Sprachfunktion handelt, es jedoch einige Szenarien gibt, in denen sie auch in kompiliertem XAML funktioniert. Es funktioniert jedoch nicht überall und kann die XAML-Designeransicht beschädigen.Verwendung von Systemfarben
quelle
Unterstützung für beliebige Wörterbuchschlüssel
In XAML 2006 wurden alle expliziten x: Key-Werte als Zeichenfolgen behandelt. In XAML 2009 können Sie einen beliebigen Schlüsseltyp definieren, indem Sie den Schlüssel in ElementSyntax schreiben.
quelle
Legen Sie einen ValidationError nach Code fest
Eine ValidatioRule in einer BindingExpression wird nur ausgelöst, wenn sich die Zielseite der Bindung ändert. Wenn Sie einen Validierungsfehler anhand des Codes festlegen möchten, können Sie das folgende Snippet verwenden.
Stellen Sie den Validierungsfehler ein
Löschen Sie den Validierungsfehler
quelle
Die Fähigkeit, UIElement (s) in einen TextBlock zu stopfen
Ich weiß nicht, wie nützlich dies ist (es gilt jedoch als versteckt) ... aber es hat mich sicher überrascht, als ich es zum ersten Mal traf :
Sie könnten argumentieren, dass das folgende xaml nützlich sein könnte (dh eine Grafik am Ende eines Textes einfügen):
Das obige xaml rendert wie folgt:
quelle
Debuggen von Animationen
Häufige Fehler
Wenn die folgende Fehlermeldung angezeigt wird: '(0). (1)' kann auf einer unveränderlichen Objektinstanz nicht animiert werden. Es kann sein, dass Sie auf eine der folgenden Einschränkungen stoßen:
quelle
Bindung ohne INotifyPropertyChanged oder DependencyProperties
Wie hier erläutert , können Sie eine einfache CLR-Objekteigenschaft ohne INotifyPropertyChanged binden, und es funktioniert einfach .
Hier ist der Forumpost, auf den ich mich beziehe.
Zitat:
Hier ist ein weiterer großartiger und detaillierter Artikel zu diesem Thema.
quelle