我有一个MainView和一个ViewModel,它在中间显示当前的ViewModel
我正在不同的ViewModel之间切换当前的ViewModel,切换的代码通常应该像这样工作:CurrentViewModel = new FooViewModel();
然后它应该找到匹配的视图到ViewModel。
但是当我调试应用程序时,它只显示当前视图模型所在的路径 - >它
找不到ViewModel的视图。
我使用了Caliburn的正确文件系统。
所有以“查看”命名的视图最后都位于“视图”文件夹中 所有以“ViewModel”命名的ViewModel最终都位于“ViewModels”文件夹中
有没有人知道为什么它找不到正确的视图或我错过了什么?
答案 0 :(得分:-1)
您必须在MainWindow中定义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"
然后在Current控件中绑定CurrentViewModel:
<ContentControl Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" Content="{Binding CurrentViewModel}" />
然后不要忘记在MainViewModel中提升PropertyChanged(如果你不在ctor中)。 这是我的第一篇文章,希望对此有所帮助。
答案 1 :(得分:-1)
这是为了不使用任何mvvm框架
在主窗口视图模型中为子视图模型定义数据模板。
对于整个应用程序,您必须为主视图模型创建静态对象。
然后只会更改视图。
应该是这样的......
public partial class App : Application
{
public static MainWindowViewModel mainWindowViewModel;
public App()
{
mainWindowViewModel = new MainWindowViewModel();
}
}