2Fa*_*uBR 4 wpf prism unity-container mvvm
我是Wpf和Mvvm世界的新手,但我发现了几个例子,并且发现有一些不同的方式来实例化模型.我想知道最好/最正确的方法.两种方式都使用Unity
我发了什么:
var navigatorView = new MainView();
navigatorView.DataContext = m_Container.Resolve<INavigatorViewModel>();
m_RegionManager.Regions["NavigatorRegion"].Add(navigatorView);
Run Code Online (Sandbox Code Playgroud)
我做了什么:
var navigatorView = m_Container.Resolve<MainView>;
m_RegionManager.Regions["NavigatorRegion"].Add(navigatorView);
Run Code Online (Sandbox Code Playgroud)
并且我更改了构造函数以接收viewmodel,因此我可以将datacontext指向它:
public MainView(NavigatorViewModel navigatorViewModel)
{
this.DataContext = navigatorViewModel;
}
Run Code Online (Sandbox Code Playgroud)
其他例子我发现了另一种方式:
...vm = new viewmodel
...m = new model
v.model = vm;
Run Code Online (Sandbox Code Playgroud)
获取/设置DataContext
干杯
我喜欢Igor的建议,但没有viewmodel知道视图.我更喜欢我的依赖项向一个方向(View - > ViewModel - > Model).
我所做的是ViewModel-First,只是DataTemplate的viewmodel.所以我这样做:
MainViewModel mainViewModel = container.Resolve<MainViewModel>();
region.Add(mainViewModel, "MainView");
region.Activate(mainViewModel);
Run Code Online (Sandbox Code Playgroud)
添加了ViewModel - >使用WPF数据模板完成的视图映射(不过我认为这种方法不适用于Silverlight)
App.xaml中:
<Application.Resources>
<DataTemplate DataType="{x:Type viewModels:MainViewModel}">
<views:MainView />
</DataTemplate>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)
而已!我喜欢这种方法.我喜欢它的感觉就像魔术一样.它还具有以下优点:
| 归档时间: |
|
| 查看次数: |
2610 次 |
| 最近记录: |