Windows phone 7 如何使用MVVM模式隐藏网格/弹出窗口

Windows phone 7 如何使用MVVM模式隐藏网格/弹出窗口,windows-phone-7,mvvm,silverlight-4.0,mvvm-light,Windows Phone 7,Mvvm,Silverlight 4.0,Mvvm Light,我正在开发一个应用程序,其中一个网格/弹出窗口在列表框点击时打开,网格使用IValueConverter成功打开,但我的问题是: ->当我按下手机上的后退键时,我在“Home_ViewModel.cs”上连接了一个RelayCommand,我能够成功地调用这个方法,但网格并没有隐藏在后退键上 ->我在BackKeyPress命令上调用了基类IsVisible属性,但无法正常工作 ->我不知道在OOPs概念上或在XAML上绑定数据时哪里出了问题。请看我的代码有天空驱动器链接。帮我这个忙 天空驱动器

我正在开发一个应用程序,其中一个网格/弹出窗口在列表框点击时打开,网格使用IValueConverter成功打开,但我的问题是:

->当我按下手机上的后退键时,我在“Home_ViewModel.cs”上连接了一个RelayCommand,我能够成功地调用这个方法,但网格并没有隐藏在后退键上

->我在BackKeyPress命令上调用了基类IsVisible属性,但无法正常工作

->我不知道在OOPs概念上或在XAML上绑定数据时哪里出了问题。请看我的代码有天空驱动器链接。帮我这个忙

天空驱动器代码链接:

-->同样的数量。我问了,但没有得到任何回应

问候,

Pardeep以下是一些示例:

在这种情况下,您可以通过以下方式从一个VM呼叫另一个VM:

    ServiceLocator.Current.GetInstance<OtherVM>().Update();
ServiceLocator.Current.GetInstance().Update();
更好的方法是

    ServiceLocator.Current.GetInstance<OtherVM>().MyCommand.Execute();
ServiceLocator.Current.GetInstance().MyCommand.Execute();

仅用于快速测试,真正的project应该可以处理消息。

Vitalii Vasylenko
我不同意您的解决方案,因此我目前的想法是:

在Allpost_ViewModel Const上注册Messenger。比如:

public AllPost_ViewModel()
    {
        GalaSoft.MvvmLight.Messaging.Messenger.Default.Register<string>(this, "String", executeThisFunction);
    }
public AllPost_ViewModel()
{
GalaSoft.MvvmLight.Messaging.Messenger.Default.Register(这个“字符串”,executethis函数);
}
并从Home_ViewModel(在backkeypress上)传递消息,如:

public void ExecuteBackCommand(System.ComponentModel.CancelEventArgs e)
{
如果(应用程序可见)
{                
GalaSoft.MvvmLight.Messaging.Messenger.Default.Send(“虚拟文本消息”、“字符串”);
}
}
->它通过消息传递成功地显示消息,但我不知道如何使用此技术来完成各自的任务。
->我只想在backkeypress上隐藏我的弹出窗口。。救命
->我的代码更新链接如下:

问候,,
Pardeep

各位开发人员,在头痛了2-3个小时后,我知道我的ViewModel无法相互连接/通信:->我想将Home_ViewModel.cs与AllPost_ViewModel.cs连接/通信,以便在BackKeyPress上隐藏我的网格布局(“在列表框点击时打开的网格”)->因为我是第一次使用MVVM,所以我不知道如何使用GalaSoft.MvvmLight.Messaging.Messenger连接我的ViewModel。->救命!!你好,帕迪普
public void ExecuteBackCommand(System.ComponentModel.CancelEventArgs e)
    {
        if (App.Visible)
        {                
            GalaSoft.MvvmLight.Messaging.Messenger.Default.Send<string>("Dummy text message", "String");
        }

    }