0

我有一个具有 AppleItems 的 ViewModel Call Apple。在 Apple ViewModel 的 UI 中有一个名为 AppleNote 的嵌套 ViewModel,其中包含 AppleNote 项。当我在 Apple ViewModel 的 UI 上时,有一个图标可以让我导航到 AppleNote 视图模型。我这样做的方式是使用下面代码中显示的事件聚合器。它使用绑定作为 DelegateCommand。我的问题是,当我在 Apple ViewModel 中的 Item#3 或 AppleItems 的任何其他项目上时,当我为该项目点击 AppleNote 时,它​​会引导我进入正确的 viewModel,但是当我想切换回该 viewModel 的 AppleItem 视图时,我刚刚到达 AppleItems 中的第一项。当回到 AppleItems viewModel 时,我怎么知道保留您来自的项目。如果有任何混淆,请告诉我,以便我说清楚。

这是一个摘要:

AppleViewModel-->Has-->AppleItems

             |

            Has--> AppleNoteViewModel-->Has-->AppleNotesItem

将某个 AppleItem 转到 AppleNote 可以正常工作,但返回某个 AppleItem 无效。

   private void AppleCommandExecute(object commandParameter)
    {

          _eventAggregator.Publish
            (new ChangeValueViewEventArgs
            {
                ViewModelType = typeof (AppleViewModel),


                Data = ValueId.ToString()
            });
    }
4

1 回答 1

1

因为我INotifyPropertyChanged直接在我的数据类中实现接口,所以我没有任何嵌套的视图模型,但我有嵌套的或分层的数据类。在我的基础集合类中,我有一个CurrentItem与集合中的项目具有相同类型的属性。

当我将这些集合之一绑定到ItemsSource集合控件的属性时,我还将该CurrentItem属性绑定到SelectedItem控件的属性。这实质上意味着我总是知道哪个是每个集合中的当前项目。

如果您实现这些CurrentItem属性之一,那么您将始终知道选择了哪个AppleItemAppleNote。您不必这些属性放入集合类中......您可以将正确类型的属性添加到您的视图模型中。关键是,如果您始终绑定到SelectedItem属性,那么您将始终知道选择了哪个项目。

于 2013-08-29T15:25:38.930 回答