Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Silverlight中从一个子页面导航到另一个子页面_Silverlight_Mvvm - Fatal编程技术网

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

在Silverlight中从一个子页面导航到另一个子页面,silverlight,mvvm,Silverlight,Mvvm,我们在应用程序中使用Silverlight MVVM模式。在应用程序中有一个主页面(不会更改)和一些子页面,这些子页面根据用户执行的操作而更改。直到现在,我一直在使用代码隐藏在不同子页面之间进行导航,代码如下所示: ChildPage2 obj = new ChildPage2 (); Dialog_Box.Children.Clear(); Dialog_Box.Visibility = Visibility.Visible; Dialog_Box.Children.Add(obj ); 但

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

ChildPage2 obj = new ChildPage2 ();
Dialog_Box.Children.Clear();
Dialog_Box.Visibility = Visibility.Visible;
Dialog_Box.Children.Add(obj );
但是当我使用MVVM模式时,我想用我的ViewModel做同样的事情。是否有方法使用ViewModels执行相同的操作(导航)

请帮忙,提前谢谢

Vaibhav

两条基本规则:
  • ViewModels不应该知道它们是如何显示的。它们纯粹是视图和真实数据对象&业务逻辑之间的粘合剂
  • 视图只知道如何显示具有特定形状的数据。他们不应该知道数据来自哪里(打破这一规则的例外是使用DomainDataSources…但这是另一回事)
查看Silverlight中可用的导航功能(尝试在VisualStudio中创建一个示例业务应用程序)。然后,在基于配置的映射单击超链接时,将创建视图

另一种方法(在代码中实现)是将控制器引入MVVM。这保持了视图、视图模型和数据之间关注点的分离,但增加了我通常为应用保留的复杂性。最好尝试超链接/url映射选项。

两条基本规则:
  • ViewModels不应该知道它们是如何显示的。它们纯粹是视图和真实数据对象&业务逻辑之间的粘合剂
  • 视图只知道如何显示具有特定形状的数据。他们不应该知道数据来自哪里(打破这一规则的例外是使用DomainDataSources…但这是另一回事)
查看Silverlight中可用的导航功能(尝试在VisualStudio中创建一个示例业务应用程序)。然后,在基于配置的映射单击超链接时,将创建视图


另一种方法(在代码中实现)是将控制器引入MVVM。这保持了视图、视图模型和数据之间关注点的分离,但增加了我通常为应用保留的复杂性。最好尝试超链接/url映射选项。

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

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

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

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