2017-01-27 54 views
0

WPF變化ScrollViewer.VerticalScrollBarVisibility與觸發

<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> 

如何做到在正確的方式?

+0

如果你願意在代碼背後做到這一點,這可能會有所幫助。 http://stackoverflow.com/questions/6614954/how-to-manipulate-an-implicit-scrollbar-in-wpf – 0x4f3759df

回答

0

做這件事的「正確方法」當然取決於您的要求。但你可以參考使用切換按鈕來顯示和隱藏的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> 

這只是正常提供的切換按鈕和ListView控件在同一個名稱範圍。 Othwerwise可以更好地處理按鈕的Click事件和編程設置的ListView的ScrollViewer.VerticalScrollBarVisibility附加屬性:

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

XAML是標記語言畢竟。它並不打算用作實現相當先進的邏輯的編程語言。使用編程語言如C#來做到這一點:)