我正在使用Josh Smith在http://msdn.microsoft.com/en-us/magazine/dd419663.aspx创建的示例来学习MVVM
我想在现有代码中添加更新功能,

就像用户在“所有客户”的网格上看到数据一样,用户可以通过双击来编辑特定记录,双击将打开新选项卡(用于新客户的相同 View / View 模型)。我不知道该怎么做,我必须通过mainwindowviewmodel调用它,还是有其他方法。

谢谢大家,编程愉快

加拉夫·乔希

最佳答案

它涉及到一点,所以让我们一次做一件事:

您需要做的第一件事是让 View 模型知道选择了哪个项目。为此,您需要向客户添加IsSelected属性

public bool IsSelected { get; set; }

(编辑:正如我已经指出的那样,CustomerViewModel类已经具有此属性,因此上面的内容对于该特定项目不是必需的,尽管它是一般情况。)

然后,您需要将IsSelected属性数据绑定(bind)到ListView中的项目。实现此目的的一种方法是针对客户的样式。像这样:
<Style x:Key="CustomerListStyle" TargetType="{x:Type ListViewItem}">
    <Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}" />
</Style>

然后使用ListView的ItemContainerStyle分配此样式:
<ListView ItemContainerStyle="{StaticResource CustomerListStyle}" ...>

为了能够编辑选定的客户,您应该向AllCustomersViewModel添加一个EditCostumer命令。使用RelayCommand实现此命令以显示所选项目的编辑 View 。

您可以使用LINQ查找具有IsSelected == true的客户。

关于.net - MVVM从其他工作区(而不是主控制面板)打开新的工作区,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1056663/

10-13 03:10