我想为我的视图上的一些MenuItem控件的工具提示指定一个模板。我已将以下内容放入资源字典中:
'America/New_York'
然后在其中一个观点中我尝试过使用它:
<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>
起初我尝试过这个,但这也很糟糕:
<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>
那么,如何将我的样式放入资源字典中以便我可以在某些MenuItem上使用它,但不是全部?
答案 0 :(得分:2)
第一种方法的问题是Style.Resources
接受了ResourceDictionary
,但您将其设置为Style
您的第二种方法不起作用,因为您正在将Style
对象应用于ToolTip
属性。因此创建了一个隐式ToolTip
,它试图渲染你的风格。但由于Style
不是UIElement
,
你得到的是一个TextBlock,它的Text
属性设置为从Style.ToString
返回的任何文本,默认情况下是Style
类的名称。
这里最简单的方法是为每个ToolTip
明确创建一个MenuItem
并在那里设置样式。例如:
<MenuItem Background="{x:Null}" Foreground="#FF706C6C" Command="{Binding ViewBugReportingCommand}">
<MenuItem.ToolTip>
<ToolTip Style={StaticResource MenuItemToolTip} Content="Your Tooltip text" />
</MenuItem.ToolTip>
</MenuItem>
另一种选择是将隐式样式添加到MenuItem的Resources
属性,以便它将被应用
到ToolTip
的可视树内的所有MenuItem
。
<MenuItem ToolTip="Hello">
<MenuItem.Resources>
<Style TargetType="{x:Type ToolTip}">
.. setters
</Style>
</MenuItem.Resources>
</MenuItem>
我更喜欢前者,因为它是最简单的。
答案 1 :(得分:1)
您可以使用工具提示控件直接指定工具提示样式:
<MenuItem Background="{x:Null}"
Foreground="#FF706C6C"
Command="{Binding ViewBugReportingCommand}">
<MenuItem.ToolTip>
<ToolTip Style="{StaticResource MenuItemToolTip}" />
</MenuItem.ToolTip>
...
</MenuItem>