问题描述
|
因此,我构建了一个漂亮的嵌套数据网格,看起来像这样:
<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是否在可视树中。