Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / DataTemplate.cs / 1305600 / DataTemplate.cs
//---------------------------------------------------------------------------- // //// Copyright (C) Microsoft Corporation. All rights reserved. // // // Description: DataTemplate describes how to display a single data item. // // Specs: http://avalon/coreui/Specs%20%20Property%20Engine/Styling%20Revisited.doc // //--------------------------------------------------------------------------- using System.ComponentModel; using System.Windows.Controls; using System.Windows.Markup; namespace System.Windows { ////// DataTemplate describes how to display a single data item. /// [DictionaryKeyProperty("DataTemplateKey")] public class DataTemplate : FrameworkTemplate { #region Constructors //------------------------------------------------------------------- // // Constructors // //------------------------------------------------------------------- ////// DataTemplate Constructor /// public DataTemplate() { } ////// DataTemplate Constructor /// public DataTemplate(object dataType) { Exception ex = TemplateKey.ValidateDataType(dataType, "dataType"); if (ex != null) throw ex; _dataType = dataType; } #endregion Constructors #region Public Properties //-------------------------------------------------------------------- // // Public Properties // //------------------------------------------------------------------- ////// DataType for this DataTemplate. If the template is intended /// for object data, this is the Type of the data. If the /// template is intended for XML data, this is the tag name /// of the data (i.e. a string). /// [DefaultValue(null)] [Ambient] public object DataType { get { return _dataType; } set { Exception ex = TemplateKey.ValidateDataType(value, "value"); if (ex != null) throw ex; CheckSealed(); _dataType = value; } } ////// Collection of Triggers /// [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] [DependsOn("VisualTree")] [DependsOn("Template")] public TriggerCollection Triggers { get { if (_triggers == null) { _triggers = new TriggerCollection(); // If the template has been sealed prior to this the newly // created TriggerCollection also needs to be sealed if (IsSealed) { _triggers.Seal(); } } return _triggers; } } ////// The key that will be used if the DataTemplate is added to a /// ResourceDictionary in Xaml without a specified Key (x:Key). /// public object DataTemplateKey { get { return (DataType != null) ? new DataTemplateKey(DataType) : null; } } #endregion PublicProperties #region Internal Properties //-------------------------------------------------------------------- // // Internal Properties // //-------------------------------------------------------------------- // // TargetType for DataTemplate. 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 DataTemplate, this is not allowed. internal override void SetTargetTypeInternal(Type targetType) { throw new InvalidOperationException(SR.Get(SRID.TemplateNotTargetType)); } // // DataType for DataTemplate. This is override is // so FrameworkTemplate can see this property. // internal override object DataTypeInternal { get { return DataType; } } // // Collection of Triggers for a DataTemplate. This is // override is so FrameworkTemplate can see this property. // internal override TriggerCollection TriggersInternal { get { return Triggers; } } // Target type of DataTrigger is ContentPresenter static internal Type DefaultTargetType { get { return typeof(ContentPresenter); } } #endregion Internal Properties #region Protected Methods //------------------------------------------------------------------- // // Protected Methods // //-------------------------------------------------------------------- ////// Validate against the following rules /// 1. Must have a non-null feTemplatedParent /// 2. A DataTemplate 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 DataTemplate must be applied to a ContentPresenter if (!(templatedParent is ContentPresenter)) { throw new ArgumentException(SR.Get(SRID.TemplateTargetTypeMismatch, "ContentPresenter", templatedParent.GetType().Name)); } } #endregion Protected Methods #region Data private object _dataType; private TriggerCollection _triggers; #endregion Data } } // 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: DataTemplate describes how to display a single data item. // // Specs: http://avalon/coreui/Specs%20%20Property%20Engine/Styling%20Revisited.doc // //--------------------------------------------------------------------------- using System.ComponentModel; using System.Windows.Controls; using System.Windows.Markup; namespace System.Windows { ////// DataTemplate describes how to display a single data item. /// [DictionaryKeyProperty("DataTemplateKey")] public class DataTemplate : FrameworkTemplate { #region Constructors //------------------------------------------------------------------- // // Constructors // //------------------------------------------------------------------- ////// DataTemplate Constructor /// public DataTemplate() { } ////// DataTemplate Constructor /// public DataTemplate(object dataType) { Exception ex = TemplateKey.ValidateDataType(dataType, "dataType"); if (ex != null) throw ex; _dataType = dataType; } #endregion Constructors #region Public Properties //-------------------------------------------------------------------- // // Public Properties // //------------------------------------------------------------------- ////// DataType for this DataTemplate. If the template is intended /// for object data, this is the Type of the data. If the /// template is intended for XML data, this is the tag name /// of the data (i.e. a string). /// [DefaultValue(null)] [Ambient] public object DataType { get { return _dataType; } set { Exception ex = TemplateKey.ValidateDataType(value, "value"); if (ex != null) throw ex; CheckSealed(); _dataType = value; } } ////// Collection of Triggers /// [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)] [DependsOn("VisualTree")] [DependsOn("Template")] public TriggerCollection Triggers { get { if (_triggers == null) { _triggers = new TriggerCollection(); // If the template has been sealed prior to this the newly // created TriggerCollection also needs to be sealed if (IsSealed) { _triggers.Seal(); } } return _triggers; } } ////// The key that will be used if the DataTemplate is added to a /// ResourceDictionary in Xaml without a specified Key (x:Key). /// public object DataTemplateKey { get { return (DataType != null) ? new DataTemplateKey(DataType) : null; } } #endregion PublicProperties #region Internal Properties //-------------------------------------------------------------------- // // Internal Properties // //-------------------------------------------------------------------- // // TargetType for DataTemplate. 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 DataTemplate, this is not allowed. internal override void SetTargetTypeInternal(Type targetType) { throw new InvalidOperationException(SR.Get(SRID.TemplateNotTargetType)); } // // DataType for DataTemplate. This is override is // so FrameworkTemplate can see this property. // internal override object DataTypeInternal { get { return DataType; } } // // Collection of Triggers for a DataTemplate. This is // override is so FrameworkTemplate can see this property. // internal override TriggerCollection TriggersInternal { get { return Triggers; } } // Target type of DataTrigger is ContentPresenter static internal Type DefaultTargetType { get { return typeof(ContentPresenter); } } #endregion Internal Properties #region Protected Methods //------------------------------------------------------------------- // // Protected Methods // //-------------------------------------------------------------------- ////// Validate against the following rules /// 1. Must have a non-null feTemplatedParent /// 2. A DataTemplate 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 DataTemplate must be applied to a ContentPresenter if (!(templatedParent is ContentPresenter)) { throw new ArgumentException(SR.Get(SRID.TemplateTargetTypeMismatch, "ContentPresenter", templatedParent.GetType().Name)); } } #endregion Protected Methods #region Data private object _dataType; private TriggerCollection _triggers; #endregion Data } } // 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
- FixedPageProcessor.cs
- TypedTableBaseExtensions.cs
- EventLogTraceListener.cs
- CustomAssemblyResolver.cs
- ProfileSettingsCollection.cs
- PrinterUnitConvert.cs
- ProfessionalColorTable.cs
- CodeTypeReference.cs
- XmlSerializerFactory.cs
- WebException.cs
- FormViewUpdatedEventArgs.cs
- XmlSchemaInfo.cs
- DataGridColumnFloatingHeader.cs
- mil_sdk_version.cs
- ReferenceEqualityComparer.cs
- precedingsibling.cs
- RuleSetDialog.cs
- ChtmlLinkAdapter.cs
- RayMeshGeometry3DHitTestResult.cs
- SizeLimitedCache.cs
- Serializer.cs
- GrammarBuilderDictation.cs
- OleDbParameter.cs
- ListViewTableCell.cs
- PropertyContainer.cs
- AuthenticationService.cs
- XAMLParseException.cs
- SharedDp.cs
- WindowShowOrOpenTracker.cs
- ConditionCollection.cs
- MetadataUtil.cs
- HashAlgorithm.cs
- ConnectionManagementElementCollection.cs
- XmlBoundElement.cs
- HttpCacheParams.cs
- LayoutSettings.cs
- ReadOnlyPropertyMetadata.cs
- UserNameSecurityTokenAuthenticator.cs
- IMembershipProvider.cs
- PropertySet.cs
- ValidatorCollection.cs
- XhtmlCssHandler.cs
- GenerateHelper.cs
- ReflectionUtil.cs
- FunctionCommandText.cs
- ProgressBarRenderer.cs
- HttpCachePolicyBase.cs
- RectAnimationUsingKeyFrames.cs
- StaticFileHandler.cs
- DataGridViewImageCell.cs
- MailWebEventProvider.cs
- DataKey.cs
- Compiler.cs
- FragmentQueryProcessor.cs
- ExclusiveTcpTransportManager.cs
- MultitargetUtil.cs
- DrawingGroup.cs
- CategoryGridEntry.cs
- CriticalFinalizerObject.cs
- TextEndOfSegment.cs
- GAC.cs
- RadioButtonFlatAdapter.cs
- PropertyBuilder.cs
- ResourcesBuildProvider.cs
- FloatAverageAggregationOperator.cs
- GlyphTypeface.cs
- CodeTypeReferenceExpression.cs
- SocketInformation.cs
- ReadContentAsBinaryHelper.cs
- QueryStringParameter.cs
- DataReaderContainer.cs
- ItemContainerGenerator.cs
- remotingproxy.cs
- GeometryGroup.cs
- AxHost.cs
- HostedTransportConfigurationBase.cs
- ScrollBar.cs
- SwitchElementsCollection.cs
- ClientConvert.cs
- GuidelineCollection.cs
- jithelpers.cs
- DrawingContextWalker.cs
- TextRunCacheImp.cs
- TableDesigner.cs
- TTSEngineProxy.cs
- SettingsPropertyIsReadOnlyException.cs
- ResourceDictionaryCollection.cs
- ByteStorage.cs
- GraphicsState.cs
- RuleInfoComparer.cs
- ConfigurationElementCollection.cs
- SByte.cs
- DataGridViewCellValidatingEventArgs.cs
- NextPreviousPagerField.cs
- HebrewNumber.cs
- ByeOperationAsyncResult.cs
- MdiWindowListStrip.cs
- ProviderException.cs
- Rectangle.cs
- UrlAuthFailedErrorFormatter.cs