我已经搜索并尝试了几天,最后必须在这里提出问题。 我有一个Silverlight 5应用程序,使用MVVM Light,我希望能够在主视图中动态切换视图。Silverlight在使用MVVM Light框架的视图中切换视图
为了简单起见,可以说我有2个按钮。
Button1将切换到TestView1。
Button2将切换到TestView2。
<Button Content="TestView1" Grid.Column="1" Command="{Binding CallTestView1Command}" HorizontalAlignment="Left" Margin="185,17,0,0" VerticalAlignment="Top" Width="75"/>
<Button Content="TestView2" Grid.Column="1" Command="{Binding CallTestView2Command}" HorizontalAlignment="Left" Margin="280,17,0,0" VerticalAlignment="Top" Width="75"/>
我做它是由relaycommand结合的按钮,然后instanciating对应视图的新视图模型的方式。 即:
private RelayCommand _callTestView1Command;
public RelayCommand CallTestView1Command
{
get
{
return _callTestView1Command ??
(_callTestView1Command = new RelayCommand(() =>
{
CurrentView = ViewModelLocator.NinjectKernel.Get<TestViewModel1>();
}));
}
}
的CurrentViewmodel然后设置为新视图模型。 在的MainView我已绑定了CurrentView到ContentControl中:
<Border x:Name="displayedView" Grid.Row="2">
<ContentControl Content="{Binding CurrentView}" />
</Border>
这将实际工作在一定程度上,因为CurrentView会改变,但不是实际显示视图的内容也只是显示出的命名空间ViewModel是instanciated。
到目前为止,我主要使用从这些来源采取的知识:
http://rachel53461.wordpress.com/2011/05/28/switching-between-viewsusercontrols-using-mvvm/
Loading Views into ContentControl and changing their properties by clicking buttons
,但他们不解决我的问题,还是我不太明白如何实际显示views :-(
因此,没有人有一个很好的解释,如何使用GalaSoft的MVVM Light在Silverlight 5中正确切换视图。
感谢
在CallTestView1Command第一设定CurrentView = NULL;然后分配新的项目,它也许可以解决这个问题 – Masoomian