我使用MEF和Prism 5.0创建了一个WPF MVVM应用程序。我有MEF在启动时加载一个名为MobileRecruiterModule
的模块(下面)。我需要从App.config(或任何配置文件)中读取一些设置,并使用这些配置值更新ViewModel属性,以便View可以选择它们。
在这里加载设置的适当位置在哪里?我是在MEF模块中实现的(实现Microsoft.Practices.Prism.Modularity.IModule
还是在我的视图中?
MobileRecruiterModule.cs
[ModuleExport(typeof (MobileRecruiterModule))]
public class MobileRecruiterModule : IModule
{
/// <summary>
/// The region manager
/// </summary>
[Import] public IRegionManager Region;
/// <summary>
/// Notifies the module that it has be initialized.
/// </summary>
public void Initialize()
{
Region.RegisterViewWithRegion(RegionNames.MainContentRegion, typeof (MobileRecruiterView));
}
...
}
MobileRecruiterView.xaml.cs
[Export("MobileRecruiterView")]
[PartCreationPolicy(CreationPolicy.Shared)]
[RegionMemberLifetime(KeepAlive = false)]
[Export]
public partial class MobileRecruiterView : UserControl
{
[Import]
public MobileRecruiterViewModel ViewModel
{
get { return (MobileRecruiterViewModel)DataContext; }
set { DataContext = value; }
}
[ImportingConstructor]
public MobileRecruiterView(MobileRecruiterViewModel vm)
{
InitializeComponent();
DataContext = vm;
}
}
MobileRecruiterViewModel.cs
[Export]
public class MobileRecruiterViewModel : BindableBase
{
public string DatabaseServer { get; set; }
... and a few other properties that the XAML view binds to ...
}
答案 0 :(得分:1)
我建议您在 ViewModel 构造函数中加载设置。由于 ViewModel 是视图的 DataContext ,因此您必须在显示之前对其进行初始化。我希望你不要在其中存储任何BLOB,因此* .config加载的时间足够小,可以在 UI 线程上进行。