以下是我的XAML:
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid Name="innerGrid" IsReadOnly="True" AutoGenerateColumns="False" Margin="10,10,5,5" Width="400" HorizontalAlignment="Left">
<DataGrid.Columns>
<DataGridTextColumn Header="Ref" Binding="{Binding Id}"/>
<DataGridTextColumn Header="Investor" Binding="{Binding FundProvider.FullName}"/>
<DataGridTextColumn Header="Amount" Binding="{Binding InvestmentAmount}"/>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>我的问题是如何从代码中访问innerGrid DataGrid控件。提前谢谢。
发布于 2013-07-13 17:35:44
您可以在LoadingRowDetails事件(msdn)中访问内部DataGrid。
private void outerGrid_LoadingRowDetails(object sender, DataGridRowDetailsEventArgs e)
{
DataGrid innerGrid = e.DetailsElement as DataGrid;
if (innerGrid != null)
{
}
}发布于 2013-11-26 02:20:46
感谢kmatyaszek的正确答案。之前,我尝试使用RowDetailsTemplate.LoadContent(),它不会更新UI,但可以获取对象。
下面是我更新的示例代码:
void gridEmployee_LoadingRowDetails(object sender, DataGridRowDetailsEventArgs e)
{
Border border = e.DetailsElement as Border;
if (border != null)
{
foreach (var grid in border.GetVisualChildren())
{
Grid grid_ = grid as Grid;
if (grid_ != null)
{
foreach (var textBlock in grid_.GetVisualChildren())
{
TextBlock textBlock_ = textBlock as TextBlock;
if (textBlock_ != null && textBlock_.Text == "City : ")
{
textBlock_.Text = "My assigned text...";
}
}
}
}
}
}https://stackoverflow.com/questions/17628522
复制相似问题