実行時に DataTemplate を変更して、いくつかの列を StackPanel に追加する必要があります。
したがって、ユーザー コントロールで「stackPanelLeft」と「stackPanelRight」にアクセスする方法が必要です。
すべてのコードを長い xml 文字列にしてロードできることはわかっていますが、DataTemplate からスタック パネルにアクセスして、この方法で変更する方法を見つけたいと思います。一種の「ハイブリッド」アプローチ。
<ListView.ItemTemplate>
<DataTemplate>
<Grid x:Name="mainGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="40" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="40" />
</Grid.ColumnDefinitions>
<CheckBox />
<Image Grid.Column="1" />
<StackPanel Grid.Column="2" x:Name="stackPanelLeft"/>
<StackPanel Grid.Column="3" x:Name="stackPanelRight"/>
<Image Grid.Column="4" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
スタック パネルに何が表示されるかわかりません。環境によっては、ボタン、テキスト ボックス、チェック ボタンなどになります。
FindName メソッドを使用しようとしましたが、ビジュアル ツリーがまだ作成されていないため、null しか返されません。
スタック パネルにアクセスできるようになったら、FrameworkElementFactory メソッドを介してコントロールを追加する予定です。
これは私が目指していたアプローチですが、完全に別のアイデアを受け入れます
var leftPanel = FindName("stackPanelLeft");
FrameworkElementFactory control = new FrameworkElementFactory(typeof(TextBlock));
textBlock.SetBinding(TextBlock.TextProperty, new Binding(dataTable.ColumnName));
leftPanel.AppendChild(textBlock);