這個MVVM的東西讓我頭疼。我有一個應用程序,它有一個左窗格中的編輯列表。在右邊是一個選項卡控件,在其中顯示編輯。我有一個包含視圖模型集合的主應用程序視圖模型。我把這個集合稱爲Workspaces。這是從Microsoft提供的MvvmDemoApp借用的here。如何在運行時設置視圖/視圖模型數據模板?
public ObservableCollection<WorkspaceViewModel> Workspaces
{
get
{
...
}
}
這些工作空間被綁定到一個標籤控制在主應用程序窗口,像這樣:
<DataTemplate x:Key "WorkspacesTemplate">
<TabControl
IsSynchonizedWithCurrentItem="True"
ItemSource="{Binding Workspaces}"
SelectedItem="{Binding ActiveWorkspace}"/>
</DataTemplate>
...
<ContentControl
Content="{Binding}"
ContentTemplate="{StaticResource WorkspacesTemplate}"/>
視圖模型被綁定到使用的DataTemplates像這樣的視圖:
<DataTemplate DataType="{x:Type vm:MessageLogViewModel}">
<vw:MessageLogView/>
</DataTemplate>
這工作正常。但是,現在我需要使應用程序可配置在編輯器列表從配置文件中讀取的位置。我想這個配置文件將包含每個編輯器的視圖和視圖模型組件。但是,如何將兩者綁定在一起,以便當某人綁定到視圖模型(或視圖模型集合)時,會顯示正確的視圖(類似於DataTemplate的功能,但是在代碼中,而不是XAML中)?
我試圖遠離控制反轉(IoC)技術。我不確定我們的團隊是否已經準備好了這一點。
你能否解釋一下?誰將綁定到數據模板屬性? – bsh152s 2012-03-27 21:58:27
@ bsh152s:希望編輯給你更多的指針。 – 2012-03-28 07:23:02