【发布时间】:2013-07-11 17:01:39
【问题描述】:
如果我在代码后面创建一个DataGrid 并添加一些任意列,我无法为DataGrid 创建可视化树。我需要动态编辑特定行的CellStyle 属性,因此我希望能够在运行时对我的DataGrid 对象使用VisualTreeHelper 函数。如何为动态创建的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 函数不起作用。
【问题讨论】:
-
如果您需要动态创建列,请尝试覆盖 ArrangeOverride,如果您需要做的只是更改您可能会覆盖 OnRowLoaded 的样式
-
我只想添加一个简单的技巧,而不是像建议的那样接受答案或覆盖 OnRowLoaded 就是调用元素的 focus() 方法以强制构建可视化树。
标签: wpf vb.net datagrid datagridcell