781 lines
24 KiB
C#
781 lines
24 KiB
C#
using System;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using System.ComponentModel;
|
|
using DevComponents.DotNetBar.ScrollBar;
|
|
using System.Drawing;
|
|
|
|
namespace DevComponents.DotNetBar
|
|
{
|
|
[ToolboxItem(false), DefaultEvent("Scroll"), DefaultProperty("Value")]
|
|
public abstract class ScrollBarAdv : Control, ICommandSource
|
|
{
|
|
#region Private Variables
|
|
private ScrollBarCore _ScrollBar = null;
|
|
#endregion
|
|
|
|
#region Events
|
|
/// <summary>
|
|
/// Occurs when the Value property is changed, either by a Scroll event or programmatically.
|
|
/// </summary>
|
|
public event EventHandler ValueChanged;
|
|
|
|
/// <summary>
|
|
/// Occurs when the scroll box has been moved by either a mouse or keyboard action.
|
|
/// </summary>
|
|
public event ScrollEventHandler Scroll;
|
|
#endregion
|
|
|
|
#region Constructor
|
|
/// <summary>
|
|
/// Initializes a new instance of the ScrollBarAdv class.
|
|
/// </summary>
|
|
public ScrollBarAdv()
|
|
{
|
|
this.TabStop = false;
|
|
this.SetStyle(ControlStyles.UserPaint, true);
|
|
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true);
|
|
this.SetStyle(ControlStyles.Opaque, true);
|
|
this.SetStyle(ControlStyles.ResizeRedraw, true);
|
|
this.SetStyle(DisplayHelp.DoubleBufferFlag, true);
|
|
this.SetStyle(ControlStyles.SupportsTransparentBackColor, false);
|
|
this.SetStyle(ControlStyles.ContainerControl, false);
|
|
this.SetStyle(ControlStyles.Selectable, true);
|
|
CreateScrollBarCore();
|
|
StyleManager.Register(this);
|
|
}
|
|
#endregion
|
|
|
|
#region Internal Implementation
|
|
/// <summary>
|
|
/// Called by StyleManager to notify control that style on manager has changed and that control should refresh its appearance if
|
|
/// its style is controlled by StyleManager.
|
|
/// </summary>
|
|
/// <param name="newStyle">New active style.</param>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
public void StyleManagerStyleChanged(eDotNetBarStyle newStyle)
|
|
{
|
|
if (_ScrollBar != null)
|
|
_ScrollBar.InvalidateScrollBar();
|
|
}
|
|
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
if (_ScrollBar != null)
|
|
{
|
|
_ScrollBar.ValueChanged -= new EventHandler(CoreValueChanged);
|
|
_ScrollBar.Scroll -= new ScrollEventHandler(CoreScroll);
|
|
_ScrollBar.Dispose();
|
|
_ScrollBar = null;
|
|
}
|
|
base.Dispose(disposing);
|
|
}
|
|
|
|
protected override void ScaleControl(SizeF factor, BoundsSpecified specified)
|
|
{
|
|
UpdateScaling(factor);
|
|
base.ScaleControl(factor, specified);
|
|
}
|
|
|
|
internal void UpdateScaling(SizeF factor)
|
|
{
|
|
if (Dpi.RecordScalePerControl)
|
|
Dpi.SetScaling(factor);
|
|
_ScrollBar.ScaleItem(factor);
|
|
}
|
|
|
|
protected override void OnEnabledChanged(EventArgs e)
|
|
{
|
|
_ScrollBar.Enabled = this.Enabled;
|
|
this.Refresh();
|
|
base.OnEnabledChanged(e);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets whether scrollbar is vertical.
|
|
/// </summary>
|
|
/// <returns>true if scrollbar is vertical otherwise false for horizontal scrollbar</returns>
|
|
protected abstract bool IsVertical();
|
|
|
|
private void CreateScrollBarCore()
|
|
{
|
|
_ScrollBar = new ScrollBarCore(this, false);
|
|
_ScrollBar.Orientation = IsVertical() ? eOrientation.Vertical : eOrientation.Horizontal;
|
|
_ScrollBar.LargeChange = _LargeChange;
|
|
_ScrollBar.Maximum = _Maximum;
|
|
_ScrollBar.Minimum = _Minimum;
|
|
_ScrollBar.SmallChange = this.SmallChange;
|
|
_ScrollBar.Value = _Value;
|
|
_ScrollBar.ValueChanged += new EventHandler(CoreValueChanged);
|
|
_ScrollBar.Scroll += new ScrollEventHandler(CoreScroll);
|
|
}
|
|
|
|
private void CoreScroll(object sender, ScrollEventArgs e)
|
|
{
|
|
OnScroll(e);
|
|
}
|
|
|
|
private void CoreValueChanged(object sender, EventArgs e)
|
|
{
|
|
OnValueChanged(e);
|
|
ExecuteCommand();
|
|
}
|
|
|
|
protected override void OnPaint(PaintEventArgs e)
|
|
{
|
|
if (_ScrollBar != null)
|
|
{
|
|
_ScrollBar.Paint(GetItemPaintArgs(e));
|
|
}
|
|
base.OnPaint(e);
|
|
}
|
|
|
|
private ItemPaintArgs GetItemPaintArgs(PaintEventArgs e)
|
|
{
|
|
ItemPaintArgs p = new ItemPaintArgs(null, this, e.Graphics, null);
|
|
return p;
|
|
}
|
|
|
|
protected override void OnMouseMove(MouseEventArgs e)
|
|
{
|
|
if (_ScrollBar != null) _ScrollBar.MouseMove(e);
|
|
base.OnMouseMove(e);
|
|
}
|
|
|
|
protected override void OnMouseDown(MouseEventArgs e)
|
|
{
|
|
if (this.TabStop && !this.Focused)
|
|
{
|
|
this.Select();
|
|
}
|
|
if (_ScrollBar != null) _ScrollBar.MouseDown(e);
|
|
base.OnMouseDown(e);
|
|
}
|
|
|
|
protected override void OnEnter(EventArgs e)
|
|
{
|
|
if (_ScrollBar != null) _ScrollBar.InvalidateScrollBar();
|
|
base.OnEnter(e);
|
|
}
|
|
|
|
protected override void OnLeave(EventArgs e)
|
|
{
|
|
if (_ScrollBar != null) _ScrollBar.InvalidateScrollBar();
|
|
base.OnLeave(e);
|
|
}
|
|
|
|
protected override void OnMouseUp(MouseEventArgs e)
|
|
{
|
|
if (_ScrollBar != null) _ScrollBar.MouseUp(e);
|
|
base.OnMouseUp(e);
|
|
}
|
|
|
|
protected override void OnMouseLeave(EventArgs e)
|
|
{
|
|
if (_ScrollBar != null) _ScrollBar.MouseLeave();
|
|
base.OnMouseLeave(e);
|
|
}
|
|
|
|
protected override void OnResize(EventArgs e)
|
|
{
|
|
if (_ScrollBar != null) _ScrollBar.DisplayRectangle = new System.Drawing.Rectangle(0, 0, this.Width, this.Height);
|
|
base.OnResize(e);
|
|
}
|
|
|
|
private int _LargeChange = 10;
|
|
/// <summary>
|
|
/// Gets or sets a value to be added to or subtracted from the <paramref name="Value">Value</paramref> property when the scroll box is moved a large distance.
|
|
/// <value>A numeric value. The default value is 10.</value>
|
|
/// <remarks>ArgumentOutOfRangeException is raised if assigned value is less than 0. </remarks>
|
|
/// </summary>
|
|
[DefaultValue(10), Category("Behavior"), Description("Indicates value to be added to or subtracted from the Value property when the scroll box is moved a large distance")]
|
|
public int LargeChange
|
|
{
|
|
get { return _LargeChange; }
|
|
set
|
|
{
|
|
if (value < 0)
|
|
throw new ArgumentOutOfRangeException();
|
|
|
|
if (_LargeChange != value)
|
|
{
|
|
_LargeChange = value;
|
|
if (_ScrollBar != null) _ScrollBar.LargeChange = _LargeChange;
|
|
}
|
|
}
|
|
}
|
|
|
|
private int _Maximum = 100;
|
|
/// <summary>
|
|
/// Gets or sets the upper limit of values of the scrollable range.
|
|
/// <value>A numeric value. The default value is 100.</value>
|
|
/// </summary>
|
|
[DefaultValue(100), Category("Behavior"), Description("Indicates upper limit of values of the scrollable range."), RefreshProperties(RefreshProperties.Repaint)]
|
|
public int Maximum
|
|
{
|
|
get { return _Maximum; }
|
|
set
|
|
{
|
|
if (_Maximum != value)
|
|
{
|
|
_Maximum = value;
|
|
if (_ScrollBar != null) _ScrollBar.Maximum = _Maximum;
|
|
}
|
|
}
|
|
}
|
|
|
|
private int _Minimum = 0;
|
|
/// <summary>
|
|
/// Gets or sets the lower limit of values of the scrollable range.
|
|
/// <value>A numeric value. The default value is 0.</value>
|
|
/// </summary>
|
|
[DefaultValue(0), Category("Behavior"), Description("Indicates lower limit of values of the scrollable range."), RefreshProperties(RefreshProperties.Repaint)]
|
|
public int Minimum
|
|
{
|
|
get { return _Minimum; }
|
|
set
|
|
{
|
|
if (_Minimum != value)
|
|
{
|
|
_Minimum = value;
|
|
if (_ScrollBar != null) _ScrollBar.Minimum = _Minimum;
|
|
}
|
|
}
|
|
}
|
|
|
|
private int _SmallChange = 1;
|
|
/// <summary>
|
|
/// Gets or sets the value to be added to or subtracted from the <paramref name="Value">Value</paramref> property when the scroll box is moved a small distance.
|
|
/// <value>A numeric value. The default value is 1.</value>
|
|
/// <remarks>ArgumentOutOfRangeException is raised if assigned value is less than 0. </remarks>
|
|
/// </summary>
|
|
[DefaultValue(1), Category("Behavior"), Description("Indicates value to be added to or subtracted from the Value property when the scroll box is moved a small distance.")]
|
|
public int SmallChange
|
|
{
|
|
get
|
|
{
|
|
return Math.Min(_SmallChange, _LargeChange);
|
|
}
|
|
set
|
|
{
|
|
if (value < 0)
|
|
throw new ArgumentOutOfRangeException();
|
|
|
|
if (_SmallChange != value)
|
|
{
|
|
_SmallChange = value;
|
|
|
|
if (_ScrollBar != null)
|
|
_ScrollBar.SmallChange = this.SmallChange;
|
|
}
|
|
}
|
|
}
|
|
|
|
private int _Value = 0;
|
|
/// <summary>
|
|
/// Gets or sets a numeric value that represents the current position of the scroll box on the scroll bar control.
|
|
/// <value>A numeric value that is within the Minimum and Maximum range. The default value is 0.</value>
|
|
/// <remarks>ArgumentOutOfRangeException is raised if assigned value is less than the Minimum property value or assigned value is greater than the Maximum property value.</remarks>
|
|
/// </summary>
|
|
[DefaultValue(0), Category("Behavior"), Description("Indicates numeric value that represents the current position of the scroll box on the scroll bar control"), RefreshProperties(RefreshProperties.Repaint)]
|
|
public int Value
|
|
{
|
|
get { if (_ScrollBar != null) return _ScrollBar.Value; else return 0; }
|
|
set
|
|
{
|
|
if (value < Minimum)
|
|
throw new ArgumentOutOfRangeException("Value must be greater or equal than Minimum property value.");
|
|
if(value>Maximum)
|
|
throw new ArgumentOutOfRangeException("Value must be less or equal than Maximum property value.");
|
|
if (_ScrollBar != null) _ScrollBar.Value = value;
|
|
}
|
|
}
|
|
|
|
internal void DoScroll(int newValue, ScrollEventType eventType)
|
|
{
|
|
int oldValue = this.Value;
|
|
this.Value = newValue;
|
|
#if FRAMEWORK20
|
|
OnScroll(new ScrollEventArgs(eventType, oldValue, newValue, _ScrollBar.Orientation == eOrientation.Vertical ? ScrollOrientation.VerticalScroll : ScrollOrientation.HorizontalScroll));
|
|
#else
|
|
OnScroll(new ScrollEventArgs(eventType, newValue));
|
|
#endif
|
|
}
|
|
|
|
/// <summary>
|
|
/// Raises the Scroll event.
|
|
/// </summary>
|
|
/// <param name="e">Provides Event arguments.</param>
|
|
protected virtual void OnScroll(ScrollEventArgs e)
|
|
{
|
|
ScrollEventHandler h = this.Scroll;
|
|
if (h != null)
|
|
h(this, e);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Raises the ValueChanged event.
|
|
/// </summary>
|
|
/// <param name="e">Provides Event arguments.</param>
|
|
protected virtual void OnValueChanged(EventArgs e)
|
|
{
|
|
EventHandler h = this.ValueChanged;
|
|
if (h != null)
|
|
h(this, e);
|
|
}
|
|
|
|
private eScrollBarAppearance _Appearance = eScrollBarAppearance.Default;
|
|
/// <summary>
|
|
/// Gets or sets the scroll bar appearance style.
|
|
/// </summary>
|
|
[DefaultValue(eScrollBarAppearance.Default), Category("Appearance"), Description("Indicates scroll bar appearance style."), RefreshProperties(RefreshProperties.Repaint)]
|
|
public eScrollBarAppearance Appearance
|
|
{
|
|
get { return _Appearance; }
|
|
set
|
|
{
|
|
if (_Appearance != value)
|
|
{
|
|
_Appearance = value;
|
|
OnAppearanceChanged();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void OnAppearanceChanged()
|
|
{
|
|
if (_ScrollBar != null)
|
|
{
|
|
if (_Appearance == eScrollBarAppearance.Default)
|
|
_ScrollBar.IsAppScrollBarStyle = false;
|
|
else
|
|
_ScrollBar.IsAppScrollBarStyle = true;
|
|
}
|
|
this.Invalidate();
|
|
}
|
|
|
|
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
|
|
{
|
|
if (_ScrollBar!=null)
|
|
return _ScrollBar.ProcessCmdKey(ref msg, keyData);
|
|
return base.ProcessCmdKey(ref msg, keyData);
|
|
}
|
|
#endregion
|
|
|
|
#region Property Hiding
|
|
#if FRAMEWORK20
|
|
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
|
|
public override bool AutoSize
|
|
{
|
|
get
|
|
{
|
|
return base.AutoSize;
|
|
}
|
|
set
|
|
{
|
|
base.AutoSize = value;
|
|
}
|
|
}
|
|
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
|
|
public new event EventHandler AutoSizeChanged
|
|
{
|
|
add
|
|
{
|
|
base.AutoSizeChanged += value;
|
|
}
|
|
remove
|
|
{
|
|
base.AutoSizeChanged -= value;
|
|
}
|
|
}
|
|
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
|
|
public new event MouseEventHandler MouseClick
|
|
{
|
|
add
|
|
{
|
|
base.MouseClick += value;
|
|
}
|
|
remove
|
|
{
|
|
base.MouseClick -= value;
|
|
}
|
|
}
|
|
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
|
|
public new event MouseEventHandler MouseDoubleClick
|
|
{
|
|
add
|
|
{
|
|
base.MouseDoubleClick += value;
|
|
}
|
|
remove
|
|
{
|
|
base.MouseDoubleClick -= value;
|
|
}
|
|
}
|
|
#endif
|
|
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
|
|
public override Color BackColor
|
|
{
|
|
get
|
|
{
|
|
return base.BackColor;
|
|
}
|
|
set
|
|
{
|
|
base.BackColor = value;
|
|
}
|
|
}
|
|
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
|
|
public new event EventHandler BackColorChanged
|
|
{
|
|
add
|
|
{
|
|
base.BackColorChanged += value;
|
|
}
|
|
remove
|
|
{
|
|
base.BackColorChanged -= value;
|
|
}
|
|
}
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
|
|
public override Image BackgroundImage
|
|
{
|
|
get
|
|
{
|
|
return base.BackgroundImage;
|
|
}
|
|
set
|
|
{
|
|
base.BackgroundImage = value;
|
|
}
|
|
}
|
|
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
|
|
public new event EventHandler BackgroundImageChanged
|
|
{
|
|
add
|
|
{
|
|
base.BackgroundImageChanged += value;
|
|
}
|
|
remove
|
|
{
|
|
base.BackgroundImageChanged -= value;
|
|
}
|
|
}
|
|
#if FRAMEWORK20
|
|
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
|
|
public override ImageLayout BackgroundImageLayout
|
|
{
|
|
get
|
|
{
|
|
return base.BackgroundImageLayout;
|
|
}
|
|
set
|
|
{
|
|
base.BackgroundImageLayout = value;
|
|
}
|
|
}
|
|
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
|
|
public new event EventHandler BackgroundImageLayoutChanged
|
|
{
|
|
add
|
|
{
|
|
base.BackgroundImageLayoutChanged += value;
|
|
}
|
|
remove
|
|
{
|
|
base.BackgroundImageLayoutChanged -= value;
|
|
}
|
|
}
|
|
#endif
|
|
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
|
|
public override Font Font
|
|
{
|
|
get
|
|
{
|
|
return base.Font;
|
|
}
|
|
set
|
|
{
|
|
base.Font = value;
|
|
}
|
|
}
|
|
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
|
|
public override Color ForeColor
|
|
{
|
|
get
|
|
{
|
|
return base.ForeColor;
|
|
}
|
|
set
|
|
{
|
|
base.ForeColor = value;
|
|
}
|
|
}
|
|
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
|
|
public new ImeMode ImeMode
|
|
{
|
|
get
|
|
{
|
|
return base.ImeMode;
|
|
}
|
|
set
|
|
{
|
|
base.ImeMode = value;
|
|
}
|
|
}
|
|
|
|
[DefaultValue(false)]
|
|
public new bool TabStop
|
|
{
|
|
get
|
|
{
|
|
return base.TabStop;
|
|
}
|
|
set
|
|
{
|
|
base.TabStop = value;
|
|
}
|
|
}
|
|
|
|
[Bindable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden), EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
|
|
public override string Text
|
|
{
|
|
get
|
|
{
|
|
return base.Text;
|
|
}
|
|
set
|
|
{
|
|
base.Text = value;
|
|
}
|
|
}
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
|
|
public new event EventHandler Click
|
|
{
|
|
add
|
|
{
|
|
base.Click += value;
|
|
}
|
|
remove
|
|
{
|
|
base.Click -= value;
|
|
}
|
|
}
|
|
|
|
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
|
|
public new event EventHandler DoubleClick
|
|
{
|
|
add
|
|
{
|
|
base.DoubleClick += value;
|
|
}
|
|
remove
|
|
{
|
|
base.DoubleClick -= value;
|
|
}
|
|
}
|
|
|
|
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
|
|
public new event EventHandler FontChanged
|
|
{
|
|
add
|
|
{
|
|
base.FontChanged += value;
|
|
}
|
|
remove
|
|
{
|
|
base.FontChanged -= value;
|
|
}
|
|
}
|
|
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
|
|
public new event EventHandler ForeColorChanged
|
|
{
|
|
add
|
|
{
|
|
base.ForeColorChanged += value;
|
|
}
|
|
remove
|
|
{
|
|
base.ForeColorChanged -= value;
|
|
}
|
|
}
|
|
|
|
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
|
|
public new event EventHandler ImeModeChanged
|
|
{
|
|
add
|
|
{
|
|
base.ImeModeChanged += value;
|
|
}
|
|
remove
|
|
{
|
|
base.ImeModeChanged -= value;
|
|
}
|
|
}
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
|
|
public new event MouseEventHandler MouseDown
|
|
{
|
|
add
|
|
{
|
|
base.MouseDown += value;
|
|
}
|
|
remove
|
|
{
|
|
base.MouseDown -= value;
|
|
}
|
|
}
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
|
|
public new event MouseEventHandler MouseMove
|
|
{
|
|
add
|
|
{
|
|
base.MouseMove += value;
|
|
}
|
|
remove
|
|
{
|
|
base.MouseMove -= value;
|
|
}
|
|
}
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
|
|
public new event MouseEventHandler MouseUp
|
|
{
|
|
add
|
|
{
|
|
base.MouseUp += value;
|
|
}
|
|
remove
|
|
{
|
|
base.MouseUp -= value;
|
|
}
|
|
}
|
|
|
|
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
|
|
public new event PaintEventHandler Paint
|
|
{
|
|
add
|
|
{
|
|
base.Paint += value;
|
|
}
|
|
remove
|
|
{
|
|
base.Paint -= value;
|
|
}
|
|
}
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
|
|
public new event EventHandler TextChanged
|
|
{
|
|
add
|
|
{
|
|
base.TextChanged += value;
|
|
}
|
|
remove
|
|
{
|
|
base.TextChanged -= value;
|
|
}
|
|
}
|
|
|
|
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
|
|
public override RightToLeft RightToLeft
|
|
{
|
|
get
|
|
{
|
|
return RightToLeft.No;
|
|
}
|
|
set
|
|
{
|
|
}
|
|
}
|
|
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
|
|
public event EventHandler RightToLeftChanged
|
|
{
|
|
add
|
|
{
|
|
base.RightToLeftChanged += value;
|
|
}
|
|
remove
|
|
{
|
|
base.RightToLeftChanged -= value;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region ICommandSource Members
|
|
protected virtual void ExecuteCommand()
|
|
{
|
|
if (_Command == null) return;
|
|
CommandManager.ExecuteCommand(this);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the command assigned to the item. Default value is null.
|
|
/// <remarks>Note that if this property is set to null Enabled property will be set to false automatically to disable the item.</remarks>
|
|
/// </summary>
|
|
[DefaultValue(null), Category("Commands"), Description("Indicates the command assigned to the item.")]
|
|
public Command Command
|
|
{
|
|
get { return (Command)((ICommandSource)this).Command; }
|
|
set
|
|
{
|
|
((ICommandSource)this).Command = value;
|
|
}
|
|
}
|
|
|
|
private ICommand _Command = null;
|
|
//[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
|
ICommand ICommandSource.Command
|
|
{
|
|
get
|
|
{
|
|
return _Command;
|
|
}
|
|
set
|
|
{
|
|
bool changed = false;
|
|
if (_Command != value)
|
|
changed = true;
|
|
|
|
if (_Command != null)
|
|
CommandManager.UnRegisterCommandSource(this, _Command);
|
|
_Command = value;
|
|
if (value != null)
|
|
CommandManager.RegisterCommand(this, value);
|
|
if (changed)
|
|
OnCommandChanged();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Called when Command property value changes.
|
|
/// </summary>
|
|
protected virtual void OnCommandChanged()
|
|
{
|
|
}
|
|
|
|
private object _CommandParameter = null;
|
|
/// <summary>
|
|
/// Gets or sets user defined data value that can be passed to the command when it is executed.
|
|
/// </summary>
|
|
[Browsable(true), DefaultValue(null), Category("Commands"), Description("Indicates user defined data value that can be passed to the command when it is executed."), System.ComponentModel.TypeConverter(typeof(System.ComponentModel.StringConverter)), System.ComponentModel.Localizable(true)]
|
|
public object CommandParameter
|
|
{
|
|
get
|
|
{
|
|
return _CommandParameter;
|
|
}
|
|
set
|
|
{
|
|
_CommandParameter = value;
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
}
|
|
}
|