DataGridのIsMouseOverプロパティで、データグリッドスクロールバーの表示を切り替えるにはどうすればよいですか? マウスがDataGridの上を移動するとScrollBarが表示され、マウスがDataGridから外れると非表示になります。 XAMLの例を理解できます。マウス上のDatGrid ScrollBarの可視性を変更しますか?
2
A
答えて
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>
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>
そしてIsMouseOver
プロパティにScrollViewer.VerticalScrollBarVisibility
プロパティをバインドするためにそれを使用する:
<DataGrid ScrollViewer.VerticalScrollBarVisibility=
"{Binding IsMouseOver,
RelativeSource={RelativeSource Self},
Converter={StaticResource MouseOverToScrollBarVisibility}}">
</DataGrid>
私はXAMLソリューションをソリューションのコードビハインドよりもはるかに優れています。ありがとう! –