2010-08-05 2 views
6

Dans mon application Silverlight 4, j'ai de longues infobulles. Par défaut, ces info-bulles apparaissent sur une très longue ligne. Par exemple:Comment activer le retour à la ligne pour toutes les info-bulles dans Silverlight 4?

 <TextBox Text="Test1" 
     ToolTipService.ToolTip="One tasdg asdg as da sdg asdg asdg asdg asd gas dg a sdg a sdg a sd a sd g asdasdgasdg sadgasdgasdg asdg asdg asd as a sd g a sdg  asd g asd g asd g asdgasdg  asdgasdg"/> 

Ce que je voudrais faire est de rendre les infobulles enrouler autour d'apparaître sur plusieurs lignes. Une façon d'y parvenir est de définir l'info-bulle à l'aide d'un TextBlock. Par exemple:

 <TextBox Text="Test2"> 
     <ToolTipService.ToolTip> 
      <TextBlock TextWrapping="Wrap" Width="200" Text="One tasdg asdg as da sdg asdg asdg asdg asd gas dg a sdg a sdg a sd a sd g asdasdgasdg sadgasdgasdg asdg asdg asd as a sd g a sdg  asd g asd g asd g asdgasdg  asdgasdg"/>    
     </ToolTipService.ToolTip> 
    </TextBox> 

Avoir à faire pour chaque contrôle que je veux définir une info-bulle semble comme beaucoup de travail supplémentaire. Idéalement, ce que je voudrais faire est de définir les infobulles comme des chaînes comme le premier exemple, et ensuite avoir un style globalement appliqué à toutes les info-bulles, ce qui rendrait les info-bulles enveloppantes. Donc, dans mon App.xaml, je définirais quelque chose comme ceci:

 <Style TargetType="ToolTip"> 
     <!-- Somehow make all tooltips wrap at a width of 200 --> 
    </Style> 

Des conseils sur la façon dont je pourrais le faire de cela?

Répondre

14

Vous pouvez créer un style implicite pour l'info-bulle et définir le modèle de contenu sur un objet approprié, par exemple.

<Style TargetType="ToolTip"> 
    <Setter Property="ContentTemplate"> 
     <Setter.Value> 
      <DataTemplate> 
       <TextBlock TextWrapping="Wrap" Width="200" Text="{Binding}" /> 
      </DataTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 

vous pouvez utiliser quelque chose comme:

<TextBox Text="Test2" ToolTipService.ToolTip="abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg abcdefg " /> 
+1

Parfait! Merci Steve, c'était juste ce que je cherchais. Une modification mineure que j'ai apportée à cette solution consistait à utiliser MaxWidth plutôt que Width, ce qui permet de donner à l'info-bulle la bonne taille. –

Questions connexes