如果我在后面的代码中创建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函数不起作用。
答案 0 :(得分:0)
如果我使用XAML构建一个树,那么构建的树没有任何问题 设计时,但我不知道如何为动态案例做这件事。
首先,“XAML”和“动态”并不相互排斥。您是否确定需要构建网格并通过程序(VB)代码访问CellStyles? XAML有多个选项,比显式扫描可视化树更容易,更易于维护,更具动态性。例如:
至于为什么你看不到可视树中的项目:你什么时候试图访问它?它不会立即填充。您可能需要等待Loaded
事件或DataGrid ItemContainerGenerator的StatusChanged
事件。