gpt4 book ai didi

.net - 在鼠标悬停时更改周围边框的样式

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

我有一个 GridBorder周围。将鼠标悬停在 Grid 上,我想更改Border上的样式.我该怎么做呢?这是我尝试过的,到目前为止没有任何成功:

<Border Name="Border" BorderBrush="Transparent" BorderThickness="1" CornerRadius="2">
<Grid>
<Grid.Style>
<Style TargetType="{x:Type Grid}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Border" Property="BorderBrush" Value="#FFB9D7FC" />
</Trigger>
</Style.Triggers>
</Style>
</Grid.Style>

<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>

...
</Grid>
</Border>

在尝试构建此 XAML 时,我收到错误

TargetName property cannot be set on a Style Setter.



但我想不出任何其他方法来做到这一点。帮助将不胜感激。使用任何代码隐藏都是不可能的。

最佳答案

您需要执行以下操作:

  • 从边框定义中删除 BorderBrush。触发器可以覆盖样式中 setter 设置的属性,但不能覆盖标签中直接设置的属性。
  • 将触发器放入边框而不是网格(请参阅其他人提供的示例)。
  • 关于 Grid 上的 HitTest :在网格后面放置一个透明框,以便始终捕获 MouseOver:

  • 第 3 点的代码示例:
    <Grid>
    <Rectangle Fill="Transparent" /><!-- make sure that the mouse is always over "something" -->
    <Grid Name="myGrid">
    <Grid.ColumnDefinitions>
    <ColumnDefinition />
    <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <TextBlock Name="myText">sadasdsa</TextBlock>
    </Grid>
    </Grid>

    关于.net - 在鼠标悬停时更改周围边框的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2145700/

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