0
我正在嘗試使用MVVM模式,具體來說,我正在試圖確定如何使用包含視圖(和視圖模型)的單獨類庫進行工作。在網絡上看起來,這與棱鏡和MEF都以不同的方式完成,而這可能就是我最終要做的。但最初,我正在使用ServiceLocator示例John Papa created。Silverlight類庫中的MVVM定位器類
在該樣本中,ViewModelLocator的位置在App.xaml中被定義爲靜態資源:
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:MVVMLib="clr-namespace:MVVMLib;assembly=MVVMLib"
x:Class="VMLocatorDemo.App">
<Application.Resources>
<MVVMLib:ViewModelLocator x:Key="VMLocator"/>
<MVVMLib:IndexerConverter x:Key="VMIndexerConverter" />
</Application.Resources>
</Application>
因爲view.xaml是在同一個項目,它可以指定位器和一切是罰款:
<Grid x:Name="LayoutRoot" Background="White"
DataContext="{Binding Source={StaticResource VMLocator}, Converter={StaticResource VMIndexerConverter}, ConverterParameter=MainPageViewModel}">
<TextBlock Text="{Binding Path=CompanyName}"/>
</Grid>
然而,有獨立的類庫,我不能這樣做,因爲view.xaml不知道是哪裏的定位是,嗯,位於。我需要將定義保留在xaml中,以便我可以繼續使用不同的運行時/設計時視圖模型。
我想我的問題是,我如何在類庫中定義Locator類,或者,這正是爲什麼其他工具如MEF和/或棱鏡是必需的?
非常感謝
傑森
感謝您的答覆。我並不太熟悉行爲(Silverlight新手),但我已經快速瀏覽過,並且可以看到它的工作原理。這是典型的行爲可能如何使用,或者這只是一個創意的方式,你想出解決類似的問題?這樣做有什麼限制或問題需要我注意? – Jason 2011-01-24 15:06:52