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

时间:2013-10-24 09:40:27

标签: windows-phone-7 mvvm silverlight-4.0 mvvm-light

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

- >当我在电话上按回键时,我在“Home_ViewModel.cs”上挂了一个RelayCommand,我能够成功调用方法,但Grid不会隐藏在BackKeyPress上。

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

- >我不知道我在OOPs概念或XAML上的绑定数据上工作错误。请查看具有Sky-Drive Link的我的代码。帮帮我!!!

Sky-Drive代码链接:

Problematic Code Link

- >相同的qut。我问HERE但没有得到任何回复

此致

Pardeep

2 个答案:

答案 0 :(得分:0)

以下是一些示例:onetwo

在值得的情况下,您可以通过以下方式从一个VM呼叫到另一个VM:

    ServiceLocator.Current.GetInstance<OtherVM>().Update();

更好的方法是

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

仅用于快速测试,真正的项目应该用于消息。

答案 1 :(得分:0)

你好 Vitalii Vasylenko 我不同意你的解决方案,所以我到目前为止:

在Allpost_ViewModel constr上注册一个Messenger。喜欢:

public AllPost_ViewModel()
    {
        GalaSoft.MvvmLight.Messaging.Messenger.Default.Register<string>(this, "String", executeThisFunction);
    }

并从Home_ViewModel传递消息(在backkeypress上),如:

public void ExecuteBackCommand(System.ComponentModel.CancelEventArgs e)
    {
        if (App.Visible)
        {                
            GalaSoft.MvvmLight.Messaging.Messenger.Default.Send<string>("Dummy text message", "String");
        }

    }

- &GT;它通过消息传递成功显示消息,但我不知道如何使用这种技术来完成我自己的任务   - &gt;我只想在backkeypress上隐藏弹出窗口..帮助!!
   - &GT;我的代码的更新链接在这里:Code Link

此致   Pardeep