AvalonDock: динамическое изменение свойства CanClose LayoutAnchorablePane.

В AvalonDock можно ли динамически изменять свойство LayoutAnchorablePane CanClose во время выполнения? Я хотел бы предотвратить/заблокировать изменения макета, если пользователь специально не желает этого и не включает его.

Я пробовал следующие подходы:

  1. Привязка: невозможно привязать свойство, потому что оно не является DependencyProperty, поэтому что-то вроде этого не работает: <dock:LayoutAnchorable CanClose="{Binding CanClose}">
  2. Свойство CanClose: изменение свойства CanClose LayoutAnchorablePane в программном коде невозможно, так как это свойство доступно только для чтения.

person Étienne Laneville    schedule 29.03.2021    source источник


Ответы (1)


Согласно исходному коду LayoutAnchorablePane:

#region CanClose

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

#endregion

свойство CanClose зависит от всех дочерних элементов панели, поэтому один из способов изменить значение CanClose элемента LayoutAnchorablePane — установить для всех его дочерних свойств CanClose желаемое значение. Ниже приведен пример:

...
foreach(var child in pane.Children)
{
    child.CanClose = true; // or false.
}
...
person Gellio Gao    schedule 13.05.2021