MVVM从其他工作区(而不是主控制面板)打开新工作区

时间:2009-06-29 05:14:56

标签: .net wpf mvvm

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

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

谢谢大家和快乐编程

GAurav Joshi

1 个答案:

答案 0 :(得分:1)

这有点牵扯,所以我们一次只能做一件事:

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

public bool IsSelected { get; set; }

<击> (编辑:正如我所指出的那样,CustomerViewModel类已经具有此属性,因此上述特定项目不是必需的 - 尽管通常是这样。)

然后,您需要将IsSelected属性数据绑定到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}" ...>

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

您可以使用LINQ查找具有IsSelected == true

的客户