在AvalonDock中,如何确定布局是否“脏”

问题描述 投票:0回答:1

我正在WPF应用程序中使用AvalonDock。我试图找到一种确定当前布局是否“脏”的好方法。 “脏”是指布局以任何方式发生了变化,也就是说,停靠的面板的宽度发生了变化,面板的可见性发生了变化,等等。基本上,我们要加载命名的布局并将该标志标记为“脏” “,因此可以提醒用户保存其当前窗口布局,或在应用程序关闭时放弃该布局。

DocumentManager类具有LayoutChanged和LayoutChanging事件,但是这些事件仅在加载新的布局时才会触发-看来是要在DocumentManager的LayoutRoot被切换出时通知用户。

[我相信我可以通过简单地在Layout Pane祖先上订阅PropertyChanged事件来使用蛮力,但我希望有一个更优雅的解决方案。

c# wpf avalondock
1个回答
0
投票

据我所知,对于您对AvalonDock代码的要求,没有内置的解决方案。这意味着您必须像已经实现的那样手动进行操作。

为了实现您的目标,您需要监控:

  1. 用户调整任何AvalonDock DocTool的大小
  2. 任何AvalonDock DocTool的用户隐藏/显示
  3. 在任何AvalonDock DocTool上的用户的Fload / Dock操作

[点2.和3.可能是通过为所有AvalonDock DocsTools ViewModel创建基类并处理FloatCommandHideCommand上的“脏”标志而获得的。

要点1.可以通过在包含所有GridDoc UserControl的基本UserControl中放置Tool并在其上放置与Behaviour事件链接的Grid_SizeChanged来获得。

希望对您有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.