TreeView
WPF データバインディング機能を使用して、オブジェクト (カテゴリ) の階層ツリーを表示しようとしています。
Josh Smith によるこのチュートリアルに大まかに従いましたが、効果はありませんTreeView
。
私の非常に単純なアプリケーションの完全なコードは次のとおりです。
using System.Windows;
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.DataContext = CategoriesTreeViewModel.CreateDefault;
}
}
}
ViewModel オブジェクトとサンプル データ:
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
namespace WpfApplication1
{
public class Category
{
public Category()
{
Children = new ObservableCollection<Category>();
}
public ObservableCollection<Category> Children
{
get;
set;
}
public string Name { get; set; }
}
public class CategoriesTreeViewModel
{
public ReadOnlyCollection<Category> FirstGeneration;
private static IEnumerable<Category> SomeCategories
{
get
{
var A = new Category() { Name = "A" };
var B = new Category() { Name = "B" };
var A1 = new Category() { Name = "A1" };
var A2 = new Category() { Name = "A2" };
var B1 = new Category() { Name = "B1" };
var B2 = new Category() { Name = "B2" };
A.Children.Add(A1);
A.Children.Add(A2);
B.Children.Add(B1);
B.Children.Add(B2);
yield return A;
yield return B;
}
}
public static CategoriesTreeViewModel CreateDefault
{
get
{
var result = new CategoriesTreeViewModel()
{
FirstGeneration = new ReadOnlyCollection<Category>(SomeCategories.ToList())
};
return result;
}
}
}
}
XAML:
<Window x:Class="WpfApplication1.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>
<TreeView ItemsSource="{Binding FirstGeneration}" Name="treeView1">
<TreeView.ItemTemplate>
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
</Grid>
</Window>
TreeView
コントロールが空白なのはなぜですか?