none
Avalondock Speichern und Laden RRS feed

  • Frage

  • Hallo

    Ich habe mit NuGet das Dirkster.AvalonDock Installiert. Nun möchte ich die Docking die der Benutzer macht Speichern und wieder beim nächsten Programmstart wieder Laden.

    Ich habe ein MainWindow, Window1 als UserControl und nochmal ein Control mit den Namen Links

    Es wir ein XML code in die Datei geschrieben, nur wenn es dann geladen wird zeigt er es nicht an. Die Fenster werden nicht geladen.

    Was habe ich falsch? oder besser gefragt wie muss ich es machen?

    Hier der Aufbau von

    MainWindow

    <Window
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:WpfApp5"
            xmlns:avalondock="https://github.com/Dirkster99/AvalonDock" x:Class="MainWindow"
            mc:Ignorable="d"
            Title="MainWindow" Height="450" Width="800">
        <Grid>
    
            <avalondock:DockingManager>
                <avalondock:DockingManager.Theme>
                    <avalondock:AeroTheme/>
                </avalondock:DockingManager.Theme>
                <avalondock:LayoutRoot>
                    <avalondock:LayoutPanel x:Name="MyLayoutPanel">
                        <avalondock:LayoutDocumentPane x:Name="LayoutDocumentPane">
                            <avalondock:LayoutDocument x:Name="MyLayoutDocument"/>
                        </avalondock:LayoutDocumentPane>
                    </avalondock:LayoutPanel>
                </avalondock:LayoutRoot>
            </avalondock:DockingManager>
    
        </Grid>
    </Window>


    MainWindow.vb

    Class MainWindow
        Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
            Dim mld = New AvalonDock.Layout.LayoutDocument()
            Dim MyControl As Window1 = New Window1
    
            mld.Title = "Übersicht"
            mld.Content = MyControl
            mld.IsMaximized = True
            mld.CanClose = False
    
            mld.IsSelected = True
    
            LayoutDocumentPane.Children.Add(mld)
    
        End Sub
    End Class


    Window1

    <UserControl
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:WpfApp5"
            xmlns:avalondock="https://github.com/Dirkster99/AvalonDock" x:Class="Window1"
            mc:Ignorable="d"
               >
        <Grid>
    
            <avalondock:DockingManager x:Name="DockingManager2">
                <avalondock:DockingManager.Theme>
                    <avalondock:AeroTheme/>
                </avalondock:DockingManager.Theme>
                <avalondock:LayoutRoot x:Name="myLayoutRoot">
    
                    <avalondock:LayoutPanel x:Name="myLayoutPanel">
    
                        <avalondock:LayoutAnchorablePane x:Name="myLayoutAnchorablePane" DockMinWidth="200" ResizableAbsoluteDockWidth="200" DockWidth="200">
                           
                            
                        </avalondock:LayoutAnchorablePane>
    
                        <avalondock:LayoutDocumentPaneGroup x:Name="myLayoutDocumentPaneGroup">
                            <avalondock:LayoutDocumentPane x:Name="myLayoutDocumentPane">
                            <avalondock:LayoutDocument x:Name="Label2"  Title="Und geht das?">
                                    <Grid>
                                    <Button x:Name="Button1" Content="Klick mich" Height="25" Width="120" HorizontalAlignment="Left"></Button>
                                    <Button x:Name="Button2" Content="Speichern" Width="100" Height="20" HorizontalAlignment="Right"></Button>
                                        
                                    </Grid>
                                </avalondock:LayoutDocument>
                        </avalondock:LayoutDocumentPane>
                        </avalondock:LayoutDocumentPaneGroup>
                        <avalondock:LayoutAnchorablePaneGroup x:Name="myLayoutAnchorablePaneGroup">
                            <avalondock:LayoutAnchorablePane x:Name="myLayoutAnchorablePane2" DockMinWidth="200">
                            </avalondock:LayoutAnchorablePane>
                        </avalondock:LayoutAnchorablePaneGroup>
                       
    
                    </avalondock:LayoutPanel>
                    <avalondock:LayoutRoot.BottomSide>
                        <avalondock:LayoutAnchorSide x:Name="myLayoutAnchorSide">
                            <avalondock:LayoutAnchorGroup x:Name="myLayoutAnchorGroup">
                                <avalondock:LayoutAnchorable x:Name="OutputAnchorable" Title="test" AutoHideHeight="200">
    
                                </avalondock:LayoutAnchorable>
                            </avalondock:LayoutAnchorGroup>
                        </avalondock:LayoutAnchorSide>
                    </avalondock:LayoutRoot.BottomSide>
                </avalondock:LayoutRoot>
            </avalondock:DockingManager>
    
        </Grid>
    </UserControl>


    Window1.vb

    Imports AvalonDock.Layout.Serialization
    
    Public Class Window1
        Dim mld3 = New AvalonDock.Layout.LayoutAnchorable
    
        Private Sub Window1_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
    
            Dim mld = New AvalonDock.Layout.LayoutAnchorable
            Dim MyControl As Links = New Links
    
            mld.Title = "Übersicht1"
            mld.CanHide = False
            mld.CanClose = False
            mld.Content = MyControl
    
            myLayoutAnchorablePane.Children.Add(mld)
    
            Dim mld2 = New AvalonDock.Layout.LayoutAnchorable
            Dim MyControl2 As Links = New Links
    
            mld2.Title = "Übersicht2"
            mld2.CanHide = False
            mld2.CanClose = False
            mld2.Content = MyControl2
    
            myLayoutAnchorablePane2.Children.Add(mld2)
    
            Dim MyControl3 As Links = New Links
    
            mld3.Title = "Übersicht3"
            mld3.CanHide = False
            mld3.CanClose = False
            mld3.Content = MyControl3
            mld3.ToggleAutoHide()
    
            myLayoutAnchorGroup.Children.Add(mld3)
    
            laden()
    
        End Sub
    
        Private Sub DockingManager_OnLoaded(ByVal sender As Object, ByVal e As RoutedEventArgs)
    
            OutputAnchorable.Close()
            Dim h = CType(mld3.Parent, AvalonDock.Layout.LayoutAnchorablePane)
            h.DockHeight = New GridLength(150)
        End Sub
    
        Private Sub Window1_Unloaded(sender As Object, e As RoutedEventArgs) Handles Me.Unloaded
            speichern()
        End Sub
    
        Private Sub laden()
            Using reader = New IO.StreamReader("AvalonDockSavedFile.txt")
                Dim layoutSerializer = New XmlLayoutSerializer(DockingManager2)
                layoutSerializer.Deserialize(reader)
            End Using
        End Sub
    
    
        Private Sub speichern()
            Using writer = New IO.StreamWriter("AvalonDockSavedFile.txt")
                Dim layoutSerializer = New XmlLayoutSerializer(DockingManager2)
                layoutSerializer.Serialize(writer)
            End Using
        End Sub
    
        Private Sub Button1_Click(sender As Object, e As RoutedEventArgs) Handles Button1.Click
            laden()
        End Sub
    
        Private Sub Button2_Click(sender As Object, e As RoutedEventArgs) Handles Button2.Click
            speichern()
        End Sub
    
    End Class

    AvalonDockSavedFile.txt

    <?xml version="1.0" encoding="utf-8"?>
    <LayoutRoot>
      <RootPanel Orientation="Vertical">
        <LayoutAnchorablePaneGroup Orientation="Horizontal" DockHeight="105" FloatingWidth="136" FloatingHeight="39" FloatingLeft="418" FloatingTop="107">
          <LayoutAnchorablePane DockHeight="105" FloatingWidth="136" FloatingHeight="39" FloatingLeft="418" FloatingTop="107">
            <LayoutAnchorable CanHide="False" AutoHideMinWidth="100" AutoHideMinHeight="100" Title="Übersicht3" IsSelected="True" FloatingLeft="418" FloatingTop="107" FloatingWidth="136" FloatingHeight="39" CanClose="False" LastActivationTimeStamp="03/26/2020 14:30:38" />
          </LayoutAnchorablePane>
        </LayoutAnchorablePaneGroup>
        <LayoutPanel Orientation="Horizontal" DockHeight="0.745287824758024*">
          <LayoutAnchorablePane DockWidth="200" DockMinWidth="200">
            <LayoutAnchorable CanHide="False" AutoHideMinWidth="100" AutoHideMinHeight="100" Title="Übersicht1" IsSelected="True" CanClose="False" />
          </LayoutAnchorablePane>
          <LayoutDocumentPaneGroup Orientation="Horizontal">
            <LayoutDocumentPane>
              <LayoutDocument Title="Und geht das?" IsSelected="True" IsLastFocusedDocument="True" LastActivationTimeStamp="03/26/2020 14:30:57" />
            </LayoutDocumentPane>
          </LayoutDocumentPaneGroup>
          <LayoutAnchorablePaneGroup Orientation="Horizontal" DockWidth="200">
            <LayoutAnchorablePane DockWidth="200" DockMinWidth="200">
              <LayoutAnchorable CanHide="False" AutoHideMinWidth="100" AutoHideMinHeight="100" Title="Übersicht2" IsSelected="True" CanClose="False" />
            </LayoutAnchorablePane>
          </LayoutAnchorablePaneGroup>
        </LayoutPanel>
      </RootPanel>
      <TopSide />
      <RightSide />
      <LeftSide />
      <BottomSide>
        <LayoutAnchorGroup>
          <LayoutAnchorable AutoHideHeight="200" AutoHideMinWidth="100" AutoHideMinHeight="100" Title="test" CanClose="False" />
        </LayoutAnchorGroup>
      </BottomSide>
      <FloatingWindows />
      <Hidden />
    </LayoutRoot>

    Donnerstag, 26. März 2020 13:51

Antworten

  • Hallo Mattes80,

                            <avalondock:LayoutDocument x:Name="MyLayoutDocument"/>
                            <avalondock:LayoutDocument x:Name="Label2"  Title="Und geht das?">
                                <avalondock:LayoutAnchorable x:Name="OutputAnchorable" Title="test" AutoHideHeight="200">
    Versuch es mit dem ContentId-Attribut bei LayoutDocument und LayoutAnchorable. Sieh Dir für weitere Informationen diesen Thread an:
    AvalonDock DockingManager does not load layout

    Gruß,
    Dimitar

    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Freitag, 27. März 2020 13:37
    Administrator

Alle Antworten

  • Hallo Mattes80,

                            <avalondock:LayoutDocument x:Name="MyLayoutDocument"/>
                            <avalondock:LayoutDocument x:Name="Label2"  Title="Und geht das?">
                                <avalondock:LayoutAnchorable x:Name="OutputAnchorable" Title="test" AutoHideHeight="200">
    Versuch es mit dem ContentId-Attribut bei LayoutDocument und LayoutAnchorable. Sieh Dir für weitere Informationen diesen Thread an:
    AvalonDock DockingManager does not load layout

    Gruß,
    Dimitar

    Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „IT-Pros helfen IT-Pros“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Freitag, 27. März 2020 13:37
    Administrator
  • Super Danke Danke es funktioniert
    Samstag, 28. März 2020 07:34