WPF AvalonDock Dokumente hinzufügen
Habe ich ein Fenster mit AvalonDock. Auf Start, es ist ein Dokument geöffnet, das gefüllt ist mit LocControllers Benutzersteuerelemente (LocControllersViewModel).
Nun möchte ich, dass wenn es doubleclicked auf eine LocController, dass die LocController usercontrol wird in einem neuen Dokument. Also das erste Dokument ist immer die übersicht, gefüllt mit LocController Benutzersteuerelemente und die anderen Dokumente, die Hinzugefügt werden, nachdem Sie einen Doppelklick.
Habe ich mir angeschaut, die AvalonDock und MVVM-Beispiel, aber ich kann nicht herausfinden, wie man das Verhalten, das ich will.
Was ich festgestellt habe bisher ist, dass ich die DocumentsSource Eigenschaft zum binden der Dokumente. Also ich denke, ich brauche zum erstellen einer Sammlung von DocumentViewModels zu binden, um die DocumentsSource Eigenschaft. Dass DocumentViewModel ich brauche, um mit zu füllen Benutzersteuerelemente. Für das erste Dokument ist eine Liste von LocController Benutzersteuerelemente, für die anderen Dokumente es können auch andere Benutzersteuerelemente.
Kann jemand mir ein kleines code-Beispiel? ich glaube nicht, dass es so schwer ist, aber ich kann es einfach nicht finden 🙁
EDIT: Hier meine aktuelle 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>
Also wie lade ich die unterschiedlichen Bedienelemente (übersicht und detail), um das Dokument ausgewählt?
- Ich werde versuchen, simplefy meine Frage. Ich habe mehrere verschiedene Benutzersteuerelemente, wie ein overviewControl, detailControl, etc. Jetzt will ich zum laden der overviewControl beim start in der ersten DocumentTab. Wenn in der overviewControl ist doubleclicked auf einer Position, die es braucht, um öffnen Sie die detailControl auf eine neue DocumentTab. Wie kann ich dies erreichen? Es kann nicht sein, dass schwer würde ich meinen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, es hat einige Zeit gedauert, aber ich habe es endlich so zu arbeiten, wie ich will.
Kommissionierung code von AvalonDock MMVM Probe und der CodeProject 'AvalonDock [2.0] Tutorial'
Das Ergebnis: beim starten der Anwendung die übersicht geladen, in der ersten Registerkarte Dokument.
Wenn Sie auf die newdetail menuitem, eine neue Registerkarte Dokument Hinzugefügt wird, nachdem die Registerkarte übersicht.
Die Registerkarte "übersicht" eingestellt ist, werden nicht in der Lage zu schließen.
Gibt es einige weitere Dinge zu tun, wie das hinzufügen einer Seite - und Boden-panel. Also ich bin noch nicht fertig, aber ich denke, wenn ich so weit gekommen, die anderen panels auch getan.
Screenshot:
XAML:
Wo ist die definition Ihres NewCommand? Ich hätte gedacht, dass die Antwort auf diese Frage liegt vor allem in dem, was die darin enthaltenen Befehls-definition, nicht einfach, wie Sie süchtig, bis die XAML?