3

我正在将 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 的实例?

4

1 回答 1

4

AvalonDock 在新版本中发生了很大变化。在 AD 2.0 中,您有两个选择:1) 最简单的一个是创建一个标准 UserControl(在您的情况下,JournalWindow 从 UserControl 而不是 DockableContent 派生)并将控件放在 LayoutAnchorable 内(作为其内容)。示例代码:

<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

阿多

于 2012-12-12T11:18:35.833 回答