如何在Prism中使用MvvmLight或Unity?
时间: 2024-11-29 12:35:18 浏览: 8
MVVMLight框架Demo
Prism是一个.NET框架,它扩展了Windows Presentation Foundation (WPF) 和 Silverlight 的MVVM(Model-View-ViewModel)架构。MvvmLight和Unity都是Prism库中的可选模块,用于依赖注入(DI) 和管理应用程序组件。
要在Prism中使用MvvmLight:
1. **添加依赖项**:
首先,在项目中安装Prism和MvvmLight库。对于NuGet,可以在`Package Manager Console`运行以下命令:
```
Install-Package Prism.Forms
Install-Package Prism.Mvvm -Version 7.x.y
Install-Package MvvmLight -Version 8.x.y
```
2. **设置基础架构**:
在App.xaml.cs中,配置Prism和MvvmLight的基础架构:
```csharp
using Prism.Ioc;
// ...
protected override void OnInitialized()
{
base.OnInitialized();
InitializeComponent();
ContainerRegistry container = new ContainerRegistry();
container.RegisterSingleton<IPlatformServices, Xamarin.Forms.FormsIntegratedPlatformServices>();
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
SimpleIoc.Default RegisterTypesForNavigation();
Bootstrapper.Current.Run();
}
```
3. **创建ViewModel**:
使用MvvmLight的`RegionManager`来导航到ViewModel:
```csharp
public class MainViewModel : BindableBase
{
private readonly IRegionManager _regionManager;
public MainViewModel(IRegionManager regionManager)
{
_regionManager = regionManager;
// 添加ViewModel实例到特定区域
_regionManager.RequestNavigate("MainRegion", new Uri("/Views/YourView.xaml", UriKind.Relative));
}
// ViewModel其他属性和方法...
}
```
4. **视图导航**:
在XAML中,使用`Frame`或`ContentPage`配合`Region`控件来显示ViewModel对应的视图:
```xaml
<prism:Region Name="MainRegion" />
<!-- 或者 -->
<prism:XamarinShell RegionManager="{Binding Path=RegionManager}" />
```
至于Unity,步骤类似,但容器注册稍有不同:
1. 在`OnInitialized`里,使用`UnityContainer.RegisterType`代替`SimpleIoc.Default.RegisterType`进行类型注册。
```csharp
using Unity.IoC;
// ...
var unityContainer = new UnityContainer();
unityContainer.RegisterType<IPlatformServices, Xamarin.Forms.FormsIntegratedPlatformServices>();
unityContainer.RegisterTypeForNavigation<YourViewModel>();
ServiceLocator.SetLocatorProvider(() => unityContainer);
Bootstrapper.Current.Run();
```
阅读全文