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

C# 找不到与ViewModel匹配的视图 我有一个MeVIEW和一个VIEW模型,在中间显示当前的VIEW模型。 我在不同的ViewModel之间切换当前的ViewModel,切换代码通常应该是这样工作的:CurrentViewModel=new FooViewModel(),然后它应该找到与ViewModel匹配的视图。 但在调试应用程序时,它只显示当前viewmodel所在的路径 找不到ViewModel的视图,c#,wpf,mvvm,caliburn.micro,caliburn,C#,Wpf,Mvvm,Caliburn.micro,Caliburn,我使用了Caliburn的正确文件系统 所有以“视图”命名的视图都位于“视图”文件夹中。 所有以“ViewModel”命名的视图模型都位于文件夹“ViewModels”中 是否有人知道为什么找不到正确的视图或我遗漏了什么?您必须在主窗口中定义DataTemplate: <Window.Resources> <DataTemplate DataType="{x:Type vm:PaymentViewModel}"> <v:NewPaymen

我使用了Caliburn的正确文件系统

所有以“视图”命名的视图都位于“视图”文件夹中。
所有以“ViewModel”命名的视图模型都位于文件夹“ViewModels”中


是否有人知道为什么找不到正确的视图或我遗漏了什么?

您必须在主窗口中定义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"

xmlns:vm=“clr命名空间:您的视图模型”
xmlns:v=“clr命名空间:您的视图”
然后在内容控件中绑定CurrentViewModel:

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

然后不要忘记在MainViewModel中提升PropertyChanged(如果您不在ctor中)。
这是我的第一篇帖子,希望对你有所帮助。

这是为了不使用任何mvvm框架而写的

在主窗口viewmodel中定义子viewmodel的数据模板

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

然后只会更改视图

应该是这样的

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

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

您需要为视图定义数据模板我认为使用caliburn micro时不必定义数据模板?