2014-11-05 26 views
1

大圖目標:我想編輯數據窗口中的模型,該數據窗口中充滿了編輯給定模型的屬性頁面。我想用符合它們的多個界面來標記這些模型。對於每個接口,都存在關聯的屬性頁視圖模型和視圖。如何使用容器來解析與模型關聯的視圖模型的集合?

我在努力的是如何解決從滿足1-N接口的給定模型中收集屬性頁視圖模型。

我想知道是否可以在容器中放置一個屬性頁面視圖模型工廠?我會嘗試從容器中解析屬性頁面視圖模型的集合,並且容器將使用工廠正確地生成所需的視圖模型。我可以將該視圖模型集合交給一個數據窗口,該數據窗口將使用ViewModelToViewConverter生成視圖模型的視圖。

是否可以使用容器註冊工廠?這是實現這一目標的最佳方式嗎?我想我可以讓數據窗口的viewmodel句柄將模型轉換爲viewmodels的集合,但是這種感覺超出了範圍。

回答

0

我認爲你可以創建一個你想在主視圖模型中編輯的模型列表(ObservableCollection)。然後創建一個自定義視圖的數據模板一個ItemsControl:

<ItemsControl ItemsSource="{Binding MyModels}"> 
    <ItemsControl.ItemTemplate> 
    <DataTemplate> 
     <myViews:ModelEditorView /> 
    </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

然後你有自動爲您ModelEditorView創造了這個視圖模型:

public class ModelEditorViewModel : ViewModelBase 
{ 
    public ModelEditorViewModel(MyModel model /*, other dependency injections here*/) 
    { 
     Argument.IsNotNull(() => model); 

     Model = model; 
    } 

    public MyModel Model { get; private set; } 
} 

然後一切都會爲你創建自動。

+0

謝謝,這是我使用的解決方案。 – Tim 2014-11-10 19:30:23