0

そこで、次のような素敵なネストされたデータグリッドを構築します。

<dg:DataGrid x:Name="mainGrid"
                AutoGenerateColumns="False" 
                CanUserAddRows="False"
                AreRowDetailsFrozen="True"
                CanUserReorderColumns="False"
                CanUserResizeColumns="True"
                CanUserResizeRows="False"
                SelectionUnit="FullRow"
                RowDetailsVisibilityMode="VisibleWhenSelected">
                <dg:DataGrid.Columns>
                    <dg:DataGridTemplateColumn CanUserResize="False" CanUserSort="False" Width="36" IsReadOnly="False">
                        <dg:DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <Button Content="+" Width="28" Height="28" />
                            </DataTemplate>
                        </dg:DataGridTemplateColumn.CellTemplate>
                    </dg:DataGridTemplateColumn>
                    <dg:DataGridTemplateColumn>
                        <dg:DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <Grid>
                                    <CheckBox IsChecked="{Binding IsSelected, Mode=TwoWay}"/>
                                </Grid>
                            </DataTemplate>
                        </dg:DataGridTemplateColumn.CellTemplate>
                    </dg:DataGridTemplateColumn>
                    <dg:DataGridTemplateColumn Header="Name" IsReadOnly="True" Width="582">
                        <dg:DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Margin="5" VerticalAlignment="Center" Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=Default}" />
                            </DataTemplate>
                        </dg:DataGridTemplateColumn.CellTemplate>
                    </dg:DataGridTemplateColumn>
                    <dg:DataGridTemplateColumn Header="Status" IsReadOnly="True" Width="150">
                        <dg:DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <TextBlock Margin="5" VerticalAlignment="Center" Text="{Binding Status, Mode=TwoWay, UpdateSourceTrigger=Default}" />
                            </DataTemplate>
                        </dg:DataGridTemplateColumn.CellTemplate>
                    </dg:DataGridTemplateColumn>
                    <dg:DataGridCheckBoxColumn Binding="{Binding IsSelected}"/>
                </dg:DataGrid.Columns>
                <dg:DataGrid.RowDetailsTemplate>
                    <DataTemplate>
                        <dg:DataGrid x:Name="scondaryDatagrid" Margin="29,0,0,0" 
                            AutoGenerateColumns="False" 
                            CanUserAddRows="False"
                            AreRowDetailsFrozen="True"
                            CanUserReorderColumns="False"
                            CanUserResizeColumns="True"
                            CanUserResizeRows="False"
                            SelectionUnit="Cell"
                            RowDetailsVisibilityMode="VisibleWhenSelected"
                            ItemsSource="{Binding Grades, Mode=TwoWay}">
                            <dg:DataGrid.Columns>
                                <dg:DataGridTemplateColumn CanUserResize="False" CanUserSort="False" Width="32" IsReadOnly="True">
                                    <dg:DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <Button Content="+" Width="28" Height="28" />
                                        </DataTemplate>
                                    </dg:DataGridTemplateColumn.CellTemplate>
                                </dg:DataGridTemplateColumn>
                                <dg:DataGridTemplateColumn CanUserResize="False" CanUserSort="False" Width="32" IsReadOnly="True">
                                    <dg:DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <CheckBox IsChecked="{Binding IsSelected, Mode=TwoWay}" VerticalAlignment="Center" HorizontalAlignment="Center" HorizontalContentAlignment="Center" />
                                        </DataTemplate>
                                    </dg:DataGridTemplateColumn.CellTemplate>
                                </dg:DataGridTemplateColumn>
                                <dg:DataGridTemplateColumn Header="Name" IsReadOnly="True" Width="550">
                                    <dg:DataGridTemplateColumn.CellTemplate>
                                        <DataTemplate>
                                            <TextBlock Margin="5" Text="{Binding Name, Mode=TwoWay}" VerticalAlignment="Center" />
                                        </DataTemplate>
                                    </dg:DataGridTemplateColumn.CellTemplate>
                                </dg:DataGridTemplateColumn>
                            </dg:DataGrid.Columns>
                            <dg:DataGrid.RowDetailsTemplate>
                                <DataTemplate>
                                    <dg:DataGrid Margin="25,0,0,0" 
                                        AutoGenerateColumns="False" 
                                        CanUserAddRows="False"
                                        AreRowDetailsFrozen="True"
                                        CanUserReorderColumns="False"
                                        CanUserResizeColumns="True"
                                        CanUserResizeRows="False"
                                        SelectionUnit="Cell"
                                        ItemsSource="{Binding Notes, Mode=TwoWay}">
                                        <dg:DataGrid.Columns>
                                            <dg:DataGridTemplateColumn CanUserResize="False" CanUserSort="False" Width="32" IsReadOnly="True">
                                                <dg:DataGridTemplateColumn.CellTemplate>
                                                    <DataTemplate>
                                                        <CheckBox IsChecked="{Binding IsSelected, Mode=TwoWay}" VerticalAlignment="Center" HorizontalAlignment="Center" />
                                                    </DataTemplate>
                                                </dg:DataGridTemplateColumn.CellTemplate>
                                            </dg:DataGridTemplateColumn>
                                            <dg:DataGridTemplateColumn Header="Note" IsReadOnly="True" Width="550">
                                                <dg:DataGridTemplateColumn.CellTemplate>
                                                    <DataTemplate>
                                                        <TextBlock Margin="5" Text="{Binding Note, Mode=TwoWay}" VerticalAlignment="Center" />
                                                    </DataTemplate>
                                                </dg:DataGridTemplateColumn.CellTemplate>
                                            </dg:DataGridTemplateColumn>
                                        </dg:DataGrid.Columns>
                                    </dg:DataGrid>
                                </DataTemplate>
                            </dg:DataGrid.RowDetailsTemplate>
                        </dg:DataGrid>
                    </DataTemplate>
                </dg:DataGrid.RowDetailsTemplate>


            </dg:DataGrid>

RowDetailsVisibilityMode プロパティが VisibleWhenSelected に設定されているため、行のノード DataGridDetailsPresenter には子がありません。プロパティが Visible に設定されている場合、DataGridDetailsPresenter の子が表示されます。

RowDetailsVisibilityMode プロパティが VisibleWhenSelected の場合、Visual ツリーにすべてのノードを強制的に含めるにはどうすればよいですか?

どんな入力でも大歓迎です。

4

1 に答える 1

1

何を達成しようとしていますか?

RowDetailsVisibilityMode を Visible に設定し、RowDetails DataGrid の可視性を Collapsed に設定して強制的に作成しない限り、RowDetails が表示されない限り、Visual Tree には表示されません。これはうまくいかないかもしれません。3.5 で Collapsed に設定されている場合、DataGrid が Visual Tree に含まれるかどうかはわかりません。

于 2011-09-08T16:36:17.480 に答える