2012-02-04 44 views

回答

8

我會申請一種新的風格,如下所示:

<Style x:Key="dataGridStyle" TargetType={x:Type DataGrid}> 
    <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Hidden"/> 
    <Style.Triggers> 
     <Trigger Property="IsMouseOver" Value="True"> 
      <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/> 
     </Trigger> 
    </Style.Triggers> 
</Style> 
+0

到目前爲止,最好的解決方案,我個人更喜歡在背後解決方案的代碼XAML的解決方案。謝謝! – 2017-10-13 17:33:47

4

創建一個值轉換器:

[ValueConversion(typeof(bool), typeof(ScrollBarVisibility))] 
sealed class MouseOverToScrollBarVisibility : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return ((bool)value) ? ScrollBarVisibility.Auto : ScrollBarVisibility.Hidden; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotSupportedException(); 
    } 
} 

某處聲明它的資源:

<Window.Resources> 
    <local:MouseOverToScrollBarVisibility x:Key="MouseOverToScrollBarVisibility" /> 
</Window.Resources> 

並用它來綁定ScrollViewer.VerticalScrollBarVisibility財產IsMouseOver屬性:

<DataGrid ScrollViewer.VerticalScrollBarVisibility= 
      "{Binding IsMouseOver, 
        RelativeSource={RelativeSource Self}, 
        Converter={StaticResource MouseOverToScrollBarVisibility}}"> 
</DataGrid>