0

我目前有两个窗口,我的主应用程序窗口,然后我有一个“编辑器”窗口,用于更改 TreeView 中的某些内容(这些是部门)我最近实现了隐藏所有子部门/节目的能力,但是我有一个问题,如果我隐藏/显示所有这些只有原始选择将被隐藏/显示,直到我使用我的刷新功能......所以我的问题是......无论如何我可以在我的编辑器上设置我的接受按钮导致刷新我的页面,因为它们都是两个单独的文件,我似乎无法访问名为“explorer”的 TreeView

我当前的刷新是如何完成的:

        public void RefreshData()
    {
        explorer.Items.Clear();
        using (new SessionConnecter(session))
        {
            var topLevelDepartments = session.CreateCriteria(typeof(Department))
                .Add(NHibernate.Expression.Expression.Eq(Department.IS_TOP_LEVEL, true))
                .List<Department>();

            foreach (Department d in topLevelDepartments)
            {
                explorer.Items.Add(Fabric.ObjectProvider.Get<INodeWrapperFactory>().Create(d));
            }
        }
    }

当前保存代码:

        void Save(object sender, ExecutedRoutedEventArgs e)
    {
        FocusManager.SetFocusedElement(GetWindow(savebutton), savebutton);
        if (!session.IsConnected)
            session.Reconnect();

        try
        {
            if (ValidateModel())
            {
                session.Save(model);
                if (pendingParent != null)
                {
                    model.Parent = pendingParent;
                    // session.Save(pendingParent); - should cascade
                }

                session.Flush();
                Close();
            }
        }
        catch (NHibernate.Classic.ValidationFailure ex)
        {
            if (pendingParent != null)
                session.Refresh(pendingParent);

            if (session.IsConnected)
                session.Disconnect();

            MessageBox.Show(this, ex.Message, this.Title, MessageBoxButton.OK, MessageBoxImage.Warning);
        }
    }
4

2 回答 2

0

如果您将两个视图绑定到同一个对象,则正在更改的对象应该简单地引发 OnProperyChanged 事件。如果视图绑定到两个不同的对象(ViewModels),但这些 ViewModels 共享同一个模型,您可能希望从另一个 ViewModel 通知一个 ViewModel 模型已更改。

于 2012-10-08T13:57:43.963 回答
0

在这种情况下,解决方案可能是使用消息。你看过 Mvvm Light Toolkit 的消息吗?这是沟通距离对象、其他窗口等的好方法。您可以通过创建一个静态类(所有应用程序都相同)来实现您自己的消息机制,然后实现您自己的订阅/调用机制......希望对您有所帮助。

于 2012-10-08T14:30:18.640 回答