Voici un grand nombre de fonctionnalités cachées discutées pour une variété de langues. Maintenant, je suis curieux de connaître certaines fonctionnalités cachées de XAML et WPF?
Un que j'ai trouvé est l'événement de clic d'en-tête d'un ListView
<ListView x:Name='lv'
Height="150"
GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler">
La propriété GridViewColumnHeader.Click n'est pas répertoriée.
Certaines des fonctionnalités pertinentes à ce jour:
Voir également:
- Fonctionnalités cachées de C #
- Fonctionnalités cachées de Python
- Fonctionnalités cachées d'ASP.NET
- Fonctionnalités cachées de Perl
- Fonctionnalités cachées de Java
- Fonctionnalités cachées de VB.NET
- Fonctionnalités cachées de PHP
- Fonctionnalités cachées de Ruby
- Fonctionnalités cachées de C
- Etc........
wpf
xaml
hidden-features
Sauron
la source
la source
Réponses:
Multibinding (combiné avec StringFormat):
la source
Il existe également une astuce PresentationTraceSources.TraceLevel pour déboguer ce qui se passe avec les liaisons dans un scénario particulier. Tout ce que vous avez à faire est de référencer l'espace de noms System.Diagnostics dans l'assembly WindowsBase
puis ajoutez ce qui suit à l'expression de liaison:
Le journal sera comme ceci:
la source
3.5sp1 a introduit TargetNullValue dans les liaisons. Cela définira la propriété liée à Null si la valeur est entrée et si votre propriété est Null, elle affichera cette valeur.
la source
3.5sp1 a introduit StringFormat dans les expressions de liaison, par exemple
la source
Text={Binding Date, StringFormat='{}{0:MM/dd/yyyy}'}"
Parfois, vous obtenez une chaîne trop longue pour être affichée sur l'étiquette. Dans ce cas, nous pouvons utiliser la
TextTrimming
propriété deTextBlock
pour afficher les ellipsesLien MSDN
la source
Ajout d'un effet Aero à la fenêtre
la source
Génériques en XAML avec x: TypeArguments
Si vous souhaitez utiliser un ObservableCollection en XAML, vous devez créer un type qui dérive de ObservableCollection car vous ne pouvez pas le déclarer en XAML. Avec XAML 2009, vous pouvez utiliser l'attribut x: TypeArguments pour définir le type d'un type générique.
la source
Afficher l'info-bulle sur un contrôle désactivé
Wpf permet d'afficher une info-bulle sur un contrôle, s'il est à l'état désactivé.
Par exemple
la source
Utilisation de constructeurs non par défaut avec x: Arguments
Dans XAML 2006, les objets doivent avoir un constructeur par défaut public pour les utiliser. Dans XAML 2009, vous pouvez transmettre des arguments de constructeur à l'aide de la syntaxe x: Arguments.
la source
Pas vraiment une fonctionnalité cachée mais avec WPF / XAML, vous obtenez Bea Stollnitz et Josh Smith . Reine et roi de la programmation WPF / XAML.
la source
Les extensions de balisage et les propriétés attachées sont mes fonctionnalités préférées, elles vous permettent d'étendre le «vocabulaire» XAML d'une manière très élégante.
Extensions de balisage
Propriétés attachées
Source pour GridViewSort (btw, il utilise l'
GridViewColumnHeader.Click
événement mentionné par Ortus)la source
WinUtil.EnableAeroGlass
disponible quelque part?Vous pouvez faire référence à des types imbriqués en XAML à l'aide du signe plus (
+
). Par exemple, si nous avions cette classe:Nous pourrions faire référence
SomeValue
en XAML en utilisant la syntaxe suivante:Cette syntaxe n'est pas documentée sur MSDN et n'est pas officiellement prise en charge. Quelqu'un a posé des questions à ce sujet sur les forums MSDN, et apparemment cela brise le concepteur WPF de VS2010. Il a été signalé sur Microsoft Connect.
la source
Partage de la taille de la grille ( voici un bon exemple). En bref, vous pouvez avoir des colonnes de grille et des lignes de taille de partage, même sur différentes grilles. Ce sera inestimable pour toutes les personnes qui utilisent DataGrids sans avoir besoin de modifier les données en place.
la source
PriorityBinding . Vous permet d'utiliser les liaisons asynchrones dans un ordre "premier arrivé, premier spectacle":
la source
Utilisation de méthodes statiques d'usine avec x: FactoryMethod
Lorsque vous avez un type qui n'a pas de constructeur public mais une méthode de fabrique statique, vous deviez créer ce type dans le code en XAML 2006. Avec XAML 2009, vous pouvez utiliser l'attribut x: FactoryMethodx: Arguments pour transmettre les valeurs d'argument.
la source
Propriétés avancées de "légende"
Une autre chose qui n'est pas très claire est le contenu de certaines propriétés auxquelles nous sommes habitués ne contenant que du texte. Si la propriété d'un élément GUI est de type Object, il est très probable que vous puissiez, au lieu de simplement définir le texte, ajouter un panneau de votre besoin qui comprend un ensemble de contrôles.
Un exemple de ceci est le MenuItem, où la
Header
propriété (qui ne contient normalement que du texte) peut contenir un ensemble d'éléments d'interface graphique enveloppés dans un contrôle de panneau (ou juste un élément d'interface graphique si vous n'en avez besoin que d'un seul).Notez également la
Icon
propriété sur le MenuItem. Celui-ci contient normalement un élément Image, mais il peut également contenir n'importe quoi!la source
Convertisseurs XAML
La liste suivante répertorie les convertisseurs développés par la communauté WPF pour convertir différents formats en XAML ou vice versa.
Plug-in d'exportation XAML d'Adobe Illustrator
Convertisseur Adobe Photoshop vers XAML
Plugin d'exportation XAML de Blender
Plug-in d'exportation Lightwave XAML
Exportation Visio XAML
Convertisseur 3D Studio Max vers XAML
Convertisseur Maya vers XAML
Convertisseur Flash vers XAML
Convertisseur SVG vers XAML
Convertisseur WMF / EMF vers XAML
la source
Types intégrés
Si vous souhaitez ajouter des objets de types simples tels que string ou double à un dictionnaire de ressources, vous devez aujourd'hui mapper les espaces de noms clr nécessaires à des espaces de noms XML. Dans XAML 2009, nous avons beaucoup de types simples qui sont inclus dans le langage XAML.
Les types suivants sont inclus dans le langage XAML:
la source
Références d'objets faciles avec {x: Reference}
Si vous souhaitez créer une référence d'objet aujourd'hui, vous devez effectuer une liaison de données et déclarer la source avec un ElementName. Dans XAML 2009, vous pouvez utiliser la nouvelle extension de balisage {x: Reference}
la source
x:Reference
s'agit d'une fonctionnalité de langage XAML 2009, il existe certains scénarios dans lesquels elle fonctionnera également en XAML compilé. Cependant, cela ne fonctionne pas partout et peut casser la vue du concepteur XAML.Utilisation des couleurs du système
la source
Prise en charge des clés de dictionnaire arbitraires
Dans XAML 2006, toutes les valeurs x: Key explicites étaient traitées comme des chaînes. Dans XAML 2009, vous pouvez définir n'importe quel type de clé que vous aimez en écrivant la clé dans ElementSyntax.
la source
Définir une ValidationError par code
Un ValidatioRule dans un BindingExpression se déclenche uniquement lorsque le côté cible de la liaison change. Si vous souhaitez définir une erreur de validation par code, vous pouvez utiliser l'extrait de code suivant.
Définir l'erreur de validation
Effacer l'erreur de validation
la source
La possibilité de farcir des UIElement (s) dans un TextBlock
Je ne sais pas à quel point c'est utile (cela se qualifie comme caché) ... mais cela m'a certainement pris au dépourvu lorsque je l'ai rencontré pour la première fois :
Vous pourriez argumenter que le xaml suivant pourrait être utile (c'est-à-dire mettre un graphique à la fin d'un texte):
Le xaml ci-dessus se présente comme suit:
la source
Débogage des animations
Erreurs courantes
Si vous obtenez l'erreur suivante: Impossible d'animer «(0). (1)» sur une instance d'objet immuable. il se peut que vous soyez confronté à l'une des limitations suivantes:
la source
Liaison sans INotifyPropertyChanged ou DependencyProperties
Comme indiqué ici, vous pouvez lier une propriété d'objet CLR simple sans INotifyPropertyChanged, et cela fonctionnera simplement .
Voici le Forumpost auquel je fais référence.
Citation:
Voici un autre excellent article détaillé sur le sujet.
la source