Tag: avalondock

如何使用AvalonDock 2.0创建没有自动隐藏的底部面板?

我正在使用AvalonDock 2.0 我觉得它应该是非常基本的,但文档没有说一件事,我已经玩了2个小时试图弄明白。 所以,如果这太简单了,我很抱歉。 我想要标题所说的。 该文档提到了如何制作一个底部面板但只有一个自动隐藏的面板,这不是我想要的。 我试图在代码隐藏中切换它的自动隐藏,但高度没有受到影响所以每次应用程序启动时用户都必须将其拖动以查看面板的内容。

MVVM关闭文件的方式有可能取消出来

我正在使用Avalondock 2.x作为我的一个开源项目,如果你关闭它时文档很脏,你应该可以取消关闭。 我正在使用Caliburn Micro和Coroutine,只有我能够解决它的方法是使用CM附加到事件 事件arg有取消属性。 这个approuch的问题是它不是很MVVM友好,我已经创建了一个小帮手方法来Coroutinify这个像 public IEnumerable Coroutinify(IEnumerable results, System.Action cancelCallback) { return results.Select(r => { if (r is CancelResult) cancelCallback(); return r; }); } 用过像 public IEnumerable DocumentClosing(ScriptEditorViewModel document, DocumentClosingEventArgs e) { return Result.Coroutinify(HandleScriptClosing(document), () => e.Cancel = true); } 这有效,但它有点笨拙等,是否有更多的MVVM方式关闭Avalondock的文件取消能力? 编辑:源代码 https://github.com/AndersMalmgren/FreePIE/blob/master/FreePIE.GUI/Shells/MainShellView.xaml#L29 https://github.com/AndersMalmgren/FreePIE/blob/master/FreePIE.GUI/Shells/MainShellViewModel.cs#L110 https://github.com/AndersMalmgren/FreePIE/blob/master/FreePIE.GUI/Result/ResultFactory.cs#L49

禁用Avalondock中的放置目标(布局)

我正在使用开源库AvalonDock支持拖放多个选项卡(窗格)在外部并返回到MainWindow,我想禁用大多数可能的放置目标(或者说布局),比如将标签放在另一个下面或放置标签并排。 换句话说,我只想允许在firefox或chrome浏览器中的“一行标签”中放置标签。 是否有任何属性可以禁用放置目标(布局),如果是,您能否提供一个简短的代码示例? 这是一个带有三个可停靠窗格(LayoutDocuments)的MainWindow的简单示例,它看起来像WPF标准TabControl的TabItems(抱歉,我无法发布此截图): 谢谢你的帮助!

使用AvalonDock进行动态水平/垂直分割更改

我的界面上有两个区域(使用WPF),我希望将其拆分。 还有一个按钮可以在水平和垂直分割之间切换。 我正在使用AvalonDock。 当我在运行之前更改代码中的Orientation参数时,一切正常。 但是点击此处按钮不会改变。 没有任何事情发生,但是当我尝试拖动仍然存在的分离器时程序崩溃。 private void OnChangeView(object sender, RoutedEventArgs e) { if (LayoutPanel1.Orientation == Orientation.Vertical) { LayoutPanel1.Orientation = Orientation.Horizontal; } else { LayoutPanel1.Orientation = Orientation.Vertical; } } 我调试了它,属性本身也发生了变化。 不知道问题是什么……或者你知道一个更好的方法来实现它,但我可能也需要AvalonDock。

关闭没有itemsource的Tabcontrol虚拟化 – WPF

我有Tabcontrols和Oxyplot的错误。 我的xaml的结构是这样的:我有一个AvalonDock文档,里面我有每个文档的3个带编码的选项卡。 其中一个选项卡有另一个tabcontrol,每个选项卡中都有一个Oxyplot View。 问题是当我打开两个(有时是三个)Avalondock文档时,我得到以下exception: This PlotModel is already in use by some other PlotView control. 我想这是因为tabcontrol正在虚拟化选项卡,并且情节模型正在多次用于不同的视图。 我该怎样预防呢? 问题与这个非常相似, http://discussion.oxyplot.org/topic/506228-error-this-plotmodel-is-already-in-use-by-some-other-plotview-control/ 但我认为它还没有解决方案。 我尝试了这里给出的虚拟化解决方案 http://www.codeproject.com/Articles/460989/WPF-TabControl-Turning-Off-Tab-Virtualization 并且工作正常,但那是来自模板的标签而不是来自硬编码的标签。 有任何想法吗? 谢谢 问候。 索尔伊达尔戈。

在Avalon底座中设置面板的初始高度

我用这种方式在代码中创建面板: DockableContent dockableContent = CreateDockableContent(model); dockableContent.Show(_dockingManager, AnchorStyle.Bottom); 如何指定该面板的初始高度? 以下不起作用: dockableContent.Height = 400; 要么 ResizingPanel.SetResizeHeight(dockableContent, new GridLength(400));

使用AvalonDock 2.0时未处理的’System.ComponentModel.Win32Exception’

我正在使用AvalonDock 2.0 ,当我打开一个dock容器时,在调试模式下应用程序崩溃(它在没有调试的情况下运行时工作正常)。 我得到以下exception: WindowsBase.dll中出现未处理的“System.ComponentModel.Win32Exception”类型exception 附加信息:操作成功完成 我遇到了这个答案 ,建议取消选中“例外设置”中的框。 有线的事情是它第一次使用它。 但它不再存在了。 我试过其他机器也不行。 任何有关如何解决此问题的建议。 Avalon代码(第5行引发的exception) protected override IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled) { if (msg == Win32Helper.WM_WINDOWPOSCHANGING) { if (_internalHost_ContentRendered) { // the below line throw the exception Win32Helper.SetWindowPos(_internalHwndSource.Handle, Win32Helper.HWND_TOP, 0, 0, 0, 0, Win32Helper.SetWindowPosFlags.IgnoreMove | Win32Helper.SetWindowPosFlags.IgnoreResize); } } return […]

带有棱镜区域适配器的AvalonDock

我已经看到了一些关于SO的问题,但它们似乎都不适用于我。 我希望能够使用带有棱镜4的伟大的Avalondock 2.0 。然而,所有的样本区域适配器都适用于Avalondock 1.x系列,我无法使其正常工作。 有没有人有关于如何为AvalonDock的LayoutDocumentPane和LayoutAnchorablePane创建Region Adapter的示例代码?

如何在LayoutAnchorable AvalonDock 2中放置窗口实例

我正在将WPF C#应用程序(不是MVVM)中的AvalonDock从1.3升级到2.0。 在1.3中,只要使用了DockableContent:XAML,我就可以放置自定义窗口: <!– <!—-> 代码背后: 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 MVVM布局

所以问题之前已被问过, 但没有回答或没有按照我想要的方式回答 我知道如何使用XAML中的LayoutAnchorablePaneGroup , LayoutAnchorablePane和LayoutDocument来创建我想要的布局,但我想以MVVM方式使用Avalondock,将我的XAML减少为: 填充Documents和Anchorables会使所需的窗口出现在dockingManager中,但我看不出如何确定它们出现的位置。 我如何指定一些规则(最好在XAML中),构建一个特定的布局,而不会失去MVVM分离? EG:类型A的对象应该全部放在右边的LayoutAnchorablePane ,类型B的对象都放在左边的LayoutAnchorablePane等中。 提前致谢。