我已經使用Unity構建了一個ViewModelLocator,並且已經成功地將它用於singleton ViewModel實例。例如:多實例視圖模型和ViewModelLocator
public class ViewModelLocator
{
private static readonly UnityContainer Container;
static ViewModelLocator()
{
Container = new UnityContainer();
if (ViewModelBase.IsInDesignModeStatic)
{
//Design Time Data Services
Container.RegisterType<IMyServiceServiceAgent, DesignMyServiceServiceAgent>();
}
else
{
//Real Data Services
Container.RegisterType<IMyServiceServiceAgent, MyServiceServiceAgent>();
}
Container.RegisterType<TreeViewViewModel>(new ContainerControlledLifetimeManager());
}
public TreeViewModel ViewModel
{
get
{
return Container.Resolve<TreeViewModel>();
}
}
}
的ViewModelLocator被定義爲在App.xaml中的資源:
<Application.Resources>
<ResourceDictionary>
<VMS:ViewModelLocator x:Key="ViewModelLocator" d:IsDataSource="True"/>
</ResourceDictionary>
</Application.Resources>
,讓我綁定到視圖模型中的任何意見如下:
DataContext="{Binding TreeViewModel, Source={StaticResource ViewModelLocator}}" d:DataContext="{d:DesignInstance IsDesignTimeCreatable=False}"
我的問題是我如何維護相同的ViewModel的多個實例相同的模式(和可混合性)?
我已經找到了我在這篇文章中想要做的參考 How to have multiple pairs "View-ViewModel"?但它沒有涉及到具體的實現。
我希望能夠做的是有不同的數據樹的這些Views/ViewModel對的多個實例,允許他們之間複製和粘貼等,但不能想到如何迎合ViewModelLocator中使用容器的特定實例?
我假設我需要按照上面提到的帖子收集某種ViewModels,但是如何將該收藏註冊到Unity容器中以及如何綁定到View中?
任何幫助,非常感謝。
這是一個非常好的問題。我被卡住的方式與你一樣。我知道它已經4年了,但是你解決了這個問題嗎?你有什麼想法?我正在使用MVVM Light。 – 2015-02-24 15:18:26