我試圖找到用於創建視圖模型和服務的最佳實踐(服務只會談到服務器並返回數據視圖模型)。我見過兩種不同的方法。WPF - 使用行爲實例化視圖模型和服務
- 使用視圖模型定位
- 使用行爲(我不知道這是好辦法)
對於第二種方法,你在用戶控件定義的行爲和附加事件創建一個視圖模型實例和服務實例並將它們放在一起。
protected override void OnAttached()
{
var service = Activator.CreateInstance(ServiceType)
var viewModel = Activator.CreateInstance(ModelType);
base.AssociatedObject.DataContext = viewModel;
base.OnAttached();
}
,並在你的用戶控件XAML
<i:Interaction.Behaviors>
<be:ViewModelBehavior ViewModelType="{x:Type vm:ViewModel1}" ServiceType="{x:Type serv:Service1}"/>
</i:Interaction.Behaviors>
這是一個良好的使用行爲,或者我應該只使用視圖模型定位模式。
您的行爲與ViewModelLocator實現爲行爲無關。另外,你對ViewModelLocator的理解還不清楚。通常,它是任何組件,允許您訪問視圖模型實例並具有多種風格。 – Liero
我在看的MVVM光實施視圖模型定位,你的意思是第一個方法更好? –