All the controls missing in WPF. Over 1 million downloads.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

322 lines
9.9 KiB

/*************************************************************************************
Extended WPF Toolkit
Copyright (C) 2007-2013 Xceed Software Inc.
This program is provided to you under the terms of the Microsoft Public
License (Ms-PL) as published at http://wpftoolkit.codeplex.com/license
For more features, controls, and fast professional support,
pick up the Plus Edition at http://xceed.com/wpf_toolkit
Stay informed: follow @datagrid on Twitter or Like http://facebook.com/datagrids
***********************************************************************************/
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Globalization;
namespace Xceed.Wpf.AvalonDock.Layout
{
[Serializable]
public abstract class LayoutPositionableGroup<T> : LayoutGroup<T>, ILayoutPositionableElement, ILayoutPositionableElementWithActualSize where T : class, ILayoutElement
{
public LayoutPositionableGroup()
{ }
GridLength _dockWidth = new GridLength(1.0, GridUnitType.Star);
public GridLength DockWidth
{
get
{
return _dockWidth;
}
set
{
if (DockWidth != value)
{
RaisePropertyChanging("DockWidth");
_dockWidth = value;
RaisePropertyChanged("DockWidth");
OnDockWidthChanged();
}
}
}
protected virtual void OnDockWidthChanged()
{
}
GridLength _dockHeight = new GridLength(1.0, GridUnitType.Star);
public GridLength DockHeight
{
get
{
return _dockHeight;
}
set
{
if (DockHeight != value)
{
RaisePropertyChanging("DockHeight");
_dockHeight = value;
RaisePropertyChanged("DockHeight");
OnDockHeightChanged();
}
}
}
protected virtual void OnDockHeightChanged()
{
}
#region CanRepositionItems
private bool _canRepositionItems = true;
public bool CanRepositionItems
{
get
{
return _canRepositionItems;
}
set
{
if( _canRepositionItems != value )
{
RaisePropertyChanging( "CanRepositionItems" );
_canRepositionItems = value;
RaisePropertyChanged( "CanRepositionItems" );
}
}
}
#endregion
#region DockMinWidth
private double _dockMinWidth = 25.0;
public double DockMinWidth
{
get { return _dockMinWidth; }
set
{
if (_dockMinWidth != value)
{
MathHelper.AssertIsPositiveOrZero(value);
RaisePropertyChanging("DockMinWidth");
_dockMinWidth = value;
RaisePropertyChanged("DockMinWidth");
}
}
}
#endregion
#region DockMinHeight
private double _dockMinHeight = 25.0;
public double DockMinHeight
{
get { return _dockMinHeight; }
set
{
if (_dockMinHeight != value)
{
MathHelper.AssertIsPositiveOrZero(value);
RaisePropertyChanging("DockMinHeight");
_dockMinHeight = value;
RaisePropertyChanged("DockMinHeight");
}
}
}
#endregion
#region FloatingWidth
private double _floatingWidth = 0.0;
public double FloatingWidth
{
get { return _floatingWidth; }
set
{
if (_floatingWidth != value)
{
RaisePropertyChanging("FloatingWidth");
_floatingWidth = value;
RaisePropertyChanged("FloatingWidth");
}
}
}
#endregion
#region FloatingHeight
private double _floatingHeight = 0.0;
public double FloatingHeight
{
get { return _floatingHeight; }
set
{
if (_floatingHeight != value)
{
RaisePropertyChanging("FloatingHeight");
_floatingHeight = value;
RaisePropertyChanged("FloatingHeight");
}
}
}
#endregion
#region FloatingLeft
private double _floatingLeft = 0.0;
public double FloatingLeft
{
get { return _floatingLeft; }
set
{
if (_floatingLeft != value)
{
RaisePropertyChanging("FloatingLeft");
_floatingLeft = value;
RaisePropertyChanged("FloatingLeft");
}
}
}
#endregion
#region FloatingTop
private double _floatingTop = 0.0;
public double FloatingTop
{
get { return _floatingTop; }
set
{
if (_floatingTop != value)
{
RaisePropertyChanging("FloatingTop");
_floatingTop = value;
RaisePropertyChanged("FloatingTop");
}
}
}
#endregion
#region IsMaximized
private bool _isMaximized = false;
public bool IsMaximized
{
get { return _isMaximized; }
set
{
if (_isMaximized != value)
{
_isMaximized = value;
RaisePropertyChanged("IsMaximized");
}
}
}
#endregion
[NonSerialized]
double _actualWidth;
double ILayoutPositionableElementWithActualSize.ActualWidth
{
get
{
return _actualWidth;
}
set
{
_actualWidth = value;
}
}
[NonSerialized]
double _actualHeight;
double ILayoutPositionableElementWithActualSize.ActualHeight
{
get
{
return _actualHeight;
}
set
{
_actualHeight = value;
}
}
public override void WriteXml(System.Xml.XmlWriter writer)
{
if (DockWidth.Value != 1.0 || !DockWidth.IsStar)
writer.WriteAttributeString("DockWidth", _gridLengthConverter.ConvertToInvariantString(DockWidth));
if (DockHeight.Value != 1.0 || !DockHeight.IsStar)
writer.WriteAttributeString("DockHeight", _gridLengthConverter.ConvertToInvariantString(DockHeight));
if (DockMinWidth != 25.0)
writer.WriteAttributeString("DocMinWidth", DockMinWidth.ToString(CultureInfo.InvariantCulture));
if (DockMinHeight != 25.0)
writer.WriteAttributeString("DockMinHeight", DockMinHeight.ToString(CultureInfo.InvariantCulture));
if (FloatingWidth != 0.0)
writer.WriteAttributeString("FloatingWidth", FloatingWidth.ToString(CultureInfo.InvariantCulture));
if (FloatingHeight != 0.0)
writer.WriteAttributeString("FloatingHeight", FloatingHeight.ToString(CultureInfo.InvariantCulture));
if (FloatingLeft != 0.0)
writer.WriteAttributeString("FloatingLeft", FloatingLeft.ToString(CultureInfo.InvariantCulture));
if (FloatingTop != 0.0)
writer.WriteAttributeString("FloatingTop", FloatingTop.ToString(CultureInfo.InvariantCulture));
if( IsMaximized )
writer.WriteAttributeString( "IsMaximized", IsMaximized.ToString() );
base.WriteXml(writer);
}
static GridLengthConverter _gridLengthConverter = new GridLengthConverter();
public override void ReadXml(System.Xml.XmlReader reader)
{
if (reader.MoveToAttribute("DockWidth"))
_dockWidth = (GridLength)_gridLengthConverter.ConvertFromInvariantString(reader.Value);
if (reader.MoveToAttribute("DockHeight"))
_dockHeight = (GridLength)_gridLengthConverter.ConvertFromInvariantString(reader.Value);
if (reader.MoveToAttribute("DocMinWidth"))
_dockMinWidth = double.Parse(reader.Value, CultureInfo.InvariantCulture);
if (reader.MoveToAttribute("DocMinHeight"))
_dockMinHeight = double.Parse(reader.Value, CultureInfo.InvariantCulture);
if (reader.MoveToAttribute("FloatingWidth"))
_floatingWidth = double.Parse(reader.Value, CultureInfo.InvariantCulture);
if (reader.MoveToAttribute("FloatingHeight"))
_floatingHeight = double.Parse(reader.Value, CultureInfo.InvariantCulture);
if (reader.MoveToAttribute("FloatingLeft"))
_floatingLeft = double.Parse(reader.Value, CultureInfo.InvariantCulture);
if (reader.MoveToAttribute("FloatingTop"))
_floatingTop = double.Parse(reader.Value, CultureInfo.InvariantCulture);
if( reader.MoveToAttribute( "IsMaximized" ) )
_isMaximized = bool.Parse( reader.Value );
base.ReadXml(reader);
}
}
}