グリッド上にマウスカーソルを合わせてマウスホイールを動かすと、この単一列のDataGridをスクロールさせようとしています。WPF DatagridのColumnHeaderより下のスクロール
<Grid Height ="500" .....
<!-- ListCollectionView for sorting -->
<DataGrid Name="dgTable" Style ="{DynamicResource DataGridStyle1}"
Grid.Row ="1" Grid.Column ="0"
VerticalContentAlignment="Stretch"
ItemsSource="{Binding ItemsLcv}"
IsSynchronizedWithCurrentItem="True"
SelectionMode="Single"
AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserSortColumns="True"
HorizontalAlignment="Center"
Width="215" Height="500">
<DataGrid.Columns>
<DataGridTextColumn Header="Description" SortMemberPath="descr"
IsReadOnly="True"
CanUserSort="True"
Binding="{Binding Path=descr, Mode=TwoWay, UpdateSourceTrigger= PropertyChanged}"
Width ="215"/>
</DataGrid.Columns>
これは、DataGridのスタイルです。
<Style x:Key="DataGridStyle1" TargetType="DataGrid">
<Setter Property="RowHeaderWidth" Value="0" />
<Setter Property = "ScrollViewer.VerticalScrollBarVisibility" Value="Hidden" />
<Setter Property = "ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled" />
</Style>
これはColumnHeaderのためのスタイルです:私は、ScrollViewerのタグ内にデータグリッドを配置する場合
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="Height" Value="35" />
<Setter Property="SeparatorBrush" Value="#79858b" />
<Setter Property="FontWeight" Value="Black" />
<Setter Property="Background" Value ="{DynamicResource Brush1}"/>
<Setter Property="BorderBrush" Value="#FF60727B"/>
<Setter Property="BorderThickness" Value="2,0,2,2"></Setter>
</Style>
、スクロールが働いたが、ColumnHeaderのはdisapppeared。並べ替えのためにColumnheaderを保持する必要があります。
凍った行についての投稿を確認しました。Frozen rows in WPF DataGrid?私は、ScrollViewerコンポーネントで多くのコントロールテンプレートを使用するより簡単な解決策があることを期待していました。前もって感謝します。
DataGridには独自のスクロール機能があり、好みの方法で動作します。 ScrollViewerを取り除き、DataGridの 'VerticalAlignment =" Stretch "を設定します。 'VerticalContentAlignment'ではなく、別のプロパティです。 –
それはそれをしました。ありがとうございました! – harpagornis