0

我对 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从哪里来的?由于第一个字母没有大写,我假设它是某种类型的变量,但没有定义或声明或提及这一点。

我读过这篇文章,但有很多事情我不清楚(如 ItemTemplate、ItemContainerStyle 等)。我的感觉是,似乎有很多不同的方法来做绑定,不同的博客或文章使用不同的方法。

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

4

1 回答 1

0

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

this.DataContext = new DirectoryModel ();

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

<TextBlock Text="{Binding MyPropertyFromViewModel}"/>
于 2013-05-15T10:52:12.370 回答