3 回答
TA贡献1735条经验 获得超5个赞
您可以在 App.xaml 中实例化该视图模型,以便整个应用程序都可以访问它。
<Application.Resources>
<local:ViewModel x:Key="sharedViewModel" />
</Application.Resources>
然后在您想要使用该数据上下文时的视图中,您执行以下操作...
DataContext="{StaticResource sharedViewModel}"
TA贡献2021条经验 获得超8个赞
我有同样的问题,但找不到好的答案。经过一段时间的思考,我得出的结论是,在大多数情况下,最好在视图模型和视图之间创建一对一的映射。因此,在这种情况下,我将创建两个独立的视图模型,它们继承自基本视图模型。这样你就可以在基本视图模型中放置任何常见的东西,并添加任何可能与更具体的视图模型不同的字段或方法。如果视图模型真的是等效的,那么您可能首先要问自己为什么有两个单独的视图。您可以考虑将它们合并为一个视图。有两个单独的视图可能是您想要的,但这只是需要考虑的事情。
TA贡献1785条经验 获得超4个赞
实现 ViewModelLocator 既简单又容易,也是推荐的方法之一。
Idea 已经在 ViewModelLocator 类中定义了所有的 ViewModel,并在需要的地方访问 ViewModel。在不同的视图中使用相同的 ViewModel 在这里不会有问题。
public class ViewModelLocator
{
private MainWindowViewModel mainWindowViewModel;
public MainWindowViewModel MainWindowViewModel
{
get
{
if (mainWindowViewModel == null)
mainWindowViewModel = new MainWindowViewModel();
return mainWindowViewModel;
}
}
private DataFactoryViewModel dataFactoryViewModel;
public DataFactoryViewModel DataFactoryViewModel
{
get
{
if (dataFactoryViewModel == null)
dataFactoryViewModel = new DataFactoryViewModel();
return dataFactoryViewModel;
}
}
}
应用程序.xaml
xmlns:core="clr-namespace:MyViewModelLocatorNamespace"
<Application.Resources>
<core:ViewModelLocator x:Key="ViewModelLocator" />
</Application.Resources>
用法
<Window ...
DataContext="{Binding Path=MainWindowViewModel, Source={StaticResource ViewModelLocator}}">
参考:所以问题 代码从那里复制..因为我无法从我的项目中撕下代码..
- 3 回答
- 0 关注
- 381 浏览
添加回答
举报