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
- RectangleGeometry.cs
- WindowsNonControl.cs
- UpdatePanelTriggerCollection.cs
- ScrollPattern.cs
- AsymmetricKeyExchangeFormatter.cs
- SharedStatics.cs
- HostProtectionPermission.cs
- sqlcontext.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- QueryCacheManager.cs
- BamlLocalizableResourceKey.cs
- XmlDocumentSerializer.cs
- ConfigsHelper.cs
- XmlDataContract.cs
- httpapplicationstate.cs
- InputScopeConverter.cs
- MD5.cs
- XslNumber.cs
- ApplicationTrust.cs
- StackSpiller.Bindings.cs
- VectorConverter.cs
- UniqueIdentifierService.cs
- IntSumAggregationOperator.cs
- WorkflowDesignerMessageFilter.cs
- UndoUnit.cs
- ReachDocumentReferenceSerializerAsync.cs
- ConfigurationProperty.cs
- ContractsBCL.cs
- CompilationUnit.cs
- sqlcontext.cs
- Token.cs
- OrderedDictionaryStateHelper.cs
- ApplicationManager.cs
- WebPageTraceListener.cs
- PlaceHolder.cs
- COM2ExtendedTypeConverter.cs
- TakeQueryOptionExpression.cs
- ConnectionPointCookie.cs
- BidOverLoads.cs
- PageFunction.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- TextServicesCompartmentContext.cs
- Pair.cs
- ColumnMapVisitor.cs
- GenericTextProperties.cs
- ChangeInterceptorAttribute.cs
- NullEntityWrapper.cs
- TemplateControlParser.cs
- ZipIORawDataFileBlock.cs
- DataViewManagerListItemTypeDescriptor.cs
- PlatformNotSupportedException.cs
- ReflectionPermission.cs
- Thread.cs
- versioninfo.cs
- _DynamicWinsockMethods.cs
- PartialList.cs
- RowVisual.cs
- ChangeNode.cs
- LocalizationParserHooks.cs
- XXXOnTypeBuilderInstantiation.cs
- SimpleHandlerFactory.cs
- StaticFileHandler.cs
- RIPEMD160Managed.cs
- MimeFormatExtensions.cs
- DecoderNLS.cs
- ExtenderControl.cs
- RegexTree.cs
- MonitorWrapper.cs
- XmlLinkedNode.cs
- Monitor.cs
- CheckBoxStandardAdapter.cs
- IIS7WorkerRequest.cs
- ActivitiesCollection.cs
- MeasureData.cs
- WriteTimeStream.cs
- SchemaImporterExtensionElementCollection.cs
- WindowsFormsSynchronizationContext.cs
- SiteOfOriginPart.cs
- BitmapData.cs
- ControlIdConverter.cs
- CodeObjectCreateExpression.cs
- XhtmlTextWriter.cs
- SevenBitStream.cs
- util.cs
- QilGeneratorEnv.cs
- Vector3DConverter.cs
- WindowsSolidBrush.cs
- ColorAnimationUsingKeyFrames.cs
- TextBoxBase.cs
- RemotingSurrogateSelector.cs
- TextBoxAutoCompleteSourceConverter.cs
- UnlockCardRequest.cs
- TableStyle.cs
- IPCCacheManager.cs
- OutputCacheProfileCollection.cs
- ResourceManagerWrapper.cs
- AlternateViewCollection.cs
- XmlDeclaration.cs
- AsyncOperation.cs
- OleDbDataReader.cs