鉴于我有一个控制从什么地方叫SomeControl
窗口样式的资源不覆盖用户控件属性时,应当出示
在MyUserControl.xaml我用SomeControl
像这样:
<Grid.Resources>
<Window.Resources>
<Style TargetType="local:SomeControl">
<Setter Property="ToolTip">
<Setter.Value>
<ToolTip>
<TextBlock Text="FOO"/>
</ToolTip>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
</Grid.Resources>
<Grid>
<!-- Others controls in here -->
<local:SomeControl />
</Grid>
在Window.xaml:
<Window.Resources>
<Style TargetType="local:SomeControl">
<Setter Property="ToolTip">
<Setter.Value>
<ToolTip>
<TextBlock Text="BAR"/>
</ToolTip>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<local:MyUserControl />
</Grid>
结果是当我想让它显示Bar
时,它会显示Foo
。 如果我从UserControl中删除工具提示,就会使用Window的样式,并且它会像我期望的那样显示Bar
。
为什么Window样式不存在时覆盖UserControl显式ToolTip属性,但在删除时会如何?
为了记录,我也尝试更改MyUserControl以使用名称相同的x:Key
的DynamicResource并且没有任何影响。
将两者都更改为ToolTipService.ToolTip也具有相同的结果。
编辑:我修正了这个例子,说明即使ToolTip没有在本地级别上设置,它仍然不会覆盖样式。
为什么您的样式是针对SomeControl的,但您的控件名为MyUserControl? – SledgeHammer
因为用户控件内部的类型是'SomeControl'。我没有试图定位'MyUserControl',我试图定位'SomeControl'。 'Window'有一个'UserControl',它有一个'SomeControl'工具提示在'SomeControl'上,而不是'UserControl' – user99999991