データベースの単純なスキーマを1レベルの深さのツリービューで表示したいと思います。そのため、要素のヘッダーとして名前を表示したいテーブルのコレクションがあり、各テーブルには、名前、タイプなどの列のコレクションがあります。
ただし、各テーブルでは、これらの列定義をグリッドに表示し、ヘッダーで列定義のプロパティを指定し、各行で定義自体を表示します。
これを機能させる1つの方法は、各テーブルに1つの子のシーケンス(列定義のコレクション全体)があり、グリッドとして表示されるツリービューとして表示することです。
<TreeView ItemsSource="{Binding Tables}" x:Name="treeView" MinWidth="400" >
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Path=ListofONEelement}">
<TextBlock Text="{Binding Path=TableName}" />
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<ListView ItemsSource="{Binding GroupOfColumnDefinition}">
<ListView.View>
<GridView>
<GridViewColumn Header="ColumnName" DisplayMemberBinding="{Binding Path=Item1}" />
<GridViewColumn Header="Model" DisplayMemberBinding="{Binding Path=Item2.Model}" />
<GridViewColumn Header="ColumnStatus" DisplayMemberBinding="{Binding Path=Item2.ColumnStatus}" />
<GridViewColumn Header="ColumnType" DisplayMemberBinding="{Binding Path=Item2.ColumnType}" />
</GridView>
</ListView.View>
</ListView>
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
ListofONEelement
ただし、ツリービューの階層は列挙するアイテムがある場合にのみ存在するため、これを機能させるには、この中間構造を作成する 必要がありました。
ViewModelでカスタムタイプを作成する必要がない、XAMLで直接これを行うための他のより良い方法はありますか?