Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么赢了';我的WPF风格触发器是否只能在鼠标位于ScrollViewer上时显示水平滚动条?_C#_.net_Wpf_Xaml_Scrollviewer - Fatal编程技术网

C# 为什么赢了';我的WPF风格触发器是否只能在鼠标位于ScrollViewer上时显示水平滚动条?

C# 为什么赢了';我的WPF风格触发器是否只能在鼠标位于ScrollViewer上时显示水平滚动条?,c#,.net,wpf,xaml,scrollviewer,C#,.net,Wpf,Xaml,Scrollviewer,我想创建一个ScrollView,当鼠标在其上时仅显示水平滚动条,因此我尝试了以下操作(请注意,当鼠标在其上时,我只是尝试将HorizontalScrollBarVisibility触发为Auto,并预定义了ScrollViewer以禁用HorizontalScrollBarVisibility): 不幸的是,这对我不起作用。如何将触发器附加到此对象以使其工作?如果直接设置属性,则它优先于样式,因此在您的情况下样式永远无法修改直接在ScrollViewer上设置的水平滚动条可见性 因此,更改

我想创建一个ScrollView,当鼠标在其上时仅显示水平滚动条,因此我尝试了以下操作(请注意,当鼠标在其上时,我只是尝试将HorizontalScrollBarVisibility触发为Auto,并预定义了ScrollViewer以禁用HorizontalScrollBarVisibility):



不幸的是,这对我不起作用。如何将触发器附加到此对象以使其工作?

如果直接设置属性,则它优先于
样式
,因此在您的情况下
样式
永远无法修改直接在
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>