2011-09-08 21 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のデータグリッドです。

答えて

2

ItemsSourceはこれのためにどのように見えますか?

トリガーは、DataGridRowごとに、基になるオブジェクトのIsSelectedプロパティにバインドしようとしています。そのオブジェクトにそのプロパティがない場合は、結果は得られません。 DataGridでSelectedItemを設定しても、上記のようにトリガには影響しません。

EDIT: テストするためにクイックサンプルをまとめました。予想どおり、あなたは間違ったことにバインドしようとしています(特定のセルを赤でハイライトするのが目的であれば、間違ったターゲットもあるように見えます)。あなたはこれで全体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

関連する問題