如何访问DataGrid.RowDetailsTemplate中的控件

本文关键字:RowDetailsTemplate 控件 DataGrid 何访问 访问 | 更新日期: 2023-09-27 18:22:22

下面是我的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控件。提前感谢。

如何访问DataGrid.RowDetailsTemplate中的控件

您可以在LoadingRowDetails事件(msdn)中访问内部DataGrid

private void outerGrid_LoadingRowDetails(object sender, DataGridRowDetailsEventArgs e)
{
    DataGrid innerGrid = e.DetailsElement as DataGrid;
    if (innerGrid != null)
    {
    }
}

感谢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...";
                        }
                    }
                }
            }
        }
    }
相关文章:
  • 没有找到相关文章