Wpf 是否更改鼠标悬停时DataGrid滚动条的可见性?

Wpf 是否更改鼠标悬停时DataGrid滚动条的可见性?,wpf,datagrid,scrollbar,visibility,Wpf,Datagrid,Scrollbar,Visibility,如何在DataGrid的IsMouseOver属性上切换DataGrid滚动条的可见性 我想让滚动条在鼠标悬停在DataGrid上时可见,在鼠标离开DataGrid时不可见。如能提供XAML示例,将不胜感激。创建一个值转换器: [ValueConversion(typeof(bool), typeof(ScrollBarVisibility))] sealed class MouseOverToScrollBarVisibility : IValueConverter { public

如何在DataGrid的IsMouseOver属性上切换DataGrid滚动条的可见性


我想让滚动条在鼠标悬停在DataGrid上时可见,在鼠标离开DataGrid时不可见。如能提供XAML示例,将不胜感激。

创建一个值转换器:

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

我会采用一种新的风格,比如:

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

到目前为止,这是最好的解决方案,我个人更喜欢XAML解决方案,而不是代码隐藏解决方案。谢谢
<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>