在Silverlight中从一个子页面导航到另一个子页面

时间:2011-08-03 15:51:12

标签: silverlight mvvm

我们在应用程序中使用Silverlight MVVM模式。在应用程序中有一个主页(不会改变)并且有子页面,这些子页面根据用户执行的操作而改变。直到现在我一直在使用代码隐藏在不同子页面之间导航,代码如下:

ChildPage2 obj = new ChildPage2 ();
Dialog_Box.Children.Clear();
Dialog_Box.Visibility = Visibility.Visible;
Dialog_Box.Children.Add(obj );

但是当我使用MVVM模式时,我想使用我的ViewModel做同样的事情。有没有办法使用ViewModels做同样的事情(导航)。

请提前帮助,谢谢。

Vaibhav的

2 个答案:

答案 0 :(得分:1)

一些基本规则:

  • ViewModels不应该知道它们是如何显示的。它们纯粹是视图和真实数据对象之间的粘合剂。商业逻辑。
  • 视图仅知道如何显示具有特定形状的数据。他们不应该知道数据的来源(违反此规则的例外是使用DomainDataSources ......但这是另一个故事)。

查看Silverlight中可用的导航功能(尝试在Visual Studio中创建示例业务应用程序)。然后,根据配置的映射单击超链接时,将创建视图。

替代方案(在代码中执行)是将控制器引入MVVM。这样可以在视图,视图模型和数据之间维护关注点,但会增加我通常为PRISM-based个应用程序保留的复杂程度。最好你尝试超链接/网址映射选项。

答案 1 :(得分:0)

我之前解决这个问题的方法是在ViewModel中拥有每个子页面将绑定到的属性:

public class YourViewModel : INotifyPropertyChanged
{
    public Visibility FooVisibility { get { /* ... */ } }
    public Visibility BarVisibility { get { /* ... */ } }
}