2013-06-07 10 views

답변

1

RowDetailsVisibilityChanged 이벤트 (msdn)를 사용할 수 있으며 이벤트 처리기에서 선택한 열을 선택하고 행 세부 정보를 숨기거나 표시 할 수 있습니다.

"이름"열에서 셀을 선택할 때 행 세부 정보를 표시하고 싶지 않습니다.

XAML :

<DataGrid Name="outerGrid" AutoGenerateColumns="False"     
      ItemsSource="{Binding}"     
      RowDetailsVisibilityChanged="outerGrid_RowDetailsVisibilityChanged" > 
    <DataGrid.RowDetailsTemplate> 
     <DataTemplate> 
      <DataGrid Name="innerGrid" ItemsSource="{Binding Items}" AutoGenerateColumns="False" > 
       <DataGrid.Columns> 
        <DataGridTextColumn Header="ID" Binding="{Binding Id}"/> 
        <DataGridTextColumn Header="Name" Binding="{Binding Name}"/> 
        <DataGridTextColumn Header="Surname" Binding="{Binding Surname}"/> 
       </DataGrid.Columns> 
      </DataGrid> 
     </DataTemplate> 
    </DataGrid.RowDetailsTemplate> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="ID" Binding="{Binding Id}"/> 
     <DataGridTextColumn Header="Name" Binding="{Binding Name}"/> 
     <DataGridTextColumn Header="Surname" Binding="{Binding Surname}"/> 
    </DataGrid.Columns> 
</DataGrid> 

코드 숨김

private void outerGrid_RowDetailsVisibilityChanged(object sender, DataGridRowDetailsEventArgs e) 
{ 
    DataGrid dg = sender as DataGrid; 
    if (dg != null) 
    { 
     if (dg.CurrentCell != null && dg.CurrentCell.Column.Header.ToString() == "Name") 
     {      
      e.DetailsElement.Visibility = System.Windows.Visibility.Collapsed; 
     } 
     else 
     { 
      e.DetailsElement.Visibility = System.Windows.Visibility.Visible; 
     } 
    } 
}