2014-04-03 87 views
1

我正在SilverLight 5中設計自己的工具提示,並且在顯示時需要將多個值傳遞給它。具有多個內容屬性的工具提示控制

這裏的風格:

<Style x:Key="TooltipStyle" TargetType="ToolTip"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ToolTip"> 
        <Border BorderBrush="Blue" BorderThickness="2" Background="White"> 
         <Grid> 
          <Grid.RowDefinitions> 
           <RowDefinition Height="Auto"/> 
           <RowDefinition Height="Auto"/> 
          </Grid.RowDefinitions> 

          <StackPanel Orientation="Horizontal"> 

           <TextBlock Text="Var Number: "></TextBlock> 

           <ContentPresenter x:Name="Content1" 
               Content="{TemplateBinding Content}" 
               HorizontalAlignment="Center" 
               VerticalAlignment="Center"/> 
          </StackPanel> 

          <StackPanel Grid.Row="1"> 
           <TextBlock Text="Last Update Date: " /> 

           <ContentPresenter x:Name="Content2" 
                Content="{TemplateBinding Content}" 
                HorizontalAlignment="Center" 
                VerticalAlignment="Center"/> 

          </StackPanel> 
         </Grid> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

我申請的風格像這樣:

    var customTooltip = new ToolTip 
        { 
         Style = (Style)Resources["TooltipStyle"], 
         Content = questions.Number[c] 
        }; 

        ToolTipService.SetToolTip(textbox, customTooltip); 

只有一個「內容」屬性,但我需要傳遞的東西「內容2 '以及。 (請注意,當我們做'for'循環時收集內容。)

因此,出現的圖像,而不是有一個變量,可以同時具有Var編號和Last Update日期。聲望太低,以張貼圖像,這裏是最後看的工具提示給你一個想法: http://imgur.com/HYBbXMN

這就是這種情況。

現在我想知道是否可以公開第二個內容屬性?或者也許有更聰明更好的方式來設計工具提示以滿足我的需求?

請注意,此示例需要顯示兩個值(或「內容」),但工具提示會擴展爲需要更多。

我會欣賞任何想法。

回答

0

所以爲了讓你更容易在ya上,我個人只是利用已經可用於這種類型的東西。就像例如使用Tag將這種事情背上模板一樣。

一個例子(對於setter和一些你可能想要省略或改變的東西);

<Style x:Key="NiftyToolTipStyle" TargetType="ToolTip"> 
     <Setter Property="FontFamily" Value="{StaticResource FontFamily}" /> 
     <Setter Property="FontSize" Value="{StaticResource FontSize}" /> 
     <Setter Property="Foreground" Value="Black" /> 
     <Setter Property="Background" Value="White" /> 
     <Setter Property="Padding" Value="3" /> 
     <Setter Property="BorderThickness" Value="1,2" /> 
     <Setter Property="BorderBrush" Value="Blue" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="ToolTip"> 
        <Border x:Name="Root" 
          Background="{TemplateBinding Background}" 
          BorderBrush="{TemplateBinding BorderBrush}" 
          BorderThickness="{TemplateBinding BorderThickness}" 
          CornerRadius="1" 
          Padding="{TemplateBinding Padding}" 
          Cursor="{TemplateBinding Cursor}"> 
          <Border.Effect> 
           <DropShadowEffect Opacity="0.35" ShadowDepth="3" /> 
          </Border.Effect> 
          <TextBlock> 
           <Run Text="{TemplateBinding Tag, StringFormat='Var Number: \{\0}'}"/> 
           <LineBreak/> 
           <Run Text="{TemplateBinding Content, StringFormat='Last Update Date: \{\0}'}"/> 
          </TextBlock> 
          <!-- 
          <ContentPresenter Margin="{TemplateBinding Padding}" 
               Content="{TemplateBinding Content}" 
               ContentTemplate="{TemplateBinding ContentTemplate}" 
               Cursor="{TemplateBinding Cursor}" /> 
          --> 
        </Border> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter>   
    </Style> 

這樣你可以在一個價值只是傳遞到Content,另一個Tag,你是好。你也可以輕鬆地做其他事情,有多種選擇。希望這有助於,乾杯