Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / Controls / ProgressBar.cs / 1 / ProgressBar.cs
//---------------------------------------------------------------------------- // File: ProgressBar.cs // // Description: // Implementation of ProgressBar control. // // History: // 06/28/2004 - t-sergin - Created // // Copyright (C) 2004 by Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.Collections.Specialized; using System.Threading; using System.Windows.Automation.Peers; using System.Windows.Automation.Provider; using System.Windows; using System.Windows.Controls.Primitives; using System.Windows.Media; using MS.Internal.KnownBoxes; namespace System.Windows.Controls { ////// The ProgressBar class /// ///[TemplatePart(Name = "PART_Track", Type = typeof(FrameworkElement))] [TemplatePart(Name = "PART_Indicator", Type = typeof(FrameworkElement))] public class ProgressBar : RangeBase { #region Constructors static ProgressBar() { FocusableProperty.OverrideMetadata(typeof(ProgressBar), new FrameworkPropertyMetadata(BooleanBoxes.FalseBox)); DefaultStyleKeyProperty.OverrideMetadata(typeof(ProgressBar), new FrameworkPropertyMetadata(typeof(ProgressBar))); _dType = DependencyObjectType.FromSystemTypeInternal(typeof(ProgressBar)); // Set default to 100.0 RangeBase.MaximumProperty.OverrideMetadata(typeof(ProgressBar), new FrameworkPropertyMetadata(100.0)); } /// /// Instantiates a new instance of Progressbar without Dispatcher. /// public ProgressBar() : base() { } #endregion Constructors #region Properties ////// The DependencyProperty for the IsIndeterminate property. /// Flags: none /// DefaultValue: false /// public static readonly DependencyProperty IsIndeterminateProperty = DependencyProperty.Register( "IsIndeterminate", typeof(bool), typeof(ProgressBar), new FrameworkPropertyMetadata( false, new PropertyChangedCallback(OnIsIndeterminateChanged))); ////// Determines if ProgressBar shows actual values (false) /// or generic, continuous progress feedback (true). /// ///public bool IsIndeterminate { get { return (bool) GetValue(IsIndeterminateProperty); } set { SetValue(IsIndeterminateProperty, value); } } /// /// Called when IsIndeterminateProperty is changed on "d". /// private static void OnIsIndeterminateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { ProgressBar progressBar = (ProgressBar)d; // Invalidate automation peer ProgressBarAutomationPeer peer = UIElementAutomationPeer.FromElement(progressBar) as ProgressBarAutomationPeer; if (peer != null) { peer.InvalidatePeer(); } progressBar.SetProgressBarIndicatorLength(); } ////// DependencyProperty for public static readonly DependencyProperty OrientationProperty = DependencyProperty.Register( "Orientation", typeof(Orientation), typeof(ProgressBar), new FrameworkPropertyMetadata( Orientation.Horizontal, FrameworkPropertyMetadataOptions.AffectsMeasure), new ValidateValueCallback(IsValidOrientation)); ///property. /// /// Specifies orientation of the ProgressBar. /// public Orientation Orientation { get { return (Orientation) GetValue(OrientationProperty); } set { SetValue(OrientationProperty, value); } } internal static bool IsValidOrientation(object o) { Orientation value = (Orientation)o; return value == Orientation.Horizontal || value == Orientation.Vertical; } #endregion Properties #region Event Handler // Set the width/height of the contract parts private void SetProgressBarIndicatorLength() { if (_track != null && _indicator != null) { double min = Minimum; double max = Maximum; double val = Value; // When indeterminate or maximum == minimum, have the indicator stretch the // whole length of track double percent = IsIndeterminate || max == min ? 1.0 : (val - min) / (max - min); if (Orientation == Orientation.Horizontal) { _indicator.Width = percent * _track.ActualWidth; } else // Oriention == Vertical { _indicator.Height = percent * _track.ActualHeight; } } } #endregion #region Method Overrides ////// Creates AutomationPeer ( protected override AutomationPeer OnCreateAutomationPeer() { return new ProgressBarAutomationPeer(this); } ///) /// /// This method is invoked when the Value property changes. /// ProgressBar updates its style parts when Value changes. /// /// The old value of the Value property. /// The new value of the Value property. protected override void OnValueChanged(double oldValue, double newValue) { base.OnValueChanged(oldValue, newValue); SetProgressBarIndicatorLength(); } ////// Called when the Template's tree has been generated /// public override void OnApplyTemplate() { base.OnApplyTemplate(); if (_track != null) { _track.SizeChanged -= OnTrackSizeChanged; } _track = GetTemplateChild(TrackTemplateName) as FrameworkElement; _indicator = GetTemplateChild(IndicatorTemplateName) as FrameworkElement; if (_track != null) { _track.SizeChanged += OnTrackSizeChanged; } } private void OnTrackSizeChanged(object sender, SizeChangedEventArgs e) { SetProgressBarIndicatorLength(); } #endregion #region Data private const string TrackTemplateName = "PART_Track"; private const string IndicatorTemplateName = "PART_Indicator"; private FrameworkElement _track; private FrameworkElement _indicator; #endregion Data #region DTypeThemeStyleKey // Returns the DependencyObjectType for the registered ThemeStyleKey's default // value. Controls will override this method to return approriate types. internal override DependencyObjectType DTypeThemeStyleKey { get { return _dType; } } private static DependencyObjectType _dType; #endregion DTypeThemeStyleKey } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // File: ProgressBar.cs // // Description: // Implementation of ProgressBar control. // // History: // 06/28/2004 - t-sergin - Created // // Copyright (C) 2004 by Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.Collections.Specialized; using System.Threading; using System.Windows.Automation.Peers; using System.Windows.Automation.Provider; using System.Windows; using System.Windows.Controls.Primitives; using System.Windows.Media; using MS.Internal.KnownBoxes; namespace System.Windows.Controls { ////// The ProgressBar class /// ///[TemplatePart(Name = "PART_Track", Type = typeof(FrameworkElement))] [TemplatePart(Name = "PART_Indicator", Type = typeof(FrameworkElement))] public class ProgressBar : RangeBase { #region Constructors static ProgressBar() { FocusableProperty.OverrideMetadata(typeof(ProgressBar), new FrameworkPropertyMetadata(BooleanBoxes.FalseBox)); DefaultStyleKeyProperty.OverrideMetadata(typeof(ProgressBar), new FrameworkPropertyMetadata(typeof(ProgressBar))); _dType = DependencyObjectType.FromSystemTypeInternal(typeof(ProgressBar)); // Set default to 100.0 RangeBase.MaximumProperty.OverrideMetadata(typeof(ProgressBar), new FrameworkPropertyMetadata(100.0)); } /// /// Instantiates a new instance of Progressbar without Dispatcher. /// public ProgressBar() : base() { } #endregion Constructors #region Properties ////// The DependencyProperty for the IsIndeterminate property. /// Flags: none /// DefaultValue: false /// public static readonly DependencyProperty IsIndeterminateProperty = DependencyProperty.Register( "IsIndeterminate", typeof(bool), typeof(ProgressBar), new FrameworkPropertyMetadata( false, new PropertyChangedCallback(OnIsIndeterminateChanged))); ////// Determines if ProgressBar shows actual values (false) /// or generic, continuous progress feedback (true). /// ///public bool IsIndeterminate { get { return (bool) GetValue(IsIndeterminateProperty); } set { SetValue(IsIndeterminateProperty, value); } } /// /// Called when IsIndeterminateProperty is changed on "d". /// private static void OnIsIndeterminateChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { ProgressBar progressBar = (ProgressBar)d; // Invalidate automation peer ProgressBarAutomationPeer peer = UIElementAutomationPeer.FromElement(progressBar) as ProgressBarAutomationPeer; if (peer != null) { peer.InvalidatePeer(); } progressBar.SetProgressBarIndicatorLength(); } ////// DependencyProperty for public static readonly DependencyProperty OrientationProperty = DependencyProperty.Register( "Orientation", typeof(Orientation), typeof(ProgressBar), new FrameworkPropertyMetadata( Orientation.Horizontal, FrameworkPropertyMetadataOptions.AffectsMeasure), new ValidateValueCallback(IsValidOrientation)); ///property. /// /// Specifies orientation of the ProgressBar. /// public Orientation Orientation { get { return (Orientation) GetValue(OrientationProperty); } set { SetValue(OrientationProperty, value); } } internal static bool IsValidOrientation(object o) { Orientation value = (Orientation)o; return value == Orientation.Horizontal || value == Orientation.Vertical; } #endregion Properties #region Event Handler // Set the width/height of the contract parts private void SetProgressBarIndicatorLength() { if (_track != null && _indicator != null) { double min = Minimum; double max = Maximum; double val = Value; // When indeterminate or maximum == minimum, have the indicator stretch the // whole length of track double percent = IsIndeterminate || max == min ? 1.0 : (val - min) / (max - min); if (Orientation == Orientation.Horizontal) { _indicator.Width = percent * _track.ActualWidth; } else // Oriention == Vertical { _indicator.Height = percent * _track.ActualHeight; } } } #endregion #region Method Overrides ////// Creates AutomationPeer ( protected override AutomationPeer OnCreateAutomationPeer() { return new ProgressBarAutomationPeer(this); } ///) /// /// This method is invoked when the Value property changes. /// ProgressBar updates its style parts when Value changes. /// /// The old value of the Value property. /// The new value of the Value property. protected override void OnValueChanged(double oldValue, double newValue) { base.OnValueChanged(oldValue, newValue); SetProgressBarIndicatorLength(); } ////// Called when the Template's tree has been generated /// public override void OnApplyTemplate() { base.OnApplyTemplate(); if (_track != null) { _track.SizeChanged -= OnTrackSizeChanged; } _track = GetTemplateChild(TrackTemplateName) as FrameworkElement; _indicator = GetTemplateChild(IndicatorTemplateName) as FrameworkElement; if (_track != null) { _track.SizeChanged += OnTrackSizeChanged; } } private void OnTrackSizeChanged(object sender, SizeChangedEventArgs e) { SetProgressBarIndicatorLength(); } #endregion #region Data private const string TrackTemplateName = "PART_Track"; private const string IndicatorTemplateName = "PART_Indicator"; private FrameworkElement _track; private FrameworkElement _indicator; #endregion Data #region DTypeThemeStyleKey // Returns the DependencyObjectType for the registered ThemeStyleKey's default // value. Controls will override this method to return approriate types. internal override DependencyObjectType DTypeThemeStyleKey { get { return _dType; } } private static DependencyObjectType _dType; #endregion DTypeThemeStyleKey } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- InstancePersistenceException.cs
- Types.cs
- ConstantSlot.cs
- unitconverter.cs
- Attachment.cs
- ApplicationDirectoryMembershipCondition.cs
- WebBrowser.cs
- DeflateStream.cs
- StylusPointPropertyInfo.cs
- SwitchElementsCollection.cs
- TableStyle.cs
- StickyNote.cs
- DbQueryCommandTree.cs
- DesignerCategoryAttribute.cs
- SerialStream.cs
- ChannelServices.cs
- PropertyCondition.cs
- AssemblyResourceLoader.cs
- TextParagraphProperties.cs
- SqlDataSourceQueryConverter.cs
- ApplicationInterop.cs
- SvcMapFile.cs
- NestPullup.cs
- ThicknessConverter.cs
- Configuration.cs
- BitmapEffectGroup.cs
- MergeFailedEvent.cs
- TypeEnumerableViewSchema.cs
- oledbmetadatacollectionnames.cs
- CodeArrayCreateExpression.cs
- StateMachineWorkflowDesigner.cs
- ValuePatternIdentifiers.cs
- UpdatePanelControlTrigger.cs
- XmlSubtreeReader.cs
- TrackingStringDictionary.cs
- HMACSHA384.cs
- BrowserCapabilitiesCompiler.cs
- ComAdminInterfaces.cs
- CharacterBuffer.cs
- AsymmetricKeyExchangeFormatter.cs
- QilLiteral.cs
- MsdtcWrapper.cs
- cryptoapiTransform.cs
- TableSectionStyle.cs
- EntityDataSource.cs
- SessionPageStatePersister.cs
- ellipse.cs
- PngBitmapDecoder.cs
- OleDbPermission.cs
- Int32Collection.cs
- CollectionChangeEventArgs.cs
- AssemblyBuilder.cs
- ShaderEffect.cs
- MimeReflector.cs
- HttpProtocolReflector.cs
- httpstaticobjectscollection.cs
- ResourceExpressionBuilder.cs
- CallbackValidatorAttribute.cs
- DragAssistanceManager.cs
- WebServiceErrorEvent.cs
- PageWrapper.cs
- DispatcherTimer.cs
- RowBinding.cs
- NestedContainer.cs
- InertiaTranslationBehavior.cs
- GraphicsPath.cs
- StateValidator.cs
- SqlNotificationRequest.cs
- CalendarTable.cs
- XPathScanner.cs
- objectquery_tresulttype.cs
- WebPartUserCapability.cs
- ScrollData.cs
- RichTextBoxContextMenu.cs
- Timer.cs
- DragDrop.cs
- WebServiceParameterData.cs
- HwndTarget.cs
- TableAdapterManagerNameHandler.cs
- NonVisualControlAttribute.cs
- ConfigurationStrings.cs
- RenameRuleObjectDialog.cs
- SecurityPolicySection.cs
- RegexGroupCollection.cs
- SharedPersonalizationStateInfo.cs
- TreeViewImageGenerator.cs
- XamlPathDataSerializer.cs
- ExecutionProperties.cs
- DeferredBinaryDeserializerExtension.cs
- ServiceReference.cs
- AnnotationService.cs
- CodeIdentifiers.cs
- SchemaImporter.cs
- DescendentsWalkerBase.cs
- EntityTypeEmitter.cs
- OdbcParameter.cs
- AsmxEndpointPickerExtension.cs
- BinHexDecoder.cs
- Graphics.cs
- StateWorkerRequest.cs