WPF 3.5嵌套的datagrid行详细信息未在可视树中显示

问题描述

| 因此,我构建了一个漂亮的嵌套数据网格,看起来像这样:
<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,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\" 
                            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\" 
                                        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时,行的Node DataGridDetailsPresenter具有0个子级。当该属性设置为Visible时,我可以看到DataGridDetailsPresenter子级。 当RowDetailsVisibilityMode属性为VisibleWhenSelected时,如何强制在可视化树中包含所有节点? 任何输入,不胜感激。     

解决方法

        你想达到什么目的? 除非RowDetails可见,否则它们将不会出现在可视树中,除非可以通过将RowDetailsVisibilityMode设置为Visible但将RowDetails DataGrid可见性设置为Collapsed来强制创建它们。这可能不起作用。如果在3.5中设置为Collapsed,我不知道DataGrid是否在可视树中。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...