Browse Source

Made fixed size behavior in OnFixChildrenDockLengths optional.

See my post discussing a problem that this resolves:
https://stackoverflow.com/questions/46499858/xceed-avalondock-3-2-dockwidth-height-has-no-effect
pull/1195/head
Koby Duck 9 years ago
parent
commit
ba729dc6da
  1. 4
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorablePaneGroupControl.cs
  2. 4
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentPaneGroupControl.cs
  3. 24
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutPanelControl.cs
  4. 1
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/ILayoutPositionableElement.cs
  5. 22
      ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutPositionableGroup.cs

4
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutAnchorablePaneGroupControl.cs

@ -43,7 +43,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
for (int i = 0; i < _model.Children.Count; i++) for (int i = 0; i < _model.Children.Count; i++)
{ {
var childModel = _model.Children[i] as ILayoutPositionableElement; var childModel = _model.Children[i] as ILayoutPositionableElement;
if (!childModel.DockWidth.IsStar) if (childModel.ForceFixedDockSize && !childModel.DockWidth.IsStar)
{ {
childModel.DockWidth = new GridLength(1.0, GridUnitType.Star); childModel.DockWidth = new GridLength(1.0, GridUnitType.Star);
} }
@ -54,7 +54,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
for (int i = 0; i < _model.Children.Count; i++) for (int i = 0; i < _model.Children.Count; i++)
{ {
var childModel = _model.Children[i] as ILayoutPositionableElement; var childModel = _model.Children[i] as ILayoutPositionableElement;
if (!childModel.DockHeight.IsStar) if (childModel.ForceFixedDockSize && !childModel.DockHeight.IsStar)
{ {
childModel.DockHeight = new GridLength(1.0, GridUnitType.Star); childModel.DockHeight = new GridLength(1.0, GridUnitType.Star);
} }

4
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutDocumentPaneGroupControl.cs

@ -42,7 +42,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
for (int i = 0; i < _model.Children.Count; i++) for (int i = 0; i < _model.Children.Count; i++)
{ {
var childModel = _model.Children[i] as ILayoutPositionableElement; var childModel = _model.Children[i] as ILayoutPositionableElement;
if (!childModel.DockWidth.IsStar) if (childModel.ForceFixedDockSize && !childModel.DockWidth.IsStar)
{ {
childModel.DockWidth = new GridLength(1.0, GridUnitType.Star); childModel.DockWidth = new GridLength(1.0, GridUnitType.Star);
} }
@ -53,7 +53,7 @@ namespace Xceed.Wpf.AvalonDock.Controls
for (int i = 0; i < _model.Children.Count; i++) for (int i = 0; i < _model.Children.Count; i++)
{ {
var childModel = _model.Children[i] as ILayoutPositionableElement; var childModel = _model.Children[i] as ILayoutPositionableElement;
if (!childModel.DockHeight.IsStar) if (childModel.ForceFixedDockSize && !childModel.DockHeight.IsStar)
{ {
childModel.DockHeight = new GridLength(1.0, GridUnitType.Star); childModel.DockHeight = new GridLength(1.0, GridUnitType.Star);
} }

24
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Controls/LayoutPanelControl.cs

@ -52,14 +52,13 @@ namespace Xceed.Wpf.AvalonDock.Controls
var childContainerModel = _model.Children[i] as ILayoutContainer; var childContainerModel = _model.Children[i] as ILayoutContainer;
var childPositionableModel = _model.Children[i] as ILayoutPositionableElement; var childPositionableModel = _model.Children[i] as ILayoutPositionableElement;
if (childPositionableModel.ForceFixedDockSize)
{
if (childContainerModel != null && if (childContainerModel != null &&
(childContainerModel.IsOfType<LayoutDocumentPane, LayoutDocumentPaneGroup>() || (childContainerModel.IsOfType<LayoutDocumentPane, LayoutDocumentPaneGroup>() ||
childContainerModel.ContainsChildOfType<LayoutDocumentPane, LayoutDocumentPaneGroup>())) childContainerModel.ContainsChildOfType<LayoutDocumentPane, LayoutDocumentPaneGroup>())) {
{
childPositionableModel.DockWidth = new GridLength(1.0, GridUnitType.Star); childPositionableModel.DockWidth = new GridLength(1.0, GridUnitType.Star);
} } else if (childPositionableModel != null && childPositionableModel.DockWidth.IsStar) {
else if (childPositionableModel != null && childPositionableModel.DockWidth.IsStar)
{
var childPositionableModelWidthActualSize = childPositionableModel as ILayoutPositionableElementWithActualSize; var childPositionableModelWidthActualSize = childPositionableModel as ILayoutPositionableElementWithActualSize;
var widthToSet = Math.Max(childPositionableModelWidthActualSize.ActualWidth, childPositionableModel.DockMinWidth); var widthToSet = Math.Max(childPositionableModelWidthActualSize.ActualWidth, childPositionableModel.DockMinWidth);
@ -73,12 +72,13 @@ namespace Xceed.Wpf.AvalonDock.Controls
} }
} }
} }
}
else else
{ {
for (int i = 0; i < _model.Children.Count; i++) for (int i = 0; i < _model.Children.Count; i++)
{ {
var childPositionableModel = _model.Children[i] as ILayoutPositionableElement; var childPositionableModel = _model.Children[i] as ILayoutPositionableElement;
if (!childPositionableModel.DockWidth.IsStar) if (childPositionableModel.ForceFixedDockSize && !childPositionableModel.DockWidth.IsStar)
{ {
childPositionableModel.DockWidth = new GridLength(1.0, GridUnitType.Star); childPositionableModel.DockWidth = new GridLength(1.0, GridUnitType.Star);
} }
@ -94,14 +94,13 @@ namespace Xceed.Wpf.AvalonDock.Controls
var childContainerModel = _model.Children[i] as ILayoutContainer; var childContainerModel = _model.Children[i] as ILayoutContainer;
var childPositionableModel = _model.Children[i] as ILayoutPositionableElement; var childPositionableModel = _model.Children[i] as ILayoutPositionableElement;
if (childPositionableModel.ForceFixedDockSize)
{
if (childContainerModel != null && if (childContainerModel != null &&
(childContainerModel.IsOfType<LayoutDocumentPane, LayoutDocumentPaneGroup>() || (childContainerModel.IsOfType<LayoutDocumentPane, LayoutDocumentPaneGroup>() ||
childContainerModel.ContainsChildOfType<LayoutDocumentPane, LayoutDocumentPaneGroup>())) childContainerModel.ContainsChildOfType<LayoutDocumentPane, LayoutDocumentPaneGroup>())) {
{
childPositionableModel.DockHeight = new GridLength(1.0, GridUnitType.Star); childPositionableModel.DockHeight = new GridLength(1.0, GridUnitType.Star);
} } else if (childPositionableModel != null && childPositionableModel.DockHeight.IsStar) {
else if (childPositionableModel != null && childPositionableModel.DockHeight.IsStar)
{
var childPositionableModelWidthActualSize = childPositionableModel as ILayoutPositionableElementWithActualSize; var childPositionableModelWidthActualSize = childPositionableModel as ILayoutPositionableElementWithActualSize;
var heightToSet = Math.Max(childPositionableModelWidthActualSize.ActualHeight, childPositionableModel.DockMinHeight); var heightToSet = Math.Max(childPositionableModelWidthActualSize.ActualHeight, childPositionableModel.DockMinHeight);
@ -112,12 +111,13 @@ namespace Xceed.Wpf.AvalonDock.Controls
} }
} }
} }
}
else else
{ {
for (int i = 0; i < _model.Children.Count; i++) for (int i = 0; i < _model.Children.Count; i++)
{ {
var childPositionableModel = _model.Children[i] as ILayoutPositionableElement; var childPositionableModel = _model.Children[i] as ILayoutPositionableElement;
if (!childPositionableModel.DockHeight.IsStar) if (childPositionableModel.ForceFixedDockSize && !childPositionableModel.DockHeight.IsStar)
{ {
childPositionableModel.DockHeight = new GridLength(1.0, GridUnitType.Star); childPositionableModel.DockHeight = new GridLength(1.0, GridUnitType.Star);
} }

1
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/ILayoutPositionableElement.cs

@ -42,6 +42,7 @@ namespace Xceed.Wpf.AvalonDock.Layout
bool AllowDuplicateContent { get; set; } bool AllowDuplicateContent { get; set; }
bool IsVisible { get; } bool IsVisible { get; }
bool ForceFixedDockSize { get; }
} }

22
ExtendedWPFToolkitSolution/Src/Xceed.Wpf.AvalonDock/Layout/LayoutPositionableGroup.cs

@ -80,6 +80,28 @@ namespace Xceed.Wpf.AvalonDock.Layout
} }
bool _forceFixedDockSize;
public bool ForceFixedDockSize
{
get {
return _forceFixedDockSize;
}
set {
if (ForceFixedDockSize != value) {
RaisePropertyChanging("HasFixedDockSize");
_forceFixedDockSize = value;
RaisePropertyChanging("HasFixedDockSize");
OnHasFixedDockSizeChanged();
}
}
}
protected virtual void OnHasFixedDockSizeChanged()
{
}
#region AllowDuplicateContent #region AllowDuplicateContent
private bool _allowDuplicateContent = true; private bool _allowDuplicateContent = true;

Loading…
Cancel
Save