AvalonDock:动态更改 LayoutAnchorablePane 的 CanClose 属性

AvalonDock: Dynamically changing LayoutAnchorablePane's CanClose property

在 AvalonDock 中,是否可以在运行时动态修改 LayoutAnchorablePaneCanClose 属性?我想 prevent/lock 更改布局,除非用户特别希望这样做并将其打开。

我尝试了以下方法:

  1. 绑定:无法绑定 属性,因为它不是 DependencyProperty,所以这样的事情不起作用:<dock:LayoutAnchorable CanClose="{Binding CanClose}">
  2. CanClose 属性:无法在代码隐藏中更改 LayoutAnchorablePaneCanClose 属性,因为 属性 是只读。

根据LayoutAnchorablePane的源代码:

#region CanClose

public bool CanClose
{
  get
  {
    return Children.All( a => a.CanClose );
  }
}

#endregion

CanClose 属性 取决于窗格的所有子项,因此更改 LayoutAnchorablePaneCanClose 值的一种方法是设置其所有子项的CanClose 属性 到你想要的值。下面是一个例子:

...
foreach(var child in pane.Children)
{
    child.CanClose = true; // or false.
}
...