Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / Controls / ItemsPanelTemplate.cs / 1 / ItemsPanelTemplate.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: ItemsPanelTemplate describes how ItemsPresenter creates the panel // that manages layout of containers for an ItemsControl. // // Specs: // //--------------------------------------------------------------------------- using System.ComponentModel; using System.Windows.Controls; using System.Windows.Markup; using System.Diagnostics; namespace System.Windows.Controls { ////// ItemsPanelTemplate describes how ItemsPresenter creates the panel /// that manages layout of containers for an ItemsControl. /// public class ItemsPanelTemplate : FrameworkTemplate { #region Constructors //------------------------------------------------------------------- // // Constructors // //------------------------------------------------------------------- ////// ItemsPanelTemplate Constructor /// public ItemsPanelTemplate() { } ////// ItemsPanelTemplate Constructor /// public ItemsPanelTemplate(FrameworkElementFactory root) { VisualTree = root; } #endregion Constructors #region Public Properties //-------------------------------------------------------------------- // // Public Properties // //------------------------------------------------------------------- #endregion PublicProperties #region Internal Properties //-------------------------------------------------------------------- // // Internal Properties // //-------------------------------------------------------------------- // // TargetType for ItemsPanelTemplate. This is override is // so FrameworkTemplate can see this property. // internal override Type TargetTypeInternal { get { return DefaultTargetType; } } // Subclasses must provide a way for the parser to directly set the // target type. For ItemsPanelTemplate, this is not allowed. internal override void SetTargetTypeInternal(Type targetType) { throw new InvalidOperationException(SR.Get(SRID.TemplateNotTargetType)); } // Target type of ItemsPanelTemplate is ItemsPresenter static internal Type DefaultTargetType { get { return typeof(ItemsPresenter); } } #endregion Internal Properties #region Internal Methods //------------------------------------------------------------------- // // Internal Methods // //-------------------------------------------------------------------- // // ProcessTemplateBeforeSeal // // This is used in the case of templates defined with FEFs. For templates // in Baml (the typical case), see the OnApply override. // // 1. Verify that // a. root element is a Panel // 2. Set IsItemsHost = true // internal override void ProcessTemplateBeforeSeal() { FrameworkElementFactory root; if( HasContent ) { // This is a Baml-style template // Validate the root type (it must be a Panel) if (!typeof(Panel).IsAssignableFrom(OptimizedTemplateContent.RootType)) throw new InvalidOperationException(SR.Get(SRID.ItemsPanelNotAPanel, OptimizedTemplateContent.RootType)); // Set the IsItemsHost property on the root, via the template tables BamlNamedElementStartRecord bamlNamedElementStartRecord = OptimizedTemplateContent.UnsharedContent as BamlNamedElementStartRecord; SharedDp sharedDp = new SharedDp( Panel.IsItemsHostProperty, true, bamlNamedElementStartRecord.RuntimeName ); OptimizedTemplateContent.SharedProperties.Add( sharedDp ); } else if ((root = this.VisualTree) != null) { // This is a FEF-style template if (!typeof(Panel).IsAssignableFrom(root.Type)) throw new InvalidOperationException(SR.Get(SRID.ItemsPanelNotAPanel, root.Type)); root.SetValue(Panel.IsItemsHostProperty, true); } } #endregion Internal Methods #region Protected Methods //------------------------------------------------------------------- // // Protected Methods // //------------------------------------------------------------------- ////// Validate against the following rules /// 1. Must have a non-null feTemplatedParent /// 2. A ItemsPanelTemplate must be applied to a ContentPresenter /// protected override void ValidateTemplatedParent(FrameworkElement templatedParent) { // Must have a non-null feTemplatedParent if (templatedParent == null) { throw new ArgumentNullException("templatedParent"); } // A ItemsPanelTemplate must be applied to an ItemsPresenter if (!(templatedParent is ItemsPresenter)) { throw new ArgumentException(SR.Get(SRID.TemplateTargetTypeMismatch, "ItemsPresenter", templatedParent.GetType().Name)); } } #endregion Protected Methods } } // 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
- TemplateControl.cs
- CustomError.cs
- TextEditor.cs
- HideDisabledControlAdapter.cs
- HtmlTableRow.cs
- CommonDialog.cs
- VSWCFServiceContractGenerator.cs
- ActivityExecutorOperation.cs
- TextServicesProperty.cs
- DiagnosticEventProvider.cs
- ProxyElement.cs
- BufferedGraphicsContext.cs
- MailMessageEventArgs.cs
- CodeCommentStatement.cs
- AutomationPeer.cs
- Asn1Utilities.cs
- SimpleFileLog.cs
- VisualStates.cs
- VirtualPath.cs
- SpellerError.cs
- EdmProviderManifest.cs
- LocalizedNameDescriptionPair.cs
- StreamSecurityUpgradeAcceptorAsyncResult.cs
- TextClipboardData.cs
- TransformerTypeCollection.cs
- PhonemeConverter.cs
- ByteConverter.cs
- LineBreak.cs
- RemoveStoryboard.cs
- ToolStripStatusLabel.cs
- ComboBoxAutomationPeer.cs
- TableSectionStyle.cs
- KnownColorTable.cs
- WebBrowserHelper.cs
- LoadedOrUnloadedOperation.cs
- TextContainerChangedEventArgs.cs
- MatrixAnimationUsingPath.cs
- WindowsGrip.cs
- ErrorTableItemStyle.cs
- XamlTreeBuilderBamlRecordWriter.cs
- OutputScope.cs
- RouteParser.cs
- OracleInfoMessageEventArgs.cs
- UnsignedPublishLicense.cs
- PasswordRecovery.cs
- ReadOnlyTernaryTree.cs
- NonParentingControl.cs
- BitmapCodecInfoInternal.cs
- CredentialSelector.cs
- DateBoldEvent.cs
- CallbackHandler.cs
- SystemIPGlobalStatistics.cs
- RecognizedPhrase.cs
- GeometryCollection.cs
- PartManifestEntry.cs
- MembershipValidatePasswordEventArgs.cs
- MissingMemberException.cs
- RemoteWebConfigurationHostStream.cs
- X500Name.cs
- DynamicPhysicalDiscoSearcher.cs
- TimeManager.cs
- ParserExtension.cs
- AnnotationStore.cs
- SqlHelper.cs
- BamlMapTable.cs
- RegionData.cs
- FlowDocumentReader.cs
- ObjectListCommandEventArgs.cs
- TrackingProfileSerializer.cs
- ValidatingReaderNodeData.cs
- DataServiceQueryException.cs
- DataColumn.cs
- ToolboxItemLoader.cs
- SubtreeProcessor.cs
- XPathBinder.cs
- RectangleF.cs
- DataObjectAttribute.cs
- SBCSCodePageEncoding.cs
- InvalidCastException.cs
- ReflectionUtil.cs
- SrgsRulesCollection.cs
- _ConnectStream.cs
- GridViewColumnHeaderAutomationPeer.cs
- PenThread.cs
- ReadOnlyHierarchicalDataSource.cs
- HtmlToClrEventProxy.cs
- HorizontalAlignConverter.cs
- SerializationSectionGroup.cs
- NoPersistProperty.cs
- ImageSourceConverter.cs
- IntegerValidatorAttribute.cs
- EventPropertyMap.cs
- RotateTransform3D.cs
- VBIdentifierDesigner.xaml.cs
- IPHostEntry.cs
- translator.cs
- ProjectionCamera.cs
- SafeUserTokenHandle.cs
- UIElementParaClient.cs
- TextChangedEventArgs.cs