2016-04-18 6 views
1

Ich möchte eine Vorlage für die QuickInfos einiger MenuItem-Steuerelemente in meinen Ansichten angeben. Ich habe folgende in ein Ressourcenverzeichnis setzen:Ich möchte einen Style für einen Tooltip auf einigen MenuItems angeben können, wie mache ich das?

<Style TargetType="{x:Type ToolTip}" x:Key="MenuItemToolTip"> 
<Setter Property="OverridesDefaultStyle" Value="True" /> 
<Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="ToolTip"> 
      <HeaderedContentControl> 
       <HeaderedContentControl.Header> 
        <TextBlock FontSize="20" Background="#2288C6" Foreground="White" Padding="3">Click to report a bug</TextBlock> 
       </HeaderedContentControl.Header> 
       <HeaderedContentControl.Content> 
        <StackPanel> 
         <TextBlock Margin="0,5">Please do <Run FontWeight="Bold">not</Run> change the send To email address.</TextBlock> 
         <TextBlock>Also, leave the <Run FontStyle="Italic">BUG: BOTS</Run> in the subject line alone.</TextBlock> 
         <!-- more text blocks, but removed for brevity --> 
        </StackPanel> 
       </HeaderedContentControl.Content> 
      </HeaderedContentControl> 
     </ControlTemplate> 
    </Setter.Value> 
</Setter> 

Dann in einer der Ansichten, die ich versucht habe, mit ihm wie so:

<MenuItem Background="{x:Null}" Foreground="#FF706C6C" Command="{Binding ViewBugReportingCommand}"> 
<MenuItem.Style> 
    <Style Resources="{StaticResource MenuItemToolTip}" /> 
</MenuItem.Style> 
<MenuItem.Header> 
    <Path Data="{StaticResource BugIconData}" 
      Stretch="Uniform" 
      Fill="#77000000" 
      Width="20" 
      RenderTransformOrigin="0.25,0.25" 
      Height="20" /> 
</MenuItem.Header> 

Anfängen Ich habe das versucht, aber das war genauso schlimm:

<MenuItem Background="{x:Null}" Foreground="#FF706C6C" Command="{Binding ViewBugReportingCommand}" ToolTip="{StaticResource MenuItemToolTip}"> 
<MenuItem.Header> 
    <Path Data="{StaticResource BugIconData}" 
      Stretch="Uniform" 
      Fill="#77000000" 
      Width="20" 
      RenderTransformOrigin="0.25,0.25" 
      Height="20" /> 
</MenuItem.Header> 

Also, wie bekomme ich meinen Stil in ein Ressourcenwörterbuch, so dass ich es auf einigen MenuItems verwenden kann, aber nicht alle?

+0

Erstellen Sie den Tooltip und setzen Sie den Stil auf den Tooltip – Paparazzi

Antwort

2

Das Problem mit dem ersten Ansatz ist, dass Style.Resources eine ResourceDictionary akzeptiert, aber Sie es zu einem Style

setzen Ihr zweiter Ansatz funktioniert nicht, da Sie ein Objekt Style auf der ToolTip-Eigenschaft anwenden. So wird eine implizite ToolTip erstellt, die versucht, Ihren Stil zu rendern. Aber seit Style ist kein UIElement, was Sie erhalten, ist ein TextBlock mit seiner Text -Eigenschaft auf den Text eingestellt, der von Style.ToString zurückgegeben wird, der der Name der Style-Klasse standardmäßig ist.

Der einfachste Weg hier wäre, explizit eine ToolTip für jede Ihrer MenuItem s zu erstellen und die Stile dort festzulegen. Zum Beispiel:

<MenuItem Background="{x:Null}" Foreground="#FF706C6C" Command="{Binding ViewBugReportingCommand}"> 
    <MenuItem.ToolTip> 
     <ToolTip Style={StaticResource MenuItemToolTip} Content="Your Tooltip text" /> 
    </MenuItem.ToolTip> 
</MenuItem> 

Eines andere Möglichkeit wäre einen impliziten Stil auf die Resources Eigenschaft des MenuItem hinzufügen, so dass es all ToolTip s innerhalb der visuellen Struktur der MenuItem angewandt wird.

Ich bevorzuge das ehemalige, weil es das einfachste ist.

+0

Vielen Dank für die Erklärung, was passiert und warum, was Sie vorgeschlagen haben, würde funktionieren. – Rod

1

Sie den Tooltip-Stil direkt unter Verwendung des Tooltip-Steuerelement wie folgt angeben:

<MenuItem Background="{x:Null}" 
      Foreground="#FF706C6C" 
      Command="{Binding ViewBugReportingCommand}"> 
    <MenuItem.ToolTip> 
     <ToolTip Style="{StaticResource MenuItemToolTip}" /> 
    </MenuItem.ToolTip> 
    ... 
</MenuItem> 
Verwandte Themen