📄 OutGridTree.Window/MainWindow.axaml
<Window xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:w="clr-namespace:OutGridTree.Window"
        xmlns:c="clr-namespace:OutGridTree.Window.Converters"
        xmlns:ps="clr-namespace:System.Management.Automation;assembly=System.Management.Automation"
        mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
        x:Class="OutGridTree.Window.MainWindow"
        Title="Out-GridTree">
    <Window.Resources>
        <c:IsLeafConverter x:Key="isLeafConverter"/>
        <c:PsObjectPropertiesConverter x:Key="psObjectPropertiesConverter"/>
    </Window.Resources>
    <Grid RowDefinitions="*,Auto">
        <DataGrid Name="Table" AutoGenerateColumns="False" IsReadOnly="True"
                  GridLinesVisibility="All" BorderThickness="1"
                  Grid.Row="0" Grid.IsSharedSizeScope="True"
                  SelectionMode="Extended" RowDetailsVisibilityMode="VisibleWhenSelected"
                  CanUserSortColumns="True" CanUserReorderColumns="True" CanUserResizeColumns="True">
            <DataGrid.RowDetailsTemplate>
                <DataTemplate x:DataType="{x:Type w:Row}">
                    <TreeView ItemsSource="{Binding Entry.Properties}">
                        <TreeView.ItemTemplate>
                            <TreeDataTemplate x:DataType="{x:Type ps:PSPropertyInfo}" ItemsSource="{Binding Value, Converter={StaticResource psObjectPropertiesConverter}}">
                                <Grid ColumnSpacing="10">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition SharedSizeGroup="Label" Width="Auto" />
                                        <ColumnDefinition SharedSizeGroup="Value" Width="*" />
                                    </Grid.ColumnDefinitions>
                                    <TextBlock Text="{Binding Name}" Padding="2" />
                                    <TextBox Text="{Binding Value}"
                                             Grid.Column="1"
                                             IsVisible="{Binding $parent.DataContext.Value, Converter={StaticResource isLeafConverter}}"
                                             IsReadOnly="True"
                                             BorderBrush="{x:Null}"
                                             Padding="5,2" />
                                </Grid>
                            </TreeDataTemplate>
                        </TreeView.ItemTemplate>
                    </TreeView>
                </DataTemplate>
            </DataGrid.RowDetailsTemplate>
        </DataGrid>
        <StackPanel Name="Buttons" Grid.Row="1" Orientation="Horizontal" Spacing="10" HorizontalAlignment="Right" IsVisible="False">
            <Button Content="OK" Click="OnOkClick"/>
            <Button Content="Cancel" Click="OnCancelClick"/>
        </StackPanel>
    </Grid>
</Window>