2011-09-08 7 views
1

DataGrid의 ScrollIntoView를 사용하여 특정 행과 열을 다른 색상으로 강조 표시하려고합니다. ScrollIntoView는 올바른 지점으로 점프하는 데 사용됩니다. 하이라이트하지 않습니다. 여기에 내가 위치로 이동하는 데 사용하는 것입니다 :DataGrid의 SelectedItem 행 강조 표시

<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> 

감사 :

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에 있습니다.

답변

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

관련 문제