WPF TreeView数据绑定

时间:2013-05-15 10:40:41

标签: wpf data-binding treeview

我是WPF的新手,虽然我已经听过它的一些概念,比如Model-View-ViewModel。我想通过做一个小程序开始学习WPF。

在程序中我有一个TreeView来显示目录(例如我的文档,计算机等)。我可以轻松地为数据开发一个类,即DirectoryModel

class DirectoryModel : INotifyPropertyChanged
{
    private DirectoryInfo directory;
    private FileInfo file;

    private DirectoryModel(DirectoryInfo directory)
    {
        //...
    }

    private DirectoryModel(FileInfo file)
    {
        //...
    }

    public static DirectoryModel[] RootDirs()
    {
        //...
    }

    public DirectoryModel[] SubDirs()
    {
        //...
    }

    public DirectoryModel[] Files()
    {
        //...
    }

    public override string ToString()
    {
        if (this.directory != null)
            return this.directory.Name;
        else
            return this.file.Name;
    }

    public event PropertyChangedEventHandler PropertyChanged;
}

现在我想将此模型绑定到树视图。我已经阅读了几篇关于绑定数据的文章,来自MSDN和CodeProject,但我仍然没有抓住密钥!我读到了一些关于在XAML中创建绑定的内容,而且只有<c:MyData x:Key="myDataSource"/>之类的内容,但myDataSource来自何处?由于第一个字母没有大写,我认为它是某种类型的变量,但没有定义,声明或提及。

我已阅读this article,但有许多事情我不清楚(如ItemTemplate,ItemContainerStyle等)。我的感觉是,似乎有很多不同的方法来进行绑定,不同的博客或文章使用不同的方法。

所以我的问题是,如何定义模型类,并创建该类的变量并将其绑定到控件(此处为树视图)?或者我想知道,如果有的话,在WPF中绑定数据的标准方法是什么?

1 个答案:

答案 0 :(得分:0)

首先,您只能绑定到公共属性(此时您的VM中只有方法)。属性应该实现属性更改事件。 在构造函数的View.xaml.cs中:

this.DataContext = new DirectoryModel ();

显然在你的view.xaml中你必须创建绑定,例如。

<TextBlock Text="{Binding MyPropertyFromViewModel}"/>