Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / ControlTemplate.cs / 1 / ControlTemplate.cs
//------------------------------------------------------------------------------------ // // File: ControlTemplate.cs // // Description: // A generic class that allow instantiation of a tree of Framework[Content]Elements. // This is used to specify an overall master template for a Control. The control // author defines the default ControlTemplate and the app author can override this. // // Copyright (C) 2004 by Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------------- using System.Diagnostics; // Debug using System.Windows.Controls; // Control using System.Windows.Media.Animation; // Timeline using System.Windows.Navigation; // PageFunctionBase using System.ComponentModel; // DesignerSerializationVisibilityAttribute & DefaultValue using System.Windows.Markup; // DependsOnAttribute namespace System.Windows.Controls { ////// A generic class that allow instantiation of a tree of /// Framework[Content]Elements. This is used to specify an /// overall master template for a Control. The control author /// defines the default ControlTemplate and the app author /// can override this. /// [Localizability(LocalizationCategory.None, Readability=Readability.Unreadable)] public class ControlTemplate : FrameworkTemplate { #region Construction ////// ControlTemplate Constructor /// public ControlTemplate() { } ////// ControlTemplate Constructor /// public ControlTemplate(Type targetType) { ValidateTargetType(targetType, "targetType"); _targetType = targetType; } #endregion Construction #region PublicMethods ////// Validate against the following rules /// 1. One cannot use a ControlTemplate to template a FrameworkContentElement /// 2. One cannot use a ControlTemplate to template a FrameworkElement other than a Control /// 3. One cannot use a ControlTemplate to template a Control that isn't associated with it /// protected override void ValidateTemplatedParent(FrameworkElement templatedParent) { // Must have a non-null feTemplatedParent if (templatedParent == null) { throw new ArgumentNullException("templatedParent"); } // The target type of a ControlTemplate must match the // type of the Control that it is being applied to if (_targetType != null && !_targetType.IsInstanceOfType(templatedParent)) { throw new ArgumentException(SR.Get(SRID.TemplateTargetTypeMismatch, _targetType.Name, templatedParent.GetType().Name)); } // One cannot use a ControlTemplate to template a Control that isn't associated with it if (templatedParent.TemplateInternal != this) { throw new ArgumentException(SR.Get(SRID.MustNotTemplateUnassociatedControl)); } } #endregion PublicMethods #region PublicProperties ////// TargetType for this ControlTemplate /// [DefaultValue(null)] public Type TargetType { get { return _targetType; } set { ValidateTargetType(value, "value"); CheckSealed(); _targetType = value; } } ////// Collection of Triggers /// [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] [DependsOn("VisualTree")] public TriggerCollection Triggers { get { if (_triggers == null) { _triggers = new TriggerCollection(); // If the template has been sealed prior to this the newly // created TriggerCollection also needs to be sealed if (IsSealed) { _triggers.Seal(); } } return _triggers; } } #endregion PublicProperties #region NonPublicMethods // Validate against two rules // 1. targetType must not null // 2. targetType must be a Control or a subclass of it private void ValidateTargetType(Type targetType, string argName) { if (targetType == null) { throw new ArgumentNullException(argName); } if (!typeof(Control).IsAssignableFrom(targetType) && !typeof(Page).IsAssignableFrom(targetType) && !typeof(PageFunctionBase).IsAssignableFrom(targetType)) { throw new ArgumentException(SR.Get(SRID.InvalidControlTemplateTargetType, targetType.Name)); } } #endregion NonPublicMethods #region NonPublicProperties // // TargetType for ControlTemplate. This is override is // so FrameworkTemplate can see this property. // internal override Type TargetTypeInternal { get { if (TargetType != null) { return TargetType; } return DefaultTargetType; } } // Subclasses must provide a way for the parser to directly set the // target type. internal override void SetTargetTypeInternal(Type targetType) { TargetType = targetType; } // // Collection of Triggers for a ControlTemplate. This is // override is so FrameworkTemplate can see this property. // internal override TriggerCollection TriggersInternal { get { return Triggers; } } #endregion NonPublicProperties #region Data private Type _targetType; private TriggerCollection _triggers; // Target type is FrameworkElement by default internal static readonly Type DefaultTargetType = typeof(Control); #endregion Data } } // 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
- LocationSectionRecord.cs
- AnnotationObservableCollection.cs
- PeerFlooder.cs
- ValidationEventArgs.cs
- UrlPropertyAttribute.cs
- DataGridBoundColumn.cs
- Vector3DCollectionValueSerializer.cs
- FixedTextSelectionProcessor.cs
- EmbeddedMailObject.cs
- WebPermission.cs
- Propagator.Evaluator.cs
- NamedPermissionSet.cs
- FrameworkElementFactory.cs
- loginstatus.cs
- FixedSOMFixedBlock.cs
- FrameworkTextComposition.cs
- DynamicDocumentPaginator.cs
- MasterPage.cs
- OdbcConnectionStringbuilder.cs
- _SslState.cs
- TransformGroup.cs
- RemotingService.cs
- DesignerCategoryAttribute.cs
- EpmContentSerializerBase.cs
- Visual.cs
- OdbcError.cs
- DivideByZeroException.cs
- SharedStream.cs
- TraceContextRecord.cs
- UserControlParser.cs
- KeyTimeConverter.cs
- util.cs
- RayHitTestParameters.cs
- HttpValueCollection.cs
- WSFederationHttpBindingCollectionElement.cs
- DistributedTransactionPermission.cs
- DecoderBestFitFallback.cs
- WebPartConnection.cs
- WebConfigurationFileMap.cs
- TextChange.cs
- XmlValueConverter.cs
- DataSpaceManager.cs
- SqlCommandBuilder.cs
- TraceSource.cs
- UserNamePasswordClientCredential.cs
- XmlHierarchicalDataSourceView.cs
- DnsPermission.cs
- Queue.cs
- SessionSwitchEventArgs.cs
- CircleHotSpot.cs
- SecurityHeaderLayout.cs
- MissingSatelliteAssemblyException.cs
- JumpPath.cs
- ADRoleFactoryConfiguration.cs
- ParseNumbers.cs
- ExpandSegmentCollection.cs
- OdbcStatementHandle.cs
- RouteItem.cs
- NamedPermissionSet.cs
- Events.cs
- DomainUpDown.cs
- NameSpaceEvent.cs
- WebConfigurationFileMap.cs
- ViewValidator.cs
- WizardForm.cs
- CodeValidator.cs
- UdpDiscoveryEndpointProvider.cs
- CacheEntry.cs
- XPathArrayIterator.cs
- Executor.cs
- XmlProcessingInstruction.cs
- HttpClientCertificate.cs
- XmlHelper.cs
- AVElementHelper.cs
- StringCollectionMarkupSerializer.cs
- PointKeyFrameCollection.cs
- SizeAnimationBase.cs
- CheckBox.cs
- DelegatingTypeDescriptionProvider.cs
- ObservableDictionary.cs
- Parameter.cs
- PageTheme.cs
- SendKeys.cs
- WeakRefEnumerator.cs
- ToolStripPanelRow.cs
- SortQueryOperator.cs
- HelpProvider.cs
- CodeAttributeDeclarationCollection.cs
- MatcherBuilder.cs
- DataGridHeaderBorder.cs
- OracleBoolean.cs
- ColumnPropertiesGroup.cs
- UndoManager.cs
- ToolStripSeparator.cs
- OletxCommittableTransaction.cs
- GridViewRowEventArgs.cs
- Configuration.cs
- OdbcStatementHandle.cs
- StringExpressionSet.cs
- ListArgumentProvider.cs