2010-08-05 17 views
6

在我的Silverlight 4應用程序中,我有一些很長的工具提示。默認情況下,這些工具提示會出現一條很長的線。例如:如何打開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"/> 

我想要做的是使工具提示環繞出現在多行上。實現這一點的一種方法是使用TextBlock定義工具提示。例如:

 <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> 

必須爲我想要定義工具提示的每個控件執行此操作看起來像是很多額外的工作。理想情況下,我想要做的是將工具提示定義爲第一個示例的字符串,然後將全局樣式應用於所有工具提示,這將使工具提示環繞。因此,在我的App.xaml中,我將定義如下:

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

有關如何執行此操作的任何建議?

回答

14

您可以爲工具提示創建隱式樣式,並將內容模板設置爲適合的內容 - 例如,

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

然後你可以使用類似:

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

完美!謝謝史蒂夫,那正是我所期待的。我對這個解決方案做的一個小改動是使用MaxWidth而不是Width,這有助於使工具提示的大小適當。 – 2010-08-05 23:12:31

相關問題