我有一個窗口與AvalonDock。在啓動時會打開一個充滿LocControllers usercontrols(LocControllersViewModel)的Document。WPF AvalonDock添加文檔
現在,我想要在LocController中的LocaleController上雙擊某個新文檔中的LocController用戶控件。因此,第一個文檔始終是概述,充滿LocController usercontrols,其他文檔在雙擊後添加。
我已經看過AvalonDock和MVVM示例,但我無法弄清楚如何獲得我想要的行爲。
到目前爲止我發現的是,我必須使用DocumentsSource屬性來綁定文檔。所以我想我需要創建一個DocumentViewModel集合來綁定到DocumentsSource屬性。我需要用usercontrols來填充這個DocumentViewModel。對於第一個Document將是LocController usercontrols的列表,對於其他文檔它可以是其他usercontrols。
任何人都可以提供一個小代碼示例嗎?我不認爲這是很難的,但我無法找到它:(
編輯:這是我目前的DockingManager XAML:
<Window x:Class="AvalonDockMvvmTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:xcad="http://schemas.xceed.com/wpf/xaml/avalondock"
xmlns:AvalonDockMvvmTest="clr-namespace:AvalonDockMvvmTest"
Title="MainWindow"
Height="350"
Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Menu>
<MenuItem Header="File">
<MenuItem Header="NewDetail"
Command="{Binding NewCommand}" />
<MenuItem Header="OpenSelectDetail"
Command="{Binding OpenCommand}" />
</MenuItem>
</Menu>
<xcad:DockingManager x:Name="DockManager"
Margin="3 0 3 0"
DocumentsSource="{Binding Documents, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<xcad:DockingManager.LayoutItemTemplateSelector>
<AvalonDockMvvmTest:PanesTemplateSelector>
<AvalonDockMvvmTest:PanesTemplateSelector.OverViewTemplate>
<DataTemplate DataType="{x:Type AvalonDockMvvmTest:OverviewViewModel}"> <!-- Overview user control -->
</DataTemplate>
</AvalonDockMvvmTest:PanesTemplateSelector.OverViewTemplate>
<AvalonDockMvvmTest:PanesTemplateSelector.DetailTemplate>
<DataTemplate DataType="{x:Type AvalonDockMvvmTest:DetailViewModel}"> <!-- Detail user control -->
</DataTemplate>
</AvalonDockMvvmTest:PanesTemplateSelector.DetailTemplate>
</AvalonDockMvvmTest:PanesTemplateSelector>
</xcad:DockingManager.LayoutItemTemplateSelector>
</xcad:DockingManager>
</Grid>
</Window>
那麼,如何加載不同的控件(概述和細節)文檔窗格?
我會盡量簡化我的問題。我有幾個不同的用戶控件,比如overviewControl,detailControl等。現在我想在第一個DocumentTab中啓動overviewControl。如果在overviewControl中雙擊某個項目,則需要在新的DocumentTab上打開detailControl。我怎樣才能做到這一點?我不會那麼認真。 – PitAttack76