0
我想出瞭如何突出顯示感興趣的行。我可以獲得我感興趣的列的索引,並使用ScrollIntoView來跳轉到它。但是,它不會立即彈出給用戶。我想突出顯示該列,或者更改ColumnHeaderStyle。我似乎無法弄清楚如何在xaml或代碼背後做到這一點。根據datagrid中的選擇更改ColumnHeaderStyle的背景顏色
另一種替代方法是不突出顯示整行和列標題,而只是顯示感興趣的單元格。我寧願那樣做,但無法弄清楚。
我目前的DataGrid是這樣的:
<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]);
}
感謝。
更改'DataGridColumnHeader'的''背景'是非常有用的,因爲您需要重新構建樣式。不知道這是你想要的,但你有沒有嘗試在'DataGrid'上設置'SelectionUnit =「CellOrRowHeader」'? –
@Meleak,我將使用什麼觸發器來選擇列? – Crystal
不知道我是否正確理解你的問題,但是我發佈了一個關於如何在選擇DataGridColumn時使用觸發器的答案(意思是選擇了列中的單元格) –