1
여러 열이있는 DataGrid가 있습니다.
DataGrid.RowDetailsTemplate의 활성화를 특정 열로 제한하고 싶습니다.
사실 DataGrid.RowDetailsTemplate을 활성화하지 못하도록 한 열만 제외하고 싶습니다.특정 열에 대한 DataGrid.RowDetailsTemplate 활성화 제한
여러 열이있는 DataGrid가 있습니다.
DataGrid.RowDetailsTemplate의 활성화를 특정 열로 제한하고 싶습니다.
사실 DataGrid.RowDetailsTemplate을 활성화하지 못하도록 한 열만 제외하고 싶습니다.특정 열에 대한 DataGrid.RowDetailsTemplate 활성화 제한
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;
}
}
}