Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Framework / MS / Internal / Ink / DrawingAttributesDefaultValueFactory.cs / 1 / DrawingAttributesDefaultValueFactory.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: DefaultValueFactory for DrawingAttributes // // History: // 2005/11/08 : jordanpa - Created // //--------------------------------------------------------------------------- using System; using System.Diagnostics; using System.Windows; using System.Windows.Controls; using System.Windows.Ink; namespace MS.Internal.Ink { internal class DrawingAttributesDefaultValueFactory : DefaultValueFactory { internal DrawingAttributesDefaultValueFactory() { } ////// Returns an "immutable" default value. Since we can't make the default value /// read only we'll return a new one every time. /// internal override object DefaultValue { get { return new DrawingAttributes(); } } ////// Creates a mutable default value /// internal override object CreateDefaultValue(DependencyObject owner, DependencyProperty property) { // Instantiate our default value instance. DrawingAttributes defaultValue = new DrawingAttributes(); // Add event handlers for tracking the changes on the default value instance. DrawingAttributesDefaultPromoter promoter = new DrawingAttributesDefaultPromoter((InkCanvas)owner); defaultValue.AttributeChanged += new PropertyDataChangedEventHandler(promoter.OnDrawingAttributesChanged); defaultValue.PropertyDataChanged += new PropertyDataChangedEventHandler(promoter.OnDrawingAttributesChanged); return defaultValue; } ////// A tracking class which monitors the sub-property changes on DrawingAttributes /// private class DrawingAttributesDefaultPromoter { ////// Constructor /// /// internal DrawingAttributesDefaultPromoter(InkCanvas owner) { _owner = owner; } ////// A handler for both AttributeChanged and PropertyDataChanged. /// /// /// internal void OnDrawingAttributesChanged(object sender, PropertyDataChangedEventArgs e) { DrawingAttributes value = (DrawingAttributes)sender; // The current instance will be promoted to the local value other than the default value. // Then we could just remove our handlers to stop tracking. value.AttributeChanged -= new PropertyDataChangedEventHandler(OnDrawingAttributesChanged); value.PropertyDataChanged -= new PropertyDataChangedEventHandler(OnDrawingAttributesChanged); // NTRAID#WINDOWS-1334059-2005/10/17-waynezen, // We only promote the value when there is no local value set yet. if (_owner.ReadLocalValue(InkCanvas.DefaultDrawingAttributesProperty) == DependencyProperty.UnsetValue) { // Promote the instance to the local value. _owner.SetValue(InkCanvas.DefaultDrawingAttributesProperty, value); } // Remove this value from the DefaultValue cache so we stop // handing it out as the default value now that it has changed. PropertyMetadata metadata = InkCanvas.DefaultDrawingAttributesProperty.GetMetadata(_owner.DependencyObjectType); metadata.ClearCachedDefaultValue(_owner, InkCanvas.DefaultDrawingAttributesProperty); } private readonly InkCanvas _owner; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: DefaultValueFactory for DrawingAttributes // // History: // 2005/11/08 : jordanpa - Created // //--------------------------------------------------------------------------- using System; using System.Diagnostics; using System.Windows; using System.Windows.Controls; using System.Windows.Ink; namespace MS.Internal.Ink { internal class DrawingAttributesDefaultValueFactory : DefaultValueFactory { internal DrawingAttributesDefaultValueFactory() { } ////// Returns an "immutable" default value. Since we can't make the default value /// read only we'll return a new one every time. /// internal override object DefaultValue { get { return new DrawingAttributes(); } } ////// Creates a mutable default value /// internal override object CreateDefaultValue(DependencyObject owner, DependencyProperty property) { // Instantiate our default value instance. DrawingAttributes defaultValue = new DrawingAttributes(); // Add event handlers for tracking the changes on the default value instance. DrawingAttributesDefaultPromoter promoter = new DrawingAttributesDefaultPromoter((InkCanvas)owner); defaultValue.AttributeChanged += new PropertyDataChangedEventHandler(promoter.OnDrawingAttributesChanged); defaultValue.PropertyDataChanged += new PropertyDataChangedEventHandler(promoter.OnDrawingAttributesChanged); return defaultValue; } ////// A tracking class which monitors the sub-property changes on DrawingAttributes /// private class DrawingAttributesDefaultPromoter { ////// Constructor /// /// internal DrawingAttributesDefaultPromoter(InkCanvas owner) { _owner = owner; } ////// A handler for both AttributeChanged and PropertyDataChanged. /// /// /// internal void OnDrawingAttributesChanged(object sender, PropertyDataChangedEventArgs e) { DrawingAttributes value = (DrawingAttributes)sender; // The current instance will be promoted to the local value other than the default value. // Then we could just remove our handlers to stop tracking. value.AttributeChanged -= new PropertyDataChangedEventHandler(OnDrawingAttributesChanged); value.PropertyDataChanged -= new PropertyDataChangedEventHandler(OnDrawingAttributesChanged); // NTRAID#WINDOWS-1334059-2005/10/17-waynezen, // We only promote the value when there is no local value set yet. if (_owner.ReadLocalValue(InkCanvas.DefaultDrawingAttributesProperty) == DependencyProperty.UnsetValue) { // Promote the instance to the local value. _owner.SetValue(InkCanvas.DefaultDrawingAttributesProperty, value); } // Remove this value from the DefaultValue cache so we stop // handing it out as the default value now that it has changed. PropertyMetadata metadata = InkCanvas.DefaultDrawingAttributesProperty.GetMetadata(_owner.DependencyObjectType); metadata.ClearCachedDefaultValue(_owner, InkCanvas.DefaultDrawingAttributesProperty); } private readonly InkCanvas _owner; } } } // 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
- XPathConvert.cs
- PropertyEntry.cs
- RightsManagementEncryptedStream.cs
- CompositeKey.cs
- HttpModulesSection.cs
- GridErrorDlg.cs
- TableLayoutSettings.cs
- FamilyMap.cs
- XmlCharCheckingReader.cs
- CharStorage.cs
- MemberProjectionIndex.cs
- ClientData.cs
- Filter.cs
- ProgressBar.cs
- WmlLabelAdapter.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- ObjectViewFactory.cs
- RawStylusInput.cs
- SafeWaitHandle.cs
- TraceData.cs
- IndicShape.cs
- DeploymentSection.cs
- ResizeBehavior.cs
- ReadOnlyHierarchicalDataSource.cs
- StylusPointCollection.cs
- HttpModuleAction.cs
- SupportingTokenListenerFactory.cs
- TempFiles.cs
- StateRuntime.cs
- EntityDataSourceDesignerHelper.cs
- _NetworkingPerfCounters.cs
- ImageDrawing.cs
- OdbcUtils.cs
- ParseNumbers.cs
- AsymmetricCryptoHandle.cs
- SimpleWorkerRequest.cs
- HtmlTableCell.cs
- WebUtil.cs
- NativeRecognizer.cs
- LinkedList.cs
- Style.cs
- Security.cs
- SqlServer2KCompatibilityCheck.cs
- HttpServerVarsCollection.cs
- Variable.cs
- SimpleTableProvider.cs
- SecurityTokenValidationException.cs
- DataSysAttribute.cs
- DataPager.cs
- DataMember.cs
- COM2PictureConverter.cs
- ZoneLinkButton.cs
- TextHidden.cs
- Tokenizer.cs
- streamingZipPartStream.cs
- Descriptor.cs
- VisualTreeHelper.cs
- SafeRsaProviderHandle.cs
- DataControlFieldCollection.cs
- DetailsViewAutoFormat.cs
- CodeIndexerExpression.cs
- TableLayoutRowStyleCollection.cs
- TypeUsage.cs
- ErrorTableItemStyle.cs
- DataGridViewCellEventArgs.cs
- DataGridViewTextBoxEditingControl.cs
- XmlSchemaComplexContentRestriction.cs
- Lease.cs
- BoundField.cs
- SHA1Managed.cs
- SymLanguageVendor.cs
- PathFigureCollectionConverter.cs
- EntityProviderFactory.cs
- IPEndPoint.cs
- TypeUsageBuilder.cs
- SkinBuilder.cs
- XsdDateTime.cs
- StaticTextPointer.cs
- DataGridTextBoxColumn.cs
- Activity.cs
- WebPartDescriptionCollection.cs
- DefaultPrintController.cs
- DebugInfoExpression.cs
- HtmlFormWrapper.cs
- ArrayList.cs
- UIElement3D.cs
- Cursor.cs
- UncommonField.cs
- FactoryRecord.cs
- RSACryptoServiceProvider.cs
- PerfService.cs
- AssemblyBuilder.cs
- PrintingPermission.cs
- _CommandStream.cs
- FigureParaClient.cs
- CustomErrorsSection.cs
- FontSource.cs
- TextTreeText.cs
- CurrentChangingEventArgs.cs
- DiscardableAttribute.cs