gpt4 book ai didi

xaml - MVVM - 摘要/详细信息

转载 作者:行者123 更新时间:2023-12-03 11:00:11 27 4
gpt4 key购买 nike

因此,我试图围绕 MVVM 进行思考,但我发现我的问题多于答案。当涉及到下一步时,这些教程对我来说还远远不够......

基本上我想要一个项目列表,然后是一种获取每个项目详细信息的方法。

下面是我在网上找到的示例,它们非常适合显示列表,但我需要知道如何使用我的 VM 来获取此项目的详细信息。

private IList<item> m_items;
private IList<item> m_Item;


private IList<item> getItemDetail(Int32 iId)
{
var myItem =
from i in items
where i.iId == iId
select i;

m_Item = new List<item>();
foreach (var item in myItem)
{
m_Item.Add(item);
}
return m_Item;
}

public myViewModel()
{

m_items = new List<item>
{
new item(1, "test,),
new item(2, "test2"),
new item(3, "test1")
};

m_Item = new List<item>();
m_Item = getItemDetail(iId);

}

更新:

我更新了上面的 View 模型代码。我认为我所做的是我添加了另一个列表,当用户导航到详细信息页面时, View 模型会使用特定 ID 调用,然后填充详细信息列表。我可能不需要这里的列表,但我想尝试使其与主页代码保持一致。

在我的详细信息页面中,我以这种方式设置 VM:
    itemViewModel VM = new itemViewModel((Int32)navigationParameter);
DataContext = VM;

当我打破 VM 变量时,我看到了我的 2 个列表。但是,我的绑定(bind)不适用于 XAML。如果我需要发布一些示例 XAML,请告诉我。我可以做到这一点,但我希望我在这里缺少一些东西。

我正在尝试学习 MVVM,我想做正确的事情。因此,与其继续走错路,我真的很想知道“正确”的做事方式。因此,如果您发现错误,请告诉我。

谢谢!

最佳答案

是的,我建议您先回到基础知识并观看 Laurent 的关于 MVVM 的 Mix session ,您可以从 codeplex 上的 mvvmlight 站点找到指向该内容的链接。

但是要分解它,您已经遇到了我刚开始时遇到的一些障碍。

1:(最大的陷阱)要使数据绑定(bind)起作用,您必须使用属性(获取和设置模式)公开数据,只是列表变量不起作用。这适用于您要绑定(bind)的所有内容。另一种方法是直接在代码中设置项目源,但您将失去数据绑定(bind)的所有功能,包括更新。

2:要了解数据绑定(bind),您需要了解 INotifyProperty 更改模式,这是使绑定(bind)正常工作的底层 gubbins(技术术语;-D)。按照建议开始一个新的“主/详细信息”项目模板并遍历它,从保存数据的 View 模型到查看 View 模型中数据的 View (页面)

3:对列表使用 observablecollections,它们更适合绑定(bind),基本上只是带有附加功能的列表

4:请记住,您还可以绑定(bind)列表框的“selecteditem”或“selectedindex”来捕获用户选择的内容,只需确保将绑定(bind)设置为“twoway”,以便 View 可以将数据推送到 View 模型而不仅仅是读取,像这样:{binding myselecteditem, mode="twoway"}

希望这会有所帮助,但如果您仍然卡住的 Laurents 视频是最好的,请多看几遍,然后逐行跟随他的操作

关于xaml - MVVM - 摘要/详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12102440/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com