Dans une application WPF, j'ai un contrôle personnalisé. Je voudrais que l'info-bulle pour les objets, dérivés de ce contrôle personnalisé, dépende de la valeur de l'un des attributs de ce contrôle personnalisé.Est-il possible d'attribuer un texte d'info-bulle (contenant des caractères non latins) dans un modèle de contrôle d'un contrôle personnalisé WPF?
Est-il possible de le déclarer dans un modèle de contrôle de ce contrôle personnalisé?
Quelque chose comme:
<ControlTemplate>
??? // <!--XAML ToolTip declaration -->
...
<ControlTemplate.Triggers>
<Trigger Property="MyProperty" Value="FirstValue">
<Setter ...??? /> // <!--XAML ToolTip text assignment -->
</Trigger>
...
<Trigger Property="MyProperty" Value="SecondValue">
<Setter ...??? /> // <!--XAML ToolTip text assignment -->
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
Modifié (ajouté):
J'ai trouvé la solution:
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
<Condition Property="MyProperty" Value="FirstValue" />
</MultiTrigger.Conditions>
<Setter TargetName="PART_Backgr" Property="ToolTip" Value="Available"/>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
<Condition Property="MyProperty" Value="SecondValue" />
</MultiTrigger.Conditions>
<Setter TargetName="PART_Backgr" Property="ToolTip" Value="Sold"/>
</MultiTrigger>
Il travaille excellent. Mais un problème est resté: En fait Value="Available"
et d'autres telles valeurs devraient contenir des caractères non latins (l'application est localisée en langue russe). Lorsque j'essaie de le compiler avec Value="Свободно"
, je reçois une erreur: 'Caractère invalide dans le codage donné.' XML n'est pas valide.
Quelle solution pourrait être à ce problème? Peut-être que je pourrais changer quelque part l'encodage par lequel la page Generic.xaml compile? Ou changer le code XAML en quelque sorte? (En fait, dans chaque fenêtre j'ai beaucoup de caractères non latins en XAML et tout compile bien, mais, peut-être, le problème est dans la façon dont ils ont utilisé.)
Voir ma mise à jour, je n'obtiens aucune erreur lors de l'utilisation –
Merci Aviad! S'il vous plaît, voir mon nouveau commentaire à votre message – rem