Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Controls / ItemsPanelTemplate.cs / 1305600 / 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) TemplateContent templateHolder = Template as TemplateContent; System.Xaml.XamlType panelType = templateHolder.SchemaContext.GetXamlType(typeof(Panel)); if (templateHolder.RootType == null || !templateHolder.RootType.CanAssignTo(panelType)) { throw new InvalidOperationException(SR.Get(SRID.ItemsPanelNotAPanel, templateHolder.RootType)); } } 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
- parserscommon.cs
- TextEvent.cs
- ConfigurationPropertyCollection.cs
- StylusPointCollection.cs
- ArraySubsetEnumerator.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- FormClosedEvent.cs
- FragmentQueryProcessor.cs
- MaskInputRejectedEventArgs.cs
- ResourceDisplayNameAttribute.cs
- TreeNodeStyleCollectionEditor.cs
- Int32Rect.cs
- PreProcessor.cs
- DelegateCompletionCallbackWrapper.cs
- AbandonedMutexException.cs
- WorkflowRuntime.cs
- backend.cs
- EventHandlers.cs
- InkPresenterAutomationPeer.cs
- ImageConverter.cs
- HostingMessageProperty.cs
- XmlSchemaComplexType.cs
- CompilerScopeManager.cs
- DoWorkEventArgs.cs
- ReadOnlyCollectionBase.cs
- XmlSchemaCompilationSettings.cs
- EventSetterHandlerConverter.cs
- HtmlInputButton.cs
- DocumentOrderComparer.cs
- ListViewGroup.cs
- BreadCrumbTextConverter.cs
- ConfigurationLocationCollection.cs
- EmbossBitmapEffect.cs
- InfoCardX509Validator.cs
- Switch.cs
- CodeStatement.cs
- Win32Native.cs
- ObjectContext.cs
- Matrix3DStack.cs
- GridView.cs
- DataTableExtensions.cs
- GridSplitter.cs
- PermissionAttributes.cs
- IisTraceListener.cs
- ComboBox.cs
- PathSegmentCollection.cs
- ExeContext.cs
- SignatureHelper.cs
- ThreadAttributes.cs
- DnsPermission.cs
- FontInfo.cs
- ModelTreeManager.cs
- TableItemPattern.cs
- LoginCancelEventArgs.cs
- CallSiteOps.cs
- LineServices.cs
- AtomPub10CategoriesDocumentFormatter.cs
- XmlSchemaObjectCollection.cs
- _OverlappedAsyncResult.cs
- ComponentDispatcherThread.cs
- SchemaAttDef.cs
- SmiRecordBuffer.cs
- CredentialCache.cs
- ProviderSettings.cs
- Popup.cs
- InputMethodStateChangeEventArgs.cs
- WebEvents.cs
- EntityProviderServices.cs
- ConfigurationElement.cs
- SqlDataSourceView.cs
- versioninfo.cs
- DiscoveryDocumentLinksPattern.cs
- CustomAttribute.cs
- LiteralSubsegment.cs
- MdImport.cs
- MultiDataTrigger.cs
- SafeProcessHandle.cs
- PackWebRequest.cs
- DefaultBindingPropertyAttribute.cs
- CorrelationActionMessageFilter.cs
- ControlValuePropertyAttribute.cs
- ToolStripItemEventArgs.cs
- SqlMethodAttribute.cs
- OleDbParameter.cs
- PassportAuthenticationEventArgs.cs
- ShellProvider.cs
- AuthorizationRuleCollection.cs
- RayHitTestParameters.cs
- HorizontalAlignConverter.cs
- XmlImplementation.cs
- PowerModeChangedEventArgs.cs
- EventLog.cs
- ToolbarAUtomationPeer.cs
- ScriptDescriptor.cs
- TextTreeObjectNode.cs
- BaseValidator.cs
- ReaderWriterLockWrapper.cs
- TextStore.cs
- SizeAnimationClockResource.cs
- WebPartConnectionsEventArgs.cs