Wpf 将文本块的前景设置为按钮';使用IsMouseOver的s内容
我希望当鼠标位于按钮/textblock上时,textblock的前景发生变化。我尝试过这个方法,但不起作用:Wpf 将文本块的前景设置为按钮';使用IsMouseOver的s内容,wpf,xaml,controltemplate,Wpf,Xaml,Controltemplate,我希望当鼠标位于按钮/textblock上时,textblock的前景发生变化。我尝试过这个方法,但不起作用: <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding Header}"/> <Button Style="{StaticResource {x:Static ToolBar.ButtonStyleKey
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Header}"/>
<Button Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"
Margin="5,-3,0, 0"
Visibility="{Binding IsCloseButtonVisible}"
Command="{Binding CloseSelectedTabCommand}">
<Button.Content>
<TextBlock Text="x" Foreground="LightGray">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Button.Content>
</Button>
</StackPanel>
</DataTemplate>
您需要在样式中设置前景,而不是在文本块中设置前景才能使其工作
<TextBlock Text="HelloWorld ">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="LightGray"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
是的,因为根据依赖属性值优先级,局部值的优先级总是高于其他值。啊!!!我花了很长时间在这件事上,甚至没有注意到我把前景设定在了风格之外。。。