目的の行を強調表示する方法を理解しました。興味のある列のインデックスを取得して、ScrollIntoViewを使用してジャンプすることができます。ただし、すぐにユーザーにポップアウトすることはありません。列を強調表示するか、ColumnHeaderStyleを変更します。 xamlやコードの背後でそれをどうやって行うのか分かりません。DataHeaderの選択に基づいてColumnHeaderStyleの背景色を変更します
もう1つの方法は、行全体と列ヘッダーを強調表示せず、関心のあるセルだけを強調表示することです。私はむしろそれをしたいと思いますが、それを理解できませんでした。背後
<DataGrid x:Name="dtGridReads" AutoGenerateColumns="False"
VirtualizingStackPanel.IsVirtualizing="True"
VirtualizingStackPanel.VirtualizationMode ="Standard"
EnableColumnVirtualization="True"
EnableRowVirtualization="True"
ScrollViewer.IsDeferredScrollingEnabled="True"
CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserSortColumns="True"
ItemsSource ="{Binding}" Block.TextAlignment="Center"
AlternatingRowBackground="#F1F1F1" RowBackground="White"
CanUserAddRows="False" CanUserDeleteRows="False" FrozenColumnCount="1"
GridLinesVisibility="None" ScrollViewer.ScrollChanged="dtGridReads_ScrollChanged">
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Style.Triggers>
<Trigger Property="DataGridCell.IsSelected" Value="True">
<Setter Property="Background" Value="red" />
<Setter Property="BorderThickness" Value="0" />
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
マイコード:
public void ShowSelectedCell(int row, int column)
{
//dtGridReads.SelectedItem = dtGridReads.Items[row];
//dtGridReads.SelectedItem = dtGridReads.Columns[column];
//dtGridReads.CurrentColumn = dtGridReads.Columns[column];
dtGridReads.ScrollIntoView(dtGridReads.Items[row], dtGridReads.Columns[column]);
}
おかげ
私の現在のDataGridにはこのようになります。あなたが選択した\に基づいて、データGID列ヘッダは、セルを強調表示強調表示する必要があると仮定すると....
を
'DataGridColumnHeader'の' Background'を変更するのは、スタイルを再構築する必要があるためです。これがあなたの望むものであるかどうかは不明ですが、 'DataGrid'に' SelectionUnit = "CellOrRowHeader" 'を設定しようとしましたか? –
@Meleak、選択された列にどのトリガーを使用するのですか? – Crystal
私はあなたの質問を正しく理解していませんでしたが、 'DataGridColumn'が選択されたときにトリガーを使用する方法についての回答を投稿しました。(列のセルが選択されていることを意味します) –