2010-01-17 3 views
1

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é.)

+0

Voir ma mise à jour, je n'obtiens aucune erreur lors de l'utilisation

+0

Merci Aviad! S'il vous plaît, voir mon nouveau commentaire à votre message – rem

Répondre

2

Est-ce que cela ne fonctionne pas?

<ControlTemplate.Triggers>      
    <Trigger Property="MyProperty" Value="FirstValue"> 
     <Setter Property="ToolTip" Value="..."/> 
    </Trigger> 
</ControlTempalte.Triggers> 

Pour essayer de répondre à votre autre question, les travaux suivants pour moi sans aucune modification spéciale:

<TextBlock Text="Свободно" ToolTip="Свободно"/> 

Je copié et collé le texte de votre question dans mon code XAML.

+0

Aviad, merci! En fait, vous avez mis votre message pendant que je tapais le mien - ils sont presque similaires. S'il vous plaît, jetez un oeil à mon nouveau problème (dans la question mise à jour) - peut-être que vous pourriez m'aider avec cela aussi. – rem

+0

Et votre suggestion est OK. +1 – rem

+0

Oui, ça marche aussi pour moi. Mais seulement de la manière exacte que vous avez suggéré et dans xaml de la fenêtre wpf générale. Si j'essaie d'utiliser Property = "ToolTip" Value = "Свободно" dans une balise Setter d'un ControlTemplate xaml (fenêtre Generic.xaml), j'obtiens l'erreur mentionnée. – rem