C# 为什么赢了';我的WPF风格触发器是否只能在鼠标位于ScrollViewer上时显示水平滚动条?
我想创建一个ScrollView,当鼠标在其上时仅显示水平滚动条,因此我尝试了以下操作(请注意,当鼠标在其上时,我只是尝试将HorizontalScrollBarVisibility触发为Auto,并预定义了ScrollViewer以禁用HorizontalScrollBarVisibility):C# 为什么赢了';我的WPF风格触发器是否只能在鼠标位于ScrollViewer上时显示水平滚动条?,c#,.net,wpf,xaml,scrollviewer,C#,.net,Wpf,Xaml,Scrollviewer,我想创建一个ScrollView,当鼠标在其上时仅显示水平滚动条,因此我尝试了以下操作(请注意,当鼠标在其上时,我只是尝试将HorizontalScrollBarVisibility触发为Auto,并预定义了ScrollViewer以禁用HorizontalScrollBarVisibility): 不幸的是,这对我不起作用。如何将触发器附加到此对象以使其工作?如果直接设置属性,则它优先于样式,因此在您的情况下样式永远无法修改直接在ScrollViewer上设置的水平滚动条可见性 因此,更改
不幸的是,这对我不起作用。如何将触发器附加到此对象以使其工作?如果直接设置属性,则它优先于
样式
,因此在您的情况下样式
永远无法修改直接在ScrollViewer上设置的水平滚动条可见性
因此,更改将是删除元素上的设置HorizontalScrollBarVisibility=“Disabled”
,而是通过样式设置默认值,并让触发器在应用时修改默认值。当触发器修改元素的属性时,通常最好指定样式
默认值。您可以将默认值设置为隐藏
或禁用
或您选择ofc作为默认值的任何内容
尝试:
如果直接设置属性,则它优先于样式
,因此在您的情况下样式
永远无法修改直接在滚动查看器
上设置的水平滚动条可见性
因此,更改将是删除元素上的设置HorizontalScrollBarVisibility=“Disabled”
,而是通过样式设置默认值,并让触发器在应用时修改默认值。当触发器修改元素的属性时,通常最好指定样式
默认值。您可以将默认值设置为隐藏
或禁用
或您选择ofc作为默认值的任何内容
尝试:
实现此功能最简单的方法可能是从scrollviewer中删除HorizontalScrollBarVisibility=“Disabled”,并在样式中添加两种状态
<Style x:Key="Triggers" TargetType="ScrollViewer">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="HorizontalScrollBarVisibility" Value="Visible"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="false">
<Setter Property="HorizontalScrollBarVisibility" Value="Disabled"/>
</Trigger>
</Style.Triggers>
</Style>
这应该会给您带来您想要的效果。实现这一点最简单的方法可能是从scrollviewer中删除HorizontalScrollBarVisibility=“Disabled”,并在样式中添加两种状态
<Style x:Key="Triggers" TargetType="ScrollViewer">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="HorizontalScrollBarVisibility" Value="Visible"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="false">
<Setter Property="HorizontalScrollBarVisibility" Value="Disabled"/>
</Trigger>
</Style.Triggers>
</Style>
这应该会给你你想要的效果。当你说它对你不起作用时,你的意思是它在不应该的时候显示滚动条,还是在应该的时候不显示滚动条?@SimonBelanger它似乎从来没有使用上面的代码显示滚动条。好吧,只有在需要时才显示自动。需要一个吗?试试看。@bum是的,这是必要的。即使使用Visible,它也会给我带来同样的问题。如果没有样式,并且在scroll viewer上使用HorizontalScrollBarVisibility=“Auto”,水平滚动条确实会像预期的那样显示出来。不过,我只希望当鼠标在滚动条上时它才可见。当你说它对你不起作用时,你的意思是它在不该显示滚动条的时候显示滚动条,还是在不该显示滚动条的时候显示滚动条?@SimonBelanger它似乎从来没有使用上面的代码显示滚动条。嗯,只有在需要时才显示自动。需要一个吗?试试看。@bum是的,这是必要的。即使使用Visible,它也会给我带来同样的问题。如果没有样式,并且在scroll viewer上使用HorizontalScrollBarVisibility=“Auto”,水平滚动条确实会像预期的那样显示出来。不过,我只希望鼠标在上面时它能被看到。你让我大开眼界了。谢谢!你让我睁开了眼睛。谢谢!
<Style x:Key="Triggers" TargetType="ScrollViewer">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="HorizontalScrollBarVisibility" Value="Visible"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="false">
<Setter Property="HorizontalScrollBarVisibility" Value="Disabled"/>
</Trigger>
</Style.Triggers>
</Style>