WPF:与非静态参数结合? (新手问题)
-
22-09-2019 - |
题
这可能很明显,但我找不到最好的方法。
我想在列表框中显示用户的待办事项。这些TODO在数据库中,由ID,用户ID和描述组成。
用户登录到该应用程序。
如何为该用户ID检索TODO并将其设置为绑定到ListBox?
我正在尝试使用一个Objectdataprovider,但我无法弄清楚如何将其与非静态物质结合使用(例如我的_dbservice,userId,language等)。
是使所有这些内容在后面的代码中静态与绑定的唯一选择吗?
如果是这样,这意味着ObjectDatapRovider不是很有用,不是吗?我发现很多示例与硬编码参数一起使用,但是我几乎看不到我需要这样的功能的任何情况。
解决方案
我使用我所有的WPF 模型视图视图模型 图案。我在那里给了您一个链接,但是Google会为您提供负载。 MVVM似乎是WPF的标准模式。 这个项目 可能比您需要的要复杂得多,但写得很好,可以带回家使用MVVM。
基本上,您创建数据模型。在这种情况下,您可能会创建一个具有属性ID,用户ID和描述的简单类(我将其称为待办事项)。使用您的首选机制从数据库中获取这些收集。链接到SQL,实体框架,标准查询等等。
然后,您将拥有视图模型 - 对于该模型的每个实例,您都有一个ViewModel的实例:VM对M和“转发”属性具有引用。 ViewModel是您用来操纵模型的方法。
然后,您有了您的观点 - 这是UI。您将视图的DataContext设置为ViewModel,然后将绑定自动绑定到ViewModel。您的观点最终只是您可以看到的东西。所有工作都在ViewModel中完成。这意味着非常容易测试。
因此,当您单击视图中的按钮时,绑定将其传递到视图模型中的命令上,该命令操纵模型。
UI也是带有ViewModel的视图。因此,您的UI VM可能会从数据库中加载一系列型号,并将其粘贴在观测值。 ListBox项目集合将绑定到此ObservableCollection。
很难在这样的帖子中解释所有这些。阅读几篇文章,看看您的想法。我也仍然很新,但是我相信我对MVVM的阅读已经获得了回报。
其他提示
Hela Thomas,汤姆来自轨道上的一个:)
MVVM是必经之路。我在第四个项目中,如果您使用MVVM,WPF确实会发光。您已经尝试了MVC(或在回收*轮胎上所做的MVP),这是一个很好的关注点。 MVVM更进一步,因为ViewModel对视图一无所知。
该视图绑定到ViewModel,因此它具有对其的引用(2方式,超级强大,并且超出了典型的MS演示)。 ViewModel只是一个POCO,是您视图,数据 +行为的表示。一旦您挖掘了此段,酷术语MVVM将没有秘密。
我看看我是否可以提出一个小演示。也许我稍后会有时间。我要想到的是绑定到ViewModel(文件2,POCO类,不要被误解的代码)的视图(XAML,文件1)。该模型可以是您喜欢的任何东西(服务层或直接到存储库)。使用2条绑定的功率,我们将绑定到可观察到的集合,这意味着如果我们添加/删除/...在集合中添加某些东西,视图将在无需我们投入能量的情况下将其拾取。
我的第一个WPF项目是使用Caliburn Micro(请参阅Codeplex)完成的,这是一个基于约定的强大框架。它使您远离铁杆WPF(主要是创建旅游依赖性属性),并且您可以在不完全了解WPF的情况下创建相对快速的东西。这本身就是一个缺点,但对我有用。从项目3开始,我自己开始驯服这些依赖性属性,这将使您成为更好的WPF开发人员。
我看到这个问题是从十月开始..您找到了一个好的解决方案吗?