如何解决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是否在可视树中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。