我有一个带有 RowDetailsVisibilityMode = DataGridRowDetailsVisibilityMode.VisibleWhenSelected 的标准 Silverlight DataGrid
我尝试在 XAML 以及父控件的 Loaded 事件中设置此属性。在父级的 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);
}
}
}