如何在这个模型中应用MVVM模式?

31 浏览
0 Comments

如何在这个模型中应用MVVM模式?

问题始于这个帖子:使用绑定到List,我如何才能不显示控件

我设计了如下内容:

List
(下面是容器的属性)
    - 目标: 字符串
    - 问题: List

ProblemUserControl是一个包含额外属性Problem的UserControl。但是在上面的帖子中,有人建议我使用MVVM模式。我正在进行调查,但我仍然感到困惑,或者需要一点帮助来理解WPF中的这种模式。

0
0 Comments

如何在这个模型中应用MVVM模式?

MVVM(Model-View-ViewModel)是一种用于设计和开发用户界面的软件架构模式。它将用户界面分为三个部分:模型(Model)、视图(View)和视图模型(ViewModel)。模型表示应用程序的数据和业务逻辑,视图负责展示数据和与用户交互,而视图模型则充当模型和视图之间的中介,将数据从模型传递给视图。

在上述示例中,我们可以看到一种简单的MVVM模式的应用。首先,我们有一个抽象的ViewModelBase类,它实现了INotifyPropertyChanged接口。这个类定义了一个属性更改事件,以便在属性值更改时通知对应的视图。

接下来,我们有一个Container类,它继承自ViewModelBase类。Container类表示一个容器,其中包含一个目标和一个问题集合。目标和问题都是可绑定的属性,在属性值更改时会触发属性更改事件。

然后,我们有一个Problem类,它也继承自ViewModelBase类。Problem类表示一个问题,它有一个可绑定的名称属性。

最后,我们有一个ProblemCollection类,它继承自ObservableCollection类。这个类表示一个问题集合,它可以自动通知绑定到它的视图集合的更改。

在MainWindow.xaml中,我们可以看到如何将视图和视图模型绑定在一起。TextBlock的Text属性绑定到Container类的Objective属性,ItemsControl的ItemsSource属性绑定到Container类的Problems属性。同时,我们使用DataTemplate来定义每个问题的视图。

在MainWindow.cs中,我们创建了一个Container对象,并向它的Problems集合添加一些测试数据。然后,我们将Container对象设置为DataContext,以便将数据绑定到视图。

通过这种方式,我们实现了一个简单的MVVM模式,将模型、视图和视图模型分离,实现了数据的双向绑定和自动通知视图的更改。

希望本文可以帮助你了解如何在这个模型中应用MVVM模式。

0
0 Comments

MVVM模式是关于在软件的逻辑层之间维持正确的分离和依赖关系。在这个例子中,你正在混淆显示逻辑和业务逻辑,因为你正在将模型代码(Objectives的容器)与显示代码(一系列UserControls)混合在一起。

相反,保持你的Objectives并维护一个List<Problem>而不是List<ProblemUserControl>。然后使用WPF和绑定将你的ProblemUserControl与一个Problem关联起来。你的用户控件理解什么是Problem,所以你可以绑定Problem的属性。这样可以将层分离开来,使得对软件进行推理变得更容易。

格雷格,我想我明白你想告诉我什么。但我无法想象如何开始构建这个应用程序。

一步一步来。这里没有什么魔法弹药:只要开始做,犯错误,并从中学习。

0