2016-11-07 73 views
0

我有一个MainView和一个ViewModel,它在中间显示当前的ViewModel。
我在不同的ViewModel之间切换当前的ViewModel,切换的代码通常应该像这样工作:CurrentViewModel = new FooViewModel();然后它应该找到与ViewModel相匹配的View。
但是,当我调试应用程序时,它只显示当前视图模型所在的路径 - >它 未找到ViewModel的视图。未找到ViewModel的匹配视图

我用卡利的正确的文件系统。

最后以“View”命名的所有视图位于文件夹“Views”中。
所有的ViewModels命名,到底“视图模型”,并位于该文件夹“的ViewModels”

有没有人有一个想法,为什么它没有找到正确的观点还是我错过了什么?

+0

您需要定义数据模板视图 –

+0

我认为我没有同时使用微卡利来定义数据模板? – Revooo96

回答

-1

您的主窗口定义的DataTemplate:

<Window.Resources> 
    <DataTemplate DataType="{x:Type vm:PaymentViewModel}"> 
     <v:NewPaymentView/> 
    </DataTemplate> 
    <DataTemplate DataType="{x:Type vm:MainMenuViewModel}"> 
     <v:MainMenu/> 
    </DataTemplate> 
</Window.Resources>  

xmlns:vm ="clr-namespace:Your ViewModels" 
xmlns:v="clr-namespace:Your Views" 

然后你绑定你CurrentViewModel在内容控制:

<ContentControl Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" Content="{Binding CurrentViewModel}" /> 

那么不要忘记提高的PropertyChanged你MainViewModel(如果你不在ctor)。 这是我的第一篇文章,希望这个帮助。

-1

这是不使用任何MVVM框架

定义数据模板在主窗口视图模型孩子的ViewModels。

对于整个应用程序,您必须为您的主视图模型创建静态对象。

然后只有意见将被改变。

它应该是这样的......

public partial class App : Application 
{ 
    public static MainWindowViewModel mainWindowViewModel; 

    public App() 
    { 
     mainWindowViewModel = new MainWindowViewModel(); 
    } 
} 
+0

这是为了不使用任何mvvm framwork –