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

标签 .net wpf mvvm

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

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

谢谢大家,祝编程愉快

高拉夫·乔希

最佳答案

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

您需要做的第一件事是让 View Model 知道选择了哪个项目。为此,您需要向 Customer 添加 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}" ...>

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

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

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

相关文章:

.net - 循环依赖与 DRY

wpf - 我应该使用哪个范围将 DbContext 与 WPF 应用程序中的 Ninject 绑定(bind)

c# - 如何通过 View 模型库访问所有 View 模型?

c# - mvvm 绑定(bind) selecteditem 以更新 ListView

c# - 我如何设计一个类来接收具有未知数量参数的委托(delegate)?

.net - 目录内的 T4 模板

c# - 如何有效地检查一条路径是否是 C# 中另一条路径的子路径?

wpf - 按钮模板没有清晰地呈现图像

mvvm - 命令和 MVVM 原理 - RelayCommands

silverlight-4.0 - 如何: animate a MVVM ViewModel property in Silverlight 4?