【发布时间】:2020-09-15 04:07:33
【问题描述】:
我有一个 xaml border 元素,它具有 isMouseOver 效果。它基本上将border 上背景的不透明度从0 更改为0.2,这样您就可以明显地看到您悬停在边框上。这是border:
<Style TargetType="{x:Type Border}" x:Key="hoverOver">
<Setter Property="Border.Background" Value="LightGray"/>
<Setter Property="Border.Opacity" Value="0"/>
<Style.Triggers>
<Trigger Property="Border.IsMouseOver" Value="True">
<Setter Property="Border.Opacity" Value="0.2"/>
</Trigger>
</Style.Triggers>
</Style>
<Border x:Name="border1" Height="50" Width="350" Style="{StaticResource hoverOver}"/>
注意:确保您看到边框的不透明度是在样式中设置的,而不是在元素本身中设置的。这很重要。
在我的代码中,用户“选择”了边框(例如,我通过调用 border1.opacity = 0.2 为元素的不透明度设置了一个永久值)。现在在元素中设置了不透明度值,即使我设置了border1.opacity = 0,样式也不再起作用。
您可以通过设置边框的不透明度来亲自尝试。当您将鼠标悬停在它上面时,它不会做任何事情,因为您在元素中设置了不透明度而不是样式。只要您在元素中设置值,样式就不会更改它。
如何“取消设置”该值并从 border 中删除不透明度值,让样式再次影响不透明度?
【问题讨论】:
标签: c# wpf xaml border styling