在上节介绍 WPF中的数据绑定方式 时,我知道 ,建立数据绑定时,需要作如下处理:
- 待绑定数据类实现INotifyPropertyChange;
- 需暴露给外界的属性发改变时,触发PropertyChanged事件,事件的参数为属性的名称;
- 将数据类作为数据源绑定到界面上;
- 在XAML中通过Path 指定绑定的属性。
在这些操作中将数据类作为数据源绑定到界面上时,是通过给DataContext赋值的方式绑定的。
当一个控件Binding数据源时,只指定的Path,而不知道Source,会沿着UI元素树,一路往上查找;每个结点,都要查看下该节点的DataContext是否包含Path指定的属性。
DataContext属性是被定义在FrameworkElement类里的,这个类是所有WPF控件的基类,这意味着所有WPF控件都具备这个属性; 这也意味着,我们可以在XAML中设置DataContext,进一步解耦界面与逻辑代码。

为了将界面与业务逻辑解耦,我们将数据和业务逻辑纳入单独的类文件,新建一个名为MainWindowViewModel.cs的类文件;并定义界面数据源
namespace EBookTool.View
{
public class MainWindowViewModel
{
private Account _Data = new Account();
public Account AccountData
{
get {
return _Data;
}
set
{
_Data = value;
PropertyChanged.Invoke(this, new PropertyChangedEventArgs("AccountData"));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
}```
界面XAML中修改代码

这里我们UI相关的文件中,除了.xaml文件,CS文件变得非常简单;不再包含任何同数据和业务逻辑相关的代码
```csharp
namespace EBookTool.View
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
}

本文介绍了如何在WPF中使用数据绑定来实现界面与业务逻辑的解耦。通过创建一个名为MainWindowViewModel的类,将数据源绑定到DataContext,并利用INotifyPropertyChanged接口确保数据更新同步到界面。在XAML中,通过指定Path来绑定属性,当不指定Source时,会沿UI元素树查找DataContext。这种做法简化了UI相关的代码,提高了代码的可维护性。
3748

被折叠的 条评论
为什么被折叠?



