gpt4 book ai didi

WPF 子控件的鼠标悬停触发效果

转载 作者:行者123 更新时间:2023-12-03 03:47:49 24 4
gpt4 key购买 nike

假设我有这段代码:

<Window>
<Window.Resources>
<Color x:Key="MyColor"
A="255"
R="152"
G="152"
B="152" />
<DropShadowEffect x:Key="MyEffect"
ShadowDepth="0"
Color="{StaticResource MyColor}"
BlurRadius="10" />
<Style x:Key="MyGridStyle"
TargetType="{x:Type Grid}">
<Setter Property="Height"
Value="200" />
<Setter Property="Width"
Value="200" />
<Style.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Width"
Value="100" />
</Style>
<Style TargetType="{x:Type Image}">
<Setter Property="Height"
Value="100" />
<Setter Property="Width"
Value="100" />
</Style>
</Style.Resources>
<Style.Triggers>
<Trigger Property="IsMouseOver"
Value="true">
<!-- How do I apply my effect when this grid is hovered over to Image and TextBox, but not the grid itself? -->
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid Style="{StaticResource MyGridStyle}">
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Image Grid.Row="0"
Grid.Column="0"
Source="image.png" />
<TextBlock Grid.Row="0"
Grid.Column="0"
Text="Hover Over Me" />
</Grid>
</Window>

基本上,我有一个应用于网格的样式,它表示其中的任何 TextBlock 或图像都应该是特定大小的样式。

我想在网格上创建一个触发器,使效果应用于网格内的所有文本 block 和图像,但不应用于网格本身。

我可以将触发器直接应用于 TextBlock 和/或 Image,但效果仅单独发生在每个元素上。我需要让网格中的任何 TextBlock 和/或图像发生效果,无论我将鼠标悬停在哪个内部子元素上。

谁能帮我解决这个问题吗?

最佳答案

你也可以反过来做。也就是说,将 DataTriggers 添加到 ImageTextBlock 并让它们在祖先 Grid 的 IsMouseOver 上触发.

注意:如果您希望鼠标悬停在 Grid 上时立即触发此效果,您需要将 Background 设置为一个值,例如 透明。默认情况下,Backgroundnull,并且该值不用于 HitTest 。

<Style x:Key="MyGridStyle" TargetType="{x:Type Grid}">
<!--<Setter Property="Background" Value="Transparent"/>-->
<Setter Property="Height" Value="200" />
<Setter Property="Width" Value="200" />
<Style.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Width" Value="200" />
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Grid},
Path=IsMouseOver}" Value="True">
<Setter Property="Effect" Value="{StaticResource MyEffect}"/>
</DataTrigger>
</Style.Triggers>
</Style>
<Style TargetType="{x:Type Image}">
<Setter Property="Height" Value="200" />
<Setter Property="Width" Value="200" />
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=Grid},
Path=IsMouseOver}" Value="True">
<Setter Property="Effect" Value="{StaticResource MyEffect}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Style.Resources>
</Style>

关于WPF 子控件的鼠标悬停触发效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7666836/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com