2011-09-08 58 views
1

我在嘗試ScrollIntoView的DataGrid並突出顯示另一種顏色的特定行和列。 ScrollIntoView適用於跳到正確的位置。亮點不是。以下是我使用跳轉到位置:在DataGrid中突出顯示SelectedItem的行

public void ShowSelection(int row, int column) 
    { 
     dtGridReads.SelectedItem = dtGridReads.Items[row]; 
     dtGridReads.SelectedItem = dtGridReads.Columns[column]; 
     dtGridReads.UpdateLayout(); 
     dtGridReads.ScrollIntoView(dtGridReads.Items[row], dtGridReads.Columns[column]); 
    } 

這裏是我的WPF的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" 
      CanUserAddRows="False" CanUserDeleteRows="False" FrozenColumnCount="1" 
       GridLinesVisibility="None" Style="{StaticResource DataGridStyle_Blue}"  ScrollViewer.ScrollChanged="dtGridReads_ScrollChanged"> 
     <DataGrid.RowStyle> 
      <Style TargetType="{x:Type DataGridRow}"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding Path=IsSelected}" Value="True"> 
         <Setter Property="Background" Value="Red" /> 
        </DataTrigger > 
       </Style.Triggers> 
      </Style> 
     </DataGrid.RowStyle> 
    </DataGrid> 

感謝。

回答

2

你的ItemsSource是什麼樣子的?

你的觸發器試圖綁定到每個DataGridRow底層對象的IsSelected屬性,所以如果該對象沒有該屬性,那麼你將不會得到任何結果。如上所述,在DataGrid上設置SelectedItem不會影響觸發器。

編輯: 我把一個快速的樣本放在一起測試。正如所料,你試圖綁定到錯誤的東西(它也看起來像你有錯誤的目標,以及如果目標是突出顯示一個特定的單元格爲紅色)。

如果更換這個整個DataGrid.RowStyle塊,它會按預期工作:

 <DataGrid.CellStyle> 
      <Style TargetType="{x:Type DataGridCell}"> 
       <Style.Triggers> 
        <Trigger Property="DataGridCell.IsSelected" Value="True"> 
         <Setter Property="Background" Value="Red" /> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </DataGrid.CellStyle> 
+0

有沒有辦法來添加列突出呢?既然ScrollIntoView也這樣做?謝謝。 – Crystal