关于ViewModel管理的问题(DesignTime与运行时间)

Ada*_*kis 9 c# wpf xaml mvvm

我有一个相当基本的WPF UI,用户请求导致我的TabControl中打开一个新选项卡.TabControl绑定到ObservableCollection<ViewModelBase>

我将ViewModel实例添加到此集合中,并根据以下模板显示相应选项卡的内容:

    <DataTemplate DataType="{x:Type viewModels:UserUploadsViewModel}">
        <userControls:UserUploads />
    </DataTemplate>
Run Code Online (Sandbox Code Playgroud)

现在让我们说在UserUploads控件内部,我想在XAML中连接一个VM以帮助设计,如下所示:

<UserControl x:Class=".....UserUploads"
   .....
    DataContext="{Binding Source={StaticResource ViewModelLocater},
                  Path=UserAdministrationViewModel}">
Run Code Online (Sandbox Code Playgroud)

此属性将在运行时返回具有实时服务的VM,并在设计时返回具有模拟数据的VM.

问题:这个XAML会干扰我在将TabItems内容绑定到ViewModel实例时所做的事情,并依赖上面的dataTemplate来呈现正确的View吗?如果是这样,有没有办法让这两个概念一起工作?

ani*_*vas 27

有一种更简单的方法可以做到这一点.有一个DesignTimeUserAdministrationViewModel在构造函数中使用静态数据填充它,是指在UserControl为:

<UserControl d:DataContext="{d:DesignInstance designTimeVMs:DesignTimeUserAdministrationViewModel, IsDesignTimeCreatable=True}">
Run Code Online (Sandbox Code Playgroud)

这样,您就可以绑定设计时测试数据,d:DataContext并将运行时实时数据绑定到实际数据DataContext.更多细节在这里.

  • 你的链接已经死了 - 你删除了你的WordPress网站 (4认同)