WPF使用触发器更改ScrollViewer.VerticalScrollBarVisibility

时间:2017-01-27 15:55:09

标签: c# wpf

我有

<ListView Grid.Column="1" ItemsSource="{Binding DataItems}" SelectionMode="Multiple" Grid.RowSpan="2" Name="listView"/>

是否可以更改ScrollViewer.VerticalScrollBarVisibility

  <i:Interaction.Triggers>
  <i:EventTrigger EventName="Click">
  <ei:ChangePropertyAction PropertyName="ScrollViewer.VerticalScrollBarVisibility" TargetName="listView" Value="Hidden" />
  </i:EventTrigger>
  </i:Interaction.Triggers>

如何以正确的方式做到这一点?

1 个答案:

答案 0 :(得分:0)

&#34;正确的方式&#34;这样做当然取决于您的要求。但您可以参考以下使用ToggleButton显示和隐藏ListView滚动条的示例标记:

<Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApplication2"
        mc:Ignorable="d"
        Title="MainWindow" Height="300" Width="300">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <ListView Grid.Column="1" ItemsSource="{Binding DataItems}" SelectionMode="Multiple" Grid.RowSpan="2" Name="listView">
            <ListView.Style>
                <Style TargetType="ListView">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding IsChecked, ElementName=btn}" Value="True">
                            <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Hidden" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </ListView.Style>
        </ListView>
        <ToggleButton x:Name="btn" Content="Enabled/Disable" Grid.Row="1" />
    </Grid>
</Window>

只要ToggleButton和ListView在同一个名称范围内,这就可以了。 Othwerwise你最好处理Button的Click事件并以编程方式设置ListView的ScrollViewer.VerticalScrollBarVisibility附加属性:

private void btn_Click(object sender, RoutedEventArgs e)
{
    ScrollViewer.SetVerticalScrollBarVisibility(listView, ScrollBarVisibility.Hidden);
}

毕竟,XAML是一种标记语言。它不能用作实现相当高级逻辑的编程语言。使用C#等编程语言来执行此操作:)