0

这可能很明显,但我找不到最好的方法。

我想在列表框中显示用户的 ToDo。这些 ToDo 在数据库中,由 Id、UserId 和 Description 组成。

用户登录到应用程序。

如何检索该特定 userId 的 ToDo 并将其设置为绑定到列表框?

我正在尝试使用 ObjectDataProvider,但我不知道如何将它与非静态的东西(比如我的 _dbService、userId、语言……)结合使用。

是使所有这些东西成为静态而不是在后面的代码中绑定的唯一选择吗?

如果是这样,这意味着 ObjectDataProvider 不是很有用,不是吗?我发现了很多与硬编码参数一起使用的示例,但我几乎看不到任何需要这种功能的情况。

4

2 回答 2

2

我使用模型-视图-视图模型模式来完成我所有的 WPF 。我已经给了你一个链接,但谷歌会给你负载。MVVM 似乎是 WPF 的标准模式。 这个项目可能比你需要的更复杂,但它写得很好,并且带回家使用 MVVM。

基本上,您创建数据模型。在这种情况下,您可能会创建一个简单的类(我称之为 ToDoItem),它具有 Id、UserID 和 Description 属性。使用您喜欢的机制从数据库中获取这些信息的集合。链接到 SQL、实体框架、标准查询等。

然后你有你的 ViewModel - 你有每个模型实例的 ViewModel 实例:VM 有一个对 M 的引用并“转发”它的属性。ViewModel 是您用来操作模型的工具。

然后你就有了你的视图——这就是 UI。您将 View 的 DataContext 设置为 ViewModel,然后您的绑定会自动绑定到 ViewModel。您的视图最终成为您可以看到的东西。所有工作都在 ViewModel 中完成。这意味着它很容易测试。

因此,当您单击视图中的按钮时,绑定会将其传递给 ViewModel 中的命令,该命令会操纵模型。

UI 也是一个带有 ViewModel 的 View。因此,您的 UI VM 可能会从数据库中加载模型集合并将它们粘贴到 ObservableCollection 中。ListBox 项目集合将绑定到此 ObservableCollection。

在这样的帖子中很难解释所有这些。阅读几篇文章,看看你的想法。我在这方面还是很陌生,但我相信我对 MVVM 的阅读已经得到了回报。

于 2009-10-20T09:50:11.793 回答
0

Hela Thomas,Tom 来自轨道一号 :)

MVVM 是要走的路。我正在进行我的第四个项目,如果你使用 mvvm,WPF 真的很出色。您已经尝试过 MVC(或我们在 recy*tyre 上所做的 MVP),这是一个很好的关注点分离。MVVM 更进一步,因为视图模型对视图一无所知。

视图绑定到视图模型,因此它具有对它的引用(2 种方式,超级强大并且超出了典型的 MS 演示)。viewmodel 只是一个 poco,是您的视图、数据 + 行为的表示。一旦你挖掘了这一段,很酷的术语 mvvm 就没有什么秘密了。

我看看我能不能想出一个小演示。也许我以后有时间。我将提出一个视图(xaml,文件 1),它绑定到视图模型(文件 2,一个 poco 类,不要与后面的代码混淆)。该模型可以是您喜欢的任何模型(服务层或直接到存储库)。使用 2way binding 的力量,我们将绑定到一个 observable 集合,这意味着如果我们向集合添加/删除/...某些东西,视图将在不需要我们投入精力的情况下将其拾取。

我的前 2 个 wpf 项目是使用 Caliburn Micro(参见 codeplex)完成的,它是一个基于约定的强大框架。它使您远离核心 wpf(主要是自己创建旅游依赖属性),并且您可以在不完全了解 wpf 的情况下相对快速地创建一些东西。这本身就是一个缺点,但它对我有用。从项目 3 开始,我开始自己驯服这些依赖属性,这将使您成为更好的 wpf 开发人员。

我看到这个问题是从 10 月开始的。你找到了一个好的解决方案吗?

于 2013-01-02T19:38:02.247 回答