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
- mansign.cs
- ImpersonateTokenRef.cs
- NestedContainer.cs
- DataGridColumnHeadersPresenterAutomationPeer.cs
- BaseHashHelper.cs
- ContentType.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- ListItemConverter.cs
- SqlUtil.cs
- WebContext.cs
- TableNameAttribute.cs
- SqlProvider.cs
- DeviceFiltersSection.cs
- StrongNameIdentityPermission.cs
- CompositeTypefaceMetrics.cs
- SqlCacheDependencyDatabase.cs
- BitmapCodecInfoInternal.cs
- Encoder.cs
- FixedDocumentPaginator.cs
- PropertyInfoSet.cs
- TextControlDesigner.cs
- InfoCardCryptoHelper.cs
- XmlAnyAttributeAttribute.cs
- XmlILIndex.cs
- RegexNode.cs
- WebPartCancelEventArgs.cs
- HwndSourceKeyboardInputSite.cs
- MgmtConfigurationRecord.cs
- formatter.cs
- CommonDialog.cs
- SspiWrapper.cs
- UndirectedGraph.cs
- FunctionDefinition.cs
- Attachment.cs
- precedingsibling.cs
- XPathDescendantIterator.cs
- InputLanguageManager.cs
- PerformanceCounterLib.cs
- SlotInfo.cs
- ProvidePropertyAttribute.cs
- WindowsTokenRoleProvider.cs
- PerfCounterSection.cs
- RemotingServices.cs
- DynamicRendererThreadManager.cs
- CustomValidator.cs
- RegistrationProxy.cs
- ControlPropertyNameConverter.cs
- Serializer.cs
- StdValidatorsAndConverters.cs
- ProcessModelSection.cs
- MouseGestureValueSerializer.cs
- DataGridPageChangedEventArgs.cs
- X509CertificateInitiatorClientCredential.cs
- listitem.cs
- XmlSchemaAttributeGroupRef.cs
- LoginView.cs
- TransformProviderWrapper.cs
- KeyConverter.cs
- Semaphore.cs
- ServiceMetadataPublishingElement.cs
- Module.cs
- CqlBlock.cs
- TextSelectionProcessor.cs
- WmlTextViewAdapter.cs
- CoreSwitches.cs
- LightweightCodeGenerator.cs
- DataGridViewCellToolTipTextNeededEventArgs.cs
- XmlSchemaRedefine.cs
- SemanticKeyElement.cs
- ProcessProtocolHandler.cs
- CommandValueSerializer.cs
- TemplateKey.cs
- DeferrableContentConverter.cs
- ValueSerializer.cs
- storagemappingitemcollection.viewdictionary.cs
- FormViewUpdateEventArgs.cs
- RegularExpressionValidator.cs
- FilterQuery.cs
- HttpCookieCollection.cs
- WindowsListBox.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- SessionParameter.cs
- WindowsButton.cs
- Util.cs
- SectionXmlInfo.cs
- ObjectContextServiceProvider.cs
- CroppedBitmap.cs
- StorageSetMapping.cs
- WriterOutput.cs
- SqlCaseSimplifier.cs
- WrappedIUnknown.cs
- glyphs.cs
- SafeProcessHandle.cs
- ToggleButtonAutomationPeer.cs
- InputChannelAcceptor.cs
- Matrix.cs
- BackoffTimeoutHelper.cs
- List.cs
- StretchValidation.cs
- TextTabProperties.cs