其他分享
首页 > 其他分享> > CodeGo.net>如何将窗口实例放置在LayoutAnchorable AvalonDock 2

CodeGo.net>如何将窗口实例放置在LayoutAnchorable AvalonDock 2

作者:互联网

我正在将WPF C#应用程序(不是MVVM)中的AvalonDock从1.3升级到2.0.在1.3中,我能够放置自定义窗口,只要使用了DockableContent:
XAML:

<!--<Window-->
<ad:DockableContent   x:Class="Test.JournalWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:ad="clr-namespace:AvalonDock;assembly=AvalonDock" 
        xmlns:local="clr-namespace:Test"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"

        Loaded="Journal_Loaded" StateChanged="Journal_StateChanged"
        Title="Journal" Icon = "Resources/journalLog.ico" HideOnClose="True" Height="300" Width="Auto">

    <ad:DockableContent.Resources>
      </ad:DockableContent.Resources>

                <Grid>  </Grid>
</ad:DockableContent>
<!--</Window>-->

背后的代码:

public partial class JournalWindow : DockableContent
    {
        public JournalWindow()
        {
            InitializeComponent();
        }

MainWindow中显示实例化元素的代码:

JournalWindow journalWindow;
 journalWindow = new JournalWindow()
            {
                Name = nameJournalWindow,
                Title = "Journal"
            };

            journalWindow.IsCloseable = true;
            journalWindow.HideOnClose = true;
            journalWindow.Show(dockManager);

如何使用AvalonDock 2在LayoutAnchorable或其他布局元素(以前称为DockableContent)中放置和显示JournalWindow的实例?

解决方法:

新版本对AvalonDock进行了很多更改.在AD 2.0中,您有两种选择:
1)最简单的方法是创建一个标准的UserControl(在您的情况下是从UserControl而不是DockableContent派生的JournalWindow)并将该控件放入LayoutAnchorable(作为其Content).
样例代码:

<UserControl x:Class="Test.JournalWindow" ...>
...
</UserControl>

<LayoutAnchorable Title="My Journal Window">
   <testNamespace:JournalWindow/>
</LayoutAnchorable>

2)推荐的一种方法是使用MVVM方法,为此,我将您带到AvalonDock库附带的示例项目MVVMTestApp:
http://avalondock.codeplex.com/downloads/get/558780

do

标签:avalondock,wpf,xaml,c
来源: https://codeday.me/bug/20191031/1976406.html