0

如果我在代码后面创建了一个DataGrid添加了一些任意列的代码,我将无法为DataGrid. 我需要CellStyle动态编辑特定行的属性,因此我希望能够在运行时VisualTreeHelper对我的DataGrid对象使用该函数。如何为DataGrid动态创建的对象构建可视化树?如果我在设计时使用 XAML 构建树,则树的构建没有问题,但我不确定如何针对动态案例执行此操作。

我的问题的一个简单示例是这样的:

    <Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
        <Grid Name="MainGrid" />
    </Window>

后面的代码为:

    Class MainWindow
        Dim dg As DataGrid
        Dim col As DataGridTextColumn

        Sub New()
            InitializeComponent()

            col.Header = "HEAD0RR"
            dg.Columns.Add(col)
            MainGrid.Children.Add(dg)
        End Sub
    End Class

但是 WPF Tree Visualizer 只是将我创建的 DataGrid 显示为没有父级或子级,因此 VisualTreeHelper 函数不起作用。

4

1 回答 1

0

如果我在设计时使用 XAML 构建树,则树的构建没有问题,但我不确定如何针对动态案例执行此操作。

首先,“XAML”和“动态”并不是相互排斥的。您确定需要通过程序 (VB) 代码构建网格并访问 CellStyles 吗?XAML 中有多个选项比显式扫描可视化树更容易、更易于维护和更动态。例如:

至于为什么在可视化树中看不到项目:您何时尝试访问它?它不会立即填充。您可能需要等待Loaded事件或StatusChangedDataGrid 的ItemContainerGenerator的事件。

于 2013-07-11T18:22:55.253 回答