我是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中绑定数据的标准方法是什么?
答案 0 :(得分:0)
首先,您只能绑定到公共属性(此时您的VM中只有方法)。属性应该实现属性更改事件。 在构造函数的View.xaml.cs中:
this.DataContext = new DirectoryModel ();
显然在你的view.xaml中你必须创建绑定,例如。
<TextBlock Text="{Binding MyPropertyFromViewModel}"/>