나는 내가 XAML뿐만 아니라 부모 컨트롤의로드 이벤트에 모두이 속성을 설정하려고했던 RowDetailsVisibilityMode = DataGridRowDetailsVisibilityMode.VisibleWhenSelectedSilverlight DataGrid : 눈금로드시 발생시키는 RowDetailsVisibilityChanged를 가져올 수 없습니다?
와 표준 실버 라이트 데이터 그리드 있습니다. 부모의 Loaded 이벤트에서 그리드의 itemsource를 설정 한 다음 선택한 인덱스를 수동으로 0으로 설정합니다. 이것은 RowDetailsVisibilityChanged 이벤트를 발생시키지 않습니다.
그러나 새 행을 클릭하여 선택을 변경하면 해당 행이 실행됩니다. 첫 번째 선택 행의 "DetailElement"에 액세스하여 데이터로 컨트롤을 채워야합니다. 그러나 해당 DetailElement 가져 오는 방법을 알고있는 유일한 방법은 RowDetailsVisibilityChanged 이벤트입니다.
이void ViewAssociationUserControl_Loaded(object sender, RoutedEventArgs e)
{
viewAssociationsDataGrid.RowDetailsVisibilityMode = DataGridRowDetailsVisibilityMode.VisibleWhenSelected;
viewAssociationsDataGrid.ItemSource = myData;
viewAssociationsDataGrid.SelectedIndex = 0;
}
private void viewAssociationsDataGrid_RowDetailsVisibilityChanged(object sender, System.Windows.Controls.DataGridRowDetailsEventArgs e)
{
if (viewAssociationsDataGrid.RowDetailsVisibilityMode == DataGridRowDetailsVisibilityMode.VisibleWhenSelected
&& e.Row.DetailsVisibility == System.Windows.Visibility.Visible)
{
Grid detailElement = e.DetailsElement as Grid;
if (detailElement != null)
{
ListBox assocControl = detailElement.FindName("oneToManyGridPanel") as ListBox;
UpdateOneToManyPanel(assocControl);
}
}
}