697 lines
25 KiB
C#
697 lines
25 KiB
C#
using System;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using System.ComponentModel;
|
|
using System.Drawing;
|
|
using System.Security.Permissions;
|
|
|
|
namespace DevComponents.DotNetBar
|
|
{
|
|
#if FRAMEWORK20
|
|
[Designer("DevComponents.DotNetBar.Design.LabelXDesigner, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf")]
|
|
#endif
|
|
[ToolboxBitmap(typeof(LabelX), "Controls.LabelX.ico"), ToolboxItem(true), System.Runtime.InteropServices.ComVisible(false)]
|
|
public class LabelX : BaseItemControl, ICommandSource
|
|
{
|
|
#region Private Variables
|
|
private LabelItem m_Label = null;
|
|
private bool m_UseMnemonic = true;
|
|
private Size m_PreferredSize = Size.Empty;
|
|
#endregion
|
|
|
|
#region Events
|
|
/// <summary>
|
|
/// Occurs when text markup link is clicked. Markup links can be created using "a" tag, for example:
|
|
/// <a name="MyLink">Markup link</a>
|
|
/// </summary>
|
|
public event MarkupLinkClickEventHandler MarkupLinkClick;
|
|
#endregion
|
|
|
|
#region Constructor, Dispose
|
|
public LabelX()
|
|
{
|
|
m_Label = new LabelItem();
|
|
m_Label.Style = eDotNetBarStyle.Office2007;
|
|
m_Label.MarkupLinkClick += new MarkupLinkClickEventHandler(LabelMarkupLinkClick);
|
|
this.FocusCuesEnabled = false;
|
|
this.HostItem = m_Label;
|
|
this.TabStop = false;
|
|
this.SetStyle(ControlStyles.Selectable, false);
|
|
}
|
|
#endregion
|
|
|
|
#region Internal Implementation
|
|
/// <summary>
|
|
/// Specifies spacing between label image and text.
|
|
/// </summary>
|
|
[DefaultValue(2), Category("Appearance"), Description("Specifies spacing between label image and text.")]
|
|
public int ImageTextSpacing
|
|
{
|
|
get { return m_Label.ImageTextSpacing; }
|
|
set { m_Label.ImageTextSpacing = value; }
|
|
}
|
|
|
|
[EditorBrowsable(EditorBrowsableState.Never), Browsable(false)]
|
|
protected string PlainText
|
|
{
|
|
get
|
|
{
|
|
return m_Label.PlainText;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets whether text-markup support is enabled for controls Text property. Default value is true.
|
|
/// Set this property to false to display HTML or other markup in the control instead of it being parsed as text-markup.
|
|
/// </summary>
|
|
[DefaultValue(true), Category("Appearance"), Description("Indicates whether text-markup support is enabled for controls Text property.")]
|
|
public bool EnableMarkup
|
|
{
|
|
get { return m_Label.EnableMarkup; }
|
|
set
|
|
{
|
|
m_Label.EnableMarkup = value;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets whether control displays focus cues when focused.
|
|
/// </summary>
|
|
[DefaultValue(false), Category("Behavior"), Description("Indicates whether control displays focus cues when focused.")]
|
|
public override bool FocusCuesEnabled
|
|
{
|
|
get
|
|
{
|
|
return base.FocusCuesEnabled;
|
|
}
|
|
set
|
|
{
|
|
base.FocusCuesEnabled = value;
|
|
}
|
|
}
|
|
protected override void OnHandleCreated(EventArgs e)
|
|
{
|
|
#if FRAMEWORK20
|
|
if (this.AutoSize)
|
|
this.AdjustSize();
|
|
#endif
|
|
this.RecalcLayout();
|
|
base.OnHandleCreated(e);
|
|
}
|
|
/// <summary>
|
|
/// Recalculates the size of the internal item.
|
|
/// </summary>
|
|
protected override void RecalcSize()
|
|
{
|
|
m_Label.SuspendPaint = true;
|
|
m_Label.Width = Dpi.DescaleWidth(m_Label.Bounds.Width);
|
|
m_Label.Height = Dpi.DescaleHeight(m_Label.Bounds.Height);
|
|
m_Label.SuspendPaint = false;
|
|
base.RecalcSize();
|
|
}
|
|
|
|
protected override void OnBackColorChanged(EventArgs e)
|
|
{
|
|
m_Label.BackColor = this.BackColor;
|
|
base.OnBackColorChanged(e);
|
|
}
|
|
|
|
protected override void OnForeColorChanged(EventArgs e)
|
|
{
|
|
if (this.ForeColor == SystemColors.ControlText)
|
|
m_Label.ForeColor = Color.Empty;
|
|
else
|
|
m_Label.ForeColor = this.ForeColor;
|
|
base.OnForeColorChanged(e);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the border sides that are displayed. Default value specifies border on all 4 sides.
|
|
/// </summary>
|
|
[Browsable(false), Category("Appearance"), DefaultValue(LabelItem.DEFAULT_BORDERSIDE), Description("Specifies border sides that are displayed.")]
|
|
public eBorderSide BorderSide
|
|
{
|
|
get { return m_Label.BorderSide; }
|
|
set { m_Label.BorderSide = value; InvalidateAutoSize(); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the type of the border drawn around the label.
|
|
/// </summary>
|
|
[Browsable(false), Category("Appearance"), DefaultValue(eBorderType.None), Description("Indicates the type of the border drawn around the label.")]
|
|
public eBorderType BorderType
|
|
{
|
|
get { return m_Label.BorderType; }
|
|
set { m_Label.BorderType = value; InvalidateAutoSize(); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Specifies label image.
|
|
/// </summary>
|
|
[Browsable(true), Category("Appearance"), Description("The image that will be displayed on the face of the item."), DefaultValue(null)]
|
|
public System.Drawing.Image Image
|
|
{
|
|
get { return m_Label.Image; }
|
|
set { m_Label.Image = value; InvalidateAutoSize(); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets/Sets the image position inside the label.
|
|
/// </summary>
|
|
[Browsable(true), Category("Appearance"), Description("The alignment of the image in relation to text displayed by this item."), DefaultValue(eImagePosition.Left)]
|
|
public eImagePosition ImagePosition
|
|
{
|
|
get { return m_Label.ImagePosition; }
|
|
set { m_Label.ImagePosition = value; InvalidateAutoSize(); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the border line color when border is single line.
|
|
/// </summary>
|
|
[Browsable(true), Category("Appearance"), Description("Indicates border line color when border is single line.")]
|
|
public Color SingleLineColor
|
|
{
|
|
get { return m_Label.SingleLineColor; }
|
|
set { m_Label.SingleLineColor = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets whether property should be serialized.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
public bool ShouldSerializeSingleLineColor()
|
|
{
|
|
return m_Label.ShouldSerializeSingleLineColor();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Resets the SingleLineColor property to its default value.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
public void ResetSingleLineColor()
|
|
{
|
|
m_Label.ResetSingleLineColor();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the text associated with this item.
|
|
/// </summary>
|
|
[Browsable(true), Editor("DevComponents.DotNetBar.Design.TextMarkupUIEditor, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf", typeof(System.Drawing.Design.UITypeEditor)), Category("Appearance"), Description("The text contained in the item.")]
|
|
public override string Text
|
|
{
|
|
get { return base.Text; }
|
|
set { base.Text = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the horizontal text alignment.
|
|
/// </summary>
|
|
[Browsable(true), DefaultValue(StringAlignment.Near), DevCoBrowsable(true), Category("Layout"), Description("Indicates text alignment.")]
|
|
public System.Drawing.StringAlignment TextAlignment
|
|
{
|
|
get { return m_Label.TextAlignment; }
|
|
set
|
|
{
|
|
m_Label.TextAlignment = value;
|
|
this.RecalcLayout();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the text vertical alignment.
|
|
/// </summary>
|
|
[Browsable(true), DefaultValue(System.Drawing.StringAlignment.Center), DevCoBrowsable(true), Category("Layout"), Description("Indicates text line alignment.")]
|
|
public System.Drawing.StringAlignment TextLineAlignment
|
|
{
|
|
get { return m_Label.TextLineAlignment; }
|
|
set
|
|
{
|
|
m_Label.TextLineAlignment = value;
|
|
this.RecalcLayout();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets a value that determines whether text is displayed in multiple lines or one long line.
|
|
/// </summary>
|
|
[Browsable(true), Category("Style"), DefaultValue(false), Description("Gets or sets a value that determines whether text is displayed in multiple lines or one long line.")]
|
|
public bool WordWrap
|
|
{
|
|
get { return m_Label.WordWrap; }
|
|
set { m_Label.WordWrap = value; RecalcLayout(); }
|
|
}
|
|
|
|
[Browsable(false), DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
|
public new bool TabStop
|
|
{
|
|
get { return base.TabStop; }
|
|
set { base.TabStop = value; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the left padding in pixels.
|
|
/// </summary>
|
|
[Browsable(true), DefaultValue(0), Category("Layout"), Description("Indicates left padding in pixels.")]
|
|
public int PaddingLeft
|
|
{
|
|
get { return m_Label.PaddingLeft; }
|
|
set { m_Label.PaddingLeft = value; InvalidateAutoSize(); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the right padding in pixels.
|
|
/// </summary>
|
|
[Browsable(true), DefaultValue(0), Category("Layout"), Description("Indicates right padding in pixels.")]
|
|
public int PaddingRight
|
|
{
|
|
get
|
|
{
|
|
return m_Label.PaddingRight;
|
|
}
|
|
set
|
|
{
|
|
m_Label.PaddingRight = value;
|
|
InvalidateAutoSize();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the top padding in pixels.
|
|
/// </summary>
|
|
[Browsable(true), DefaultValue(0), Category("Layout"), Description("Indicates top padding in pixels.")]
|
|
public int PaddingTop
|
|
{
|
|
get
|
|
{
|
|
return m_Label.PaddingTop;
|
|
}
|
|
set
|
|
{
|
|
m_Label.PaddingTop = value;
|
|
InvalidateAutoSize();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets the bottom padding in pixels.
|
|
/// </summary>
|
|
[Browsable(true), DefaultValue(0), Category("Layout"), Description("Indicates bottom padding in pixels.")]
|
|
public int PaddingBottom
|
|
{
|
|
get
|
|
{
|
|
return m_Label.PaddingBottom;
|
|
}
|
|
set
|
|
{
|
|
m_Label.PaddingBottom = value;
|
|
InvalidateAutoSize();
|
|
}
|
|
}
|
|
|
|
private void LabelMarkupLinkClick(object sender, MarkupLinkClickEventArgs e)
|
|
{
|
|
OnMarkupLinkClick(e);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Invokes the MarkupLinkClick event.
|
|
/// </summary>
|
|
/// <param name="e">Provides additional data about event.</param>
|
|
protected virtual void OnMarkupLinkClick(MarkupLinkClickEventArgs e)
|
|
{
|
|
if (MarkupLinkClick != null)
|
|
MarkupLinkClick(this, e);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets a value indicating whether the control interprets an ampersand character (&) in the control's Text property to be an access key prefix character.
|
|
/// </summary>
|
|
[Browsable(true), DefaultValue(true), Category("Appearance"), Description("Indicates whether the control interprets an ampersand character (&) in the control's Text property to be an access key prefix character.")]
|
|
public bool UseMnemonic
|
|
{
|
|
get { return m_UseMnemonic; }
|
|
set
|
|
{
|
|
m_UseMnemonic = value;
|
|
InvalidateAutoSize();
|
|
this.Invalidate();
|
|
}
|
|
}
|
|
|
|
protected void InvalidateAutoSize()
|
|
{
|
|
m_PreferredSize = Size.Empty;
|
|
}
|
|
|
|
protected override void OnPaint(PaintEventArgs e)
|
|
{
|
|
if (m_UseMnemonic)
|
|
m_Label.ShowPrefix = true;
|
|
else
|
|
m_Label.ShowPrefix = false;
|
|
|
|
if (m_Label.NeedRecalcSize) m_Label.RecalcSize();
|
|
|
|
base.OnPaint(e);
|
|
}
|
|
|
|
private bool CanProcessMnemonic()
|
|
{
|
|
if (!this.Enabled || !this.Visible)
|
|
return false;
|
|
return true;
|
|
}
|
|
|
|
[UIPermission(SecurityAction.LinkDemand, Window = UIPermissionWindow.AllWindows)]
|
|
protected override bool ProcessMnemonic(char charCode)
|
|
{
|
|
if ((!this.UseMnemonic || !Control.IsMnemonic(charCode, this.Text)) || !this.CanProcessMnemonic() || Control.ModifierKeys != Keys.Alt || m_Label.IsUsingTextMarkup)
|
|
{
|
|
return false;
|
|
}
|
|
Control parent = this.Parent;
|
|
if (parent != null)
|
|
{
|
|
if (parent.SelectNextControl(this, true, false, true, false) && !parent.ContainsFocus)
|
|
{
|
|
parent.Focus();
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
#if FRAMEWORK20
|
|
[Localizable(true), Browsable(false)]
|
|
public new System.Windows.Forms.Padding Padding
|
|
{
|
|
get { return base.Padding; }
|
|
set { base.Padding = value; }
|
|
}
|
|
|
|
internal bool IsUsingTextMarkup
|
|
{
|
|
get
|
|
{
|
|
if (m_Label != null)
|
|
return m_Label.TextMarkupBody != null;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public override Size GetPreferredSize(Size proposedSize)
|
|
{
|
|
if (!m_PreferredSize.IsEmpty && (proposedSize.Width == m_PreferredSize.Width || proposedSize.Width == 0 || this.AutoSize)) return m_PreferredSize;
|
|
|
|
if (!BarFunctions.IsHandleValid(this) || this.DesignMode && !this.AutoSize)
|
|
return base.GetPreferredSize(proposedSize);
|
|
if (this.Text.Length == 0)
|
|
return base.GetPreferredSize(proposedSize);
|
|
|
|
int oldWidth = m_Label.Width, oldHeight = m_Label.Height;
|
|
m_Label.SuspendPaint = true;
|
|
m_Label.Width = 0;
|
|
m_Label.Height = 0;
|
|
if ((proposedSize.Width > 0 && proposedSize.Width < 500000 || this.MaximumSize.Width > 0) && m_Label.TextMarkupBody != null)
|
|
{
|
|
if (TextOrientation == eOrientation.Horizontal)
|
|
m_Label.RecalcSizeMarkup((this.MaximumSize.Width > 0 ? this.MaximumSize.Width : proposedSize.Width));
|
|
else
|
|
m_Label.RecalcSizeMarkup((this.MaximumSize.Height > 0 ? this.MaximumSize.Height : proposedSize.Height));
|
|
}
|
|
else
|
|
{
|
|
m_Label.RecalcSize();
|
|
if (this.WordWrap && m_Label.WidthInternal > this.MaximumSize.Width && this.MaximumSize.Width > 0)
|
|
{
|
|
m_Label.Height = 0;
|
|
m_Label.Width = Dpi.DescaleWidth(this.MaximumSize.Width);
|
|
m_Label.RecalcSize();
|
|
}
|
|
else if (this.WordWrap && m_Label.WidthInternal > proposedSize.Width && proposedSize.Width > 0)
|
|
{
|
|
m_Label.Height = 0;
|
|
m_Label.Width = Dpi.DescaleWidth(proposedSize.Width);
|
|
m_Label.RecalcSize();
|
|
}
|
|
}
|
|
Size s = m_Label.Size;
|
|
s.Height += 2;
|
|
if (this.TextOrientation == eOrientation.Vertical)
|
|
{
|
|
s.Width += Dpi.Width2;
|
|
}
|
|
if (this.Font.Size > 13)
|
|
s.Height += 2;
|
|
m_Label.Width = oldWidth;
|
|
m_Label.Height = oldHeight;
|
|
m_Label.SuspendPaint = false;
|
|
m_PreferredSize = s;
|
|
|
|
return m_PreferredSize;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets a value indicating whether the control is automatically resized to display its entire contents. You can set MaximumSize.Width property to set the maximum width used by the control.
|
|
/// </summary>
|
|
[Browsable(true), DefaultValue(false), EditorBrowsable(EditorBrowsableState.Always), DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
|
|
public override bool AutoSize
|
|
{
|
|
get
|
|
{
|
|
return base.AutoSize;
|
|
}
|
|
set
|
|
{
|
|
if (this.AutoSize != value)
|
|
{
|
|
base.AutoSize = value;
|
|
AdjustSize();
|
|
}
|
|
}
|
|
}
|
|
|
|
protected override void SetBoundsCore(int x, int y, int width, int height, BoundsSpecified specified)
|
|
{
|
|
if (this.AutoSize)
|
|
{
|
|
Size preferredSize = Size.Empty;
|
|
if (width != m_PreferredSize.Width && width > 0)
|
|
{
|
|
InvalidateAutoSize();
|
|
preferredSize = this.GetPreferredSize(new Size(width, 0));
|
|
}
|
|
else
|
|
preferredSize = this.PreferredSize;
|
|
width = preferredSize.Width;
|
|
height = preferredSize.Height;
|
|
}
|
|
base.SetBoundsCore(x, y, width, height, specified);
|
|
}
|
|
|
|
private void AdjustSize()
|
|
{
|
|
if (this.AutoSize)
|
|
{
|
|
this.Size = base.PreferredSize;
|
|
}
|
|
}
|
|
|
|
protected override void OnFontChanged(EventArgs e)
|
|
{
|
|
InvalidateAutoSize();
|
|
base.OnFontChanged(e);
|
|
}
|
|
|
|
protected override void OnTextChanged(EventArgs e)
|
|
{
|
|
InvalidateAutoSize();
|
|
base.OnTextChanged(e);
|
|
this.AdjustSize();
|
|
}
|
|
#endif
|
|
/// <summary>
|
|
/// Gets or sets text-orientation. Default is horizontal.
|
|
/// </summary>
|
|
[DefaultValue(eOrientation.Horizontal), Category("Appearance"), Description("Indicates text-orientation")]
|
|
public eOrientation TextOrientation
|
|
{
|
|
get { return m_Label.TextOrientation; }
|
|
set
|
|
{
|
|
m_Label.TextOrientation = value;
|
|
InvalidateAutoSize();
|
|
this.AdjustSize();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets or sets how vertical text is rotated when TextOrientation = Vertical.
|
|
/// </summary>
|
|
[DefaultValue(true), Category("Appearance"), Description("Indicates how vertical text is rotated when TextOrientation = Vertical.")]
|
|
public bool VerticalTextTopUp
|
|
{
|
|
get { return m_Label.VerticalTextTopUp; }
|
|
set
|
|
{
|
|
m_Label.VerticalTextTopUp = value;
|
|
if (TextOrientation == eOrientation.Vertical)
|
|
{
|
|
this.Invalidate();
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets the underlying LabelItem
|
|
/// </summary>
|
|
internal LabelItem LabelItem
|
|
{
|
|
get { return (m_Label); }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Indicates the symbol displayed on label instead of the image. Setting the symbol overrides the image setting.
|
|
/// </summary>
|
|
[DefaultValue(""), Category("Appearance"), Description("Indicates the symbol displayed on face of the tile instead of the image. Setting the symbol overrides the image setting.")]
|
|
[Editor("DevComponents.DotNetBar.Design.SymbolTypeEditor, DevComponents.DotNetBar.Design, Version=14.1.0.37, Culture=neutral, PublicKeyToken=90f470f34c89ccaf", typeof(System.Drawing.Design.UITypeEditor))]
|
|
public string Symbol
|
|
{
|
|
get { return m_Label.Symbol; }
|
|
set { m_Label.Symbol = value; }
|
|
}
|
|
/// <summary>
|
|
/// Gets or sets the symbol set used to represent the Symbol.
|
|
/// </summary>
|
|
[Browsable(false), DefaultValue(eSymbolSet.Awesome)]
|
|
public eSymbolSet SymbolSet
|
|
{
|
|
get { return m_Label.SymbolSet; }
|
|
set { m_Label.SymbolSet = value; }
|
|
}
|
|
/// <summary>
|
|
/// Indicates the size of the symbol in points.
|
|
/// </summary>
|
|
[DefaultValue(0f), Category("Appearance"), Description("Indicates the size of the symbol in points.")]
|
|
public float SymbolSize
|
|
{
|
|
get { return m_Label.SymbolSize; }
|
|
set { m_Label.SymbolSize = value; }
|
|
}
|
|
/// <summary>
|
|
/// Gets or sets the color of the symbol.
|
|
/// </summary>
|
|
[Category("Appearance"), Description("Indicates color of the symbol.")]
|
|
public Color SymbolColor
|
|
{
|
|
get { return m_Label.SymbolColor; }
|
|
set { m_Label.SymbolColor = value; }
|
|
}
|
|
/// <summary>
|
|
/// Gets whether property should be serialized.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
public bool ShouldSerializeSymbolColor()
|
|
{
|
|
return m_Label.ShouldSerializeSymbolColor();
|
|
}
|
|
/// <summary>
|
|
/// Resets property to its default value.
|
|
/// </summary>
|
|
[EditorBrowsable(EditorBrowsableState.Never)]
|
|
public void ResetSymbolColor()
|
|
{
|
|
m_Label.ResetSymbolColor();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Indicates whether label text is rendered using bold font unless the Font property is specifically set to different font.
|
|
/// </summary>
|
|
[DefaultValue(false), Category("Appearance"), Description("Indicates whether label text is rendered using bold font unless the Font property is specifically set to different font.")]
|
|
public bool FontBold
|
|
{
|
|
get { return m_Label.FontBold; }
|
|
set
|
|
{
|
|
if (m_Label.FontBold != value)
|
|
{
|
|
m_Label.FontBold = value;
|
|
this.Invalidate();
|
|
}
|
|
}
|
|
}
|
|
#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
|
|
}
|
|
}
|