【问题标题】:Josh smith MVVM Pattern Big problemJosh smith MVVM 模式 大问题
【发布时间】:2010-10-20 03:55:42
【问题描述】:

我正在使用 Josh Smith THE MODEL-VIEW-VIEWMODEL (MVVM) DESIGN PATTER FOR WPF 创建项目

但是有一个问题。相同的工作区显示相同的操作。我的VIEW 包含选项卡控件。创建 2 个或更多相同的工作区后,当我从任何工作区更改选项卡控件的选定索引时,其他相同的工作区选项卡控件显示相同的结果。

我在 Josh smith 示例项目中进行了测试。但和我的项目一样。如果你想展示。从here 下载 Josh smith 代码并在 MainWindowViewModel.cs 上更改以下代码

void ShowAllCustomers()
        {
            AllCustomersViewModel workspace = null;
                this.Workspaces.FirstOrDefault(vm => vm is AllCustomersViewModel)
                as AllCustomersViewModel;

            if (workspace == null)
            {
                workspace = new AllCustomersViewModel(_customerRepository);
                this.Workspaces.Add(workspace);
            }

            this.SetActiveWorkspace(workspace);
        }

void ShowAllCustomers()
        {
            AllCustomersViewModel workspace = null;

            workspace = new AllCustomersViewModel(_customerRepository);
            this.Workspaces.Add(workspace);            

            this.SetActiveWorkspace(workspace);
        }

然后运行代码并打开 2 个或更多 All Customer view 并更改列表视图列顺序。所有打开的all customer view 显示相同的结果

如何解决这个问题

【问题讨论】:

    标签: wpf mvvm


    【解决方案1】:

    如果我可以在 http://www.codeproject.com/KB/WPF/CinchV2_3.aspx 引用 Cinch 的创建者 Sacha Barber 的话,请参阅“WorkSpaces : Special Notes”部分 从它的声音你可能会遇到同样的问题,但我也在学习,所以我可以错了。

    “现在所有这一切都很棒,但不幸的是,WPF 以 TabControl 的形式在我们的路径中抛出了一些奇怪的东西。这是控件的混蛋。你们中有多少人知道在 WPF 中 TabControls VisualTree 只保留VisualTree 中的选定项。

    这听起来对你不利吗?不,再想一想(虽然这只是使用 DataTemplates 时的问题,直接 TabItem / View 组合是可以的)。所以我们有几个使用 MeffedMVVM 在 TabControl 中创建 ViewModel 的视图。然后我们更改选项卡,并猜测视图被丢弃的内容,当我们返回到之前的 TabItem 时,因为我们使用的是视图 1st 和 MeffedMVVM,因此会为视图创建一个新的 ViewModel。”

    【讨论】:

      【解决方案2】:

      我不确定我是否理解您要说的内容,但我遇到了一个问题,即添加工作区时未选择新选项卡。在 TabControl 上将 IsSynchronisedWithCurrentItem 属性设置为 True 解决了我的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-19
        • 2012-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多