Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Framework / System / Windows / DataTemplate.cs / 1 / 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)]
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")]
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)]
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")]
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
- XmlSchemaAttributeGroupRef.cs
- CustomLineCap.cs
- RSACryptoServiceProvider.cs
- QueryContinueDragEvent.cs
- Span.cs
- HttpWebResponse.cs
- RegisteredExpandoAttribute.cs
- SelectedDatesCollection.cs
- xmlsaver.cs
- TimeSpanStorage.cs
- ObjectDataSourceFilteringEventArgs.cs
- GlobalizationAssembly.cs
- EmissiveMaterial.cs
- FamilyTypefaceCollection.cs
- DefaultShape.cs
- PointConverter.cs
- _NestedSingleAsyncResult.cs
- Int64AnimationBase.cs
- FormsAuthenticationCredentials.cs
- DoubleLink.cs
- QilPatternVisitor.cs
- ClientTargetCollection.cs
- ProcessInfo.cs
- WebRequestModuleElementCollection.cs
- BorderGapMaskConverter.cs
- MimeObjectFactory.cs
- OdbcReferenceCollection.cs
- FileStream.cs
- WebPartVerbCollection.cs
- Regex.cs
- Expander.cs
- RecognizerBase.cs
- HttpPostClientProtocol.cs
- OutputCacheSection.cs
- Int64Converter.cs
- FixedSOMLineRanges.cs
- HyperLinkColumn.cs
- DodSequenceMerge.cs
- ListControlStringCollectionEditor.cs
- UdpDiscoveryMessageFilter.cs
- UnsafeNativeMethods.cs
- BuildManager.cs
- BitStream.cs
- NativeActivityTransactionContext.cs
- Version.cs
- Predicate.cs
- FontUnit.cs
- RtType.cs
- HtmlValidatorAdapter.cs
- ObjectStateEntryDbDataRecord.cs
- DetailsViewDeletedEventArgs.cs
- HttpHeaderCollection.cs
- PrintControllerWithStatusDialog.cs
- MaskInputRejectedEventArgs.cs
- StoryFragments.cs
- HyperLinkField.cs
- NGCPageContentCollectionSerializerAsync.cs
- SchemaImporterExtensionsSection.cs
- TreeChangeInfo.cs
- PathFigureCollection.cs
- SecurityDocument.cs
- SvcMapFileSerializer.cs
- SessionStateSection.cs
- FileUpload.cs
- GridView.cs
- DBParameter.cs
- SoapUnknownHeader.cs
- Odbc32.cs
- CodeNamespace.cs
- Pair.cs
- _FixedSizeReader.cs
- FunctionUpdateCommand.cs
- AmbientEnvironment.cs
- _ConnectStream.cs
- TcpSocketManager.cs
- HyperLinkColumn.cs
- DataGridViewAutoSizeModeEventArgs.cs
- ResourceSet.cs
- DesignerOptionService.cs
- UserUseLicenseDictionaryLoader.cs
- ComboBox.cs
- RoleProviderPrincipal.cs
- RawStylusInputCustomData.cs
- ConstructorNeedsTagAttribute.cs
- DomainUpDown.cs
- WebPart.cs
- SecureConversationSecurityTokenParameters.cs
- WindowsToolbarItemAsMenuItem.cs
- Sql8ExpressionRewriter.cs
- FormViewPageEventArgs.cs
- ThreadSafeList.cs
- ExtenderControl.cs
- SystemFonts.cs
- StrongNameMembershipCondition.cs
- ScriptReference.cs
- DataGridCellAutomationPeer.cs
- XmlDataSourceView.cs
- Stacktrace.cs
- ControlPager.cs
- BufferModesCollection.cs