我在带有 WPF 的 VB.Net 中工作,我需要在运行时(在代码隐藏中)创建一个 DataGrid,每个网格单元格中的文本都可以换行。我找到了很多示例来说明如何在 XML 中执行此操作,但我找不到任何解释如何在代码隐藏中完成此操作的内容。我一直试图弄清楚 DataGridTemplateColumn、CellTemplate 和 DataTemplate 是如何一起工作的。对此的任何帮助将不胜感激。
我认为这相当于我正在尝试做的事情:
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock TextWrapping="Wrap" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
更新:
我已经取得了一些进展,但单元格文本换行仍然无法正常工作......这是我到目前为止所得到的:
Dim grid As New DataGrid
grid.AutoGenerateColumns = False
Dim dgtc As New DataGridTemplateColumn
dgtc.Header = "Test"
dgtc.Width = 200
Dim factory1 As New FrameworkElementFactory(GetType(TextBlock))
Dim b1 As New Binding("WrapDirection.Right")
factory1.SetValue(TextBlock.TextWrappingProperty, b1)
Dim dt As New DataTemplate
dt.VisualTree = factory1
dgtc.CellTemplate = dt
grid.Columns.Add(dgtc)
我认为问题在于绑定和 textblock 属性。这样的事情会更有意义,但它不起作用......
Dim b1 As New Binding("Wrap")
factory1.SetValue(TextBlock.TextWrapping, b1)