Treeview没有显示数据

时间:2011-12-18 12:22:17

标签: c# wpf mvvm treeview

我一直试图重现这个例子:http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx

由于某种原因,我的树视图根本没有显示任何数据,我无法弄清楚为什么(我没有错误,也不知道如何正确地调试这个)。这是我的代码:

MainWindow.XAML

<Window x:Class="Tryout.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:Tryout.domain"
    Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded">
<TreeView Name="treeViewFiles" HorizontalAlignment="Left" Margin="10,10,0,12" Width="200" ClipToBounds="True">
    <TreeView.Resources>
        <HierarchicalDataTemplate DataType="{x:Type local:Directory}" ItemsSource="{Binding Children}">
            <Label Content="{Binding Path=Name}"/>
        </HierarchicalDataTemplate>
        <DataTemplate DataType ="{x:Type local:File}">
            <TextBlock Text="{Binding Path=Name}" />
        </DataTemplate>
    </TreeView.Resources>
</TreeView>

MainWindow.XAML.cs

namespace Tryout
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Directory rootDirectory = new Directory("Root");
            rootDirectory.Children.Add(new Directory("Subdirectory 1"));
            rootDirectory.Children.Add(new Directory("Subdirectory 2"));
            ((Directory)rootDirectory.Children[1]).Children.Add(new File("The only file"));

            treeViewFiles.ItemsSource = rootDirectory.Children;
        }
    }
}

File.cs

namespace Tryout.domain
{
    public class File : INotifyPropertyChanged
    {
        public string Name;

        public File(String _name)
        {
            Name = _name;
        }

        #region INotifyPropertyChanged Members

        public event PropertyChangedEventHandler PropertyChanged;

        #endregion
    }
}

Directory.cs

namespace Tryout.domain
{
    public class Directory : File
    {
        public List<File> Children = new List<File>();

        public Directory(String _name) : base(_name) { }
    }
}

0 个答案:

没有答案