Je ne copierai pas / coller tout mon fichier XAML. Il sera trop long pour l'expliquer mais voici ce qui est intéressant: j'ai eu une liaison d'une propriété "nom" la chose est que parfois, mon article n'a pas " Nom "Propriété. Ça ne s'écrase pas mais j'ai simplement eu un texte vide dans ma textblock p> ce que je voudrais faire, si le nom est vide, doit être contraigné à "rien", juste {Binding}. Cela affichera mon nom d'objet et il sera parfait! P> Merci d'avance pour toute aide et désolé s'il s'agit d'une question noobie: ( p> p> p>
4 Réponses :
Si vous ne devez pas vous attacher au nom du type d'objet, vous pouvez utiliser TargeNullValue qui vous donnera une valeur par défaut si la propriété liée est NULL, comme ceci:
<TextBlock Text="{Binding Name, TargetNullValue=Default}" />
Avec votre code, j'ai toujours des blocs de texte vide lorsque mes objets n'ont pas de propriété de nom. Je ne sais pas si c'est prévu ou non. À propos du convertisseur, je ne sais pas vraiment, cela me semble surprenant que nous ne le faisons pas simplement dans le fichier XAML!
La liaison de la propriété échouera dans cette situation afin que TargeNullValue ne sera jamais utilisé. Vous ne pouvez pas avoir une valeur nulle pour la cible si vous avez échoué à la cible.
Désolé, je n'ai pas compris que la propriété manquait, je pensais juste que c'était Null ("si le nom est vide"). Ma faute.
FYI, il y a une propriété FallbackValue sur la liaison pour les cas lorsque la liaison elle-même échoue, mais permettant uniquement de revenir à une valeur constante.
Ceci est théorique mais ...
Je créerais un style personnalisé et cible tous vos blocs de texte. Dans votre style, vous pouvez définir une valeur de texte par défaut. Si votre liaison ne remplace pas le style, votre valeur par défaut sera utilisée. P>
Style x:Key="TwitterTextBoxStyle" TargetType="{x:Type TextBox}"> <Setter Property="Text" Value="" />
Je veux que la valeur par défaut soit une autre liaison, pas une valeur statique :(
Vous pouvez appliquer un style avec un Datatrigger code>:
Semble travailler mais je dois savoir quelque chose pour être sûr, quand je viens d'utiliser {Binding}. À quelle propriété le champ est lié?
@Guillaume, {reliure} code> signifie utiliser la valeur de l'actuel DataContext comme valeur à attribuer à la propriété. En d'autres termes, un chemin vide signifie simplement utiliser l'instance d'objet elle-même plutôt que l'une de ses propriétés. Voici une feuille de triche pratique pour la syntaxe de liaison: nbdtech.com/free/wpfbinding.pdfle/a >
@Guillaumecogranne {Binding} se liera à ce que votre contexte de données actuel soit défini sur. Donc, au lieu de se lier à la propriété Nom d'une classe, vous liez la classe contenant la propriété Nom.
Voici ma prochaine et dernière question: Stackoverflow.com/questions / 8244658 / ...
Essayez:
@Guillaume, Dylan a édité la modification de la syntaxe complète; En général,
{BLANDING ...} CODE> L'extension de balisage n'est qu'un raccourci pour créer ces instances de classement code>. Le compilateur XAML fait ensuite une magie de cas spéciale supplémentaire pour réaliser du texte est une dépendanceProperty, de sorte qu'elle permet à la valeur d'être «définie» à une liaison, qu'elle gère en appelant les différentes fonctions de liaison requises pour filer les choses.
Voici ma prochaine question (et finale) :) Stackoverflow. com / questions / 8244658 / ...