0

私は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)
4

1 に答える 1

2

だから私はついに私が探していたものを取り締まることができました:http ://social.msdn.microsoft.com/Forums/br/wpf/thread/bf75f61a-6247-4964-95be-7ea6f0fa0998

それを参照として使用して、私はついにいくつかのコードを機能させることができました:

Dim grid As New DataGrid
grid.AutoGenerateColumns = False

Dim dgtextcol As New DataGridTextColumn
dgtextcol.Width = 200

dgtextcol.Header = "Test"

Dim b1 = New Binding("Message")
b1.Mode = BindingMode.OneWay

dgtextcol.Binding = b1

Dim textStyle = New Style(GetType(TextBlock))
textStyle.Setters.Add(New Setter(TextBlock.TextWrappingProperty, TextWrapping.Wrap))

dgtextcol.ElementStyle = textStyle

grid.Columns.Add(dgtextcol)
于 2012-05-31T20:27:17.253 に答える