Code:
/ 4.0 / 4.0 / 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.
//----------------------------------------------------------------------------
//
//
// 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
- FloaterBaseParagraph.cs
- GiveFeedbackEvent.cs
- MemoryStream.cs
- ListCollectionView.cs
- SoapTypeAttribute.cs
- QilStrConcat.cs
- DocumentApplication.cs
- UICuesEvent.cs
- DropShadowEffect.cs
- ErrorHandlingAcceptor.cs
- CacheMemory.cs
- AlphaSortedEnumConverter.cs
- CFStream.cs
- OraclePermissionAttribute.cs
- CharUnicodeInfo.cs
- SpinWait.cs
- SimpleWebHandlerParser.cs
- DocumentOrderQuery.cs
- BlobPersonalizationState.cs
- UnsafeNativeMethods.cs
- MethodAccessException.cs
- ValueType.cs
- ZipIOExtraFieldZip64Element.cs
- EditingScopeUndoUnit.cs
- MediaEntryAttribute.cs
- ChangePasswordAutoFormat.cs
- TrustManagerPromptUI.cs
- Polyline.cs
- PermissionSetEnumerator.cs
- HwndHost.cs
- TextViewSelectionProcessor.cs
- AssemblyBuilder.cs
- objectresult_tresulttype.cs
- EntityDataSourceWrapper.cs
- SQLSingle.cs
- ApplicationContext.cs
- Int32AnimationUsingKeyFrames.cs
- RotateTransform.cs
- XmlImplementation.cs
- FlowDocumentReaderAutomationPeer.cs
- WaitingCursor.cs
- NamespaceQuery.cs
- RectConverter.cs
- GeneralTransformGroup.cs
- OleDbInfoMessageEvent.cs
- ValuePattern.cs
- ReflectionUtil.cs
- MethodMessage.cs
- ResourceWriter.cs
- DBSqlParserTableCollection.cs
- WorkflowDesigner.cs
- Pens.cs
- SystemUdpStatistics.cs
- XmlNullResolver.cs
- ApplicationCommands.cs
- CompilerGlobalScopeAttribute.cs
- DataGridViewRowsRemovedEventArgs.cs
- ForwardPositionQuery.cs
- ZipIOExtraField.cs
- HelpKeywordAttribute.cs
- TabItemAutomationPeer.cs
- RemoteWebConfigurationHostServer.cs
- PartitionResolver.cs
- UIElementPropertyUndoUnit.cs
- PointCollectionConverter.cs
- VisualTreeFlattener.cs
- DeviceFiltersSection.cs
- EntityDataReader.cs
- SrgsToken.cs
- DataGridViewColumnConverter.cs
- IPAddressCollection.cs
- LookupNode.cs
- Matrix.cs
- SqlDataAdapter.cs
- DataGrid.cs
- HttpModuleCollection.cs
- OpCodes.cs
- DropDownButton.cs
- CallSiteHelpers.cs
- OrderablePartitioner.cs
- RMEnrollmentPage2.cs
- ExecutionScope.cs
- DiagnosticsConfigurationHandler.cs
- EntityDataSourceChangedEventArgs.cs
- SqlServer2KCompatibilityCheck.cs
- SqlDataSourceCustomCommandEditor.cs
- HostingEnvironmentException.cs
- TextStore.cs
- EventSourceCreationData.cs
- SqlInfoMessageEvent.cs
- ControlPropertyNameConverter.cs
- IUnknownConstantAttribute.cs
- BoundField.cs
- StringAnimationBase.cs
- ThreadStartException.cs
- ConfigErrorGlyph.cs
- InstanceData.cs
- ItemsControlAutomationPeer.cs
- Debug.cs
- ObjectView.cs