1
这可能很简单,但我们继续为此而努力。多个项目之间的Silverlight导航
我们使用Silverlight和MVVM,让我们说,我们有两个silverlight的类每一个视图,视图模型库。
如果我们有,说转到其他视图中的每个视图按钮,我们如何设置导航显示,而无需创建循环引用其他视图/视图模型?
这可能很简单,但我们继续为此而努力。多个项目之间的Silverlight导航
我们使用Silverlight和MVVM,让我们说,我们有两个silverlight的类每一个视图,视图模型库。
如果我们有,说转到其他视图中的每个视图按钮,我们如何设置导航显示,而无需创建循环引用其他视图/视图模型?
由于您使用的MVVM,正确的是是使用事件聚合。每个视图模型都可以触发一个“NavigationRequested”事件,然后顶层应该监听该事件并进行相应的导航。举个简单的例子:
private void Application_Startup(object sender, StartupEventArgs e)
{
IEventPublisher publisher = new EventPublisher();
var viewModel = new ViewModel(publisher);
var view1 = new View1 { DataContext = viewModel };
var view2 = new View2 { DataContext = viewModel };
this.RootVisual = view1;
view1.DataContext = viewModel;
publisher.Get<NavigationRequested>()
.ObserveOnDispatcher()
.Select(item => item.ViewName)
.Subscribe(name => RootVisual = name == "View1" ? view1 : view2);
this.RootVisual = view1;
}
请注意,我在上面使用的语法与this event aggregator that uses the RX extensions,但不管是同样的想法应适用其中MVVM框架,如果有的话,你使用。
这基本上是我们正在做的......谢谢。 – AWeim