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
- SessionParameter.cs
- SymbolMethod.cs
- Page.cs
- QueuedDeliveryRequirementsMode.cs
- DbProviderSpecificTypePropertyAttribute.cs
- SmiEventSink.cs
- ChtmlTextWriter.cs
- CustomPeerResolverService.cs
- ImageField.cs
- CounterCreationDataCollection.cs
- ConfigurationManagerHelper.cs
- RoleGroup.cs
- StringPropertyBuilder.cs
- ArrangedElement.cs
- EntityDataSourceWizardForm.cs
- DataReceivedEventArgs.cs
- PiiTraceSource.cs
- TextBoxAutomationPeer.cs
- JavaScriptSerializer.cs
- RadioButtonBaseAdapter.cs
- ToolboxCategory.cs
- TreeNodeCollection.cs
- BulletedList.cs
- QuadTree.cs
- EncryptedReference.cs
- MetabaseSettingsIis7.cs
- WindowsListViewItemCheckBox.cs
- MatrixKeyFrameCollection.cs
- WebPartCatalogCloseVerb.cs
- EncodingNLS.cs
- DataBoundLiteralControl.cs
- SymmetricAlgorithm.cs
- Message.cs
- XmlSchemaComplexContentRestriction.cs
- InputProcessorProfilesLoader.cs
- HttpCapabilitiesEvaluator.cs
- System.Data.OracleClient_BID.cs
- ToolboxComponentsCreatingEventArgs.cs
- DataFormat.cs
- WindowsAuthenticationModule.cs
- GraphicsContext.cs
- TypeHelpers.cs
- UInt64.cs
- ClientScriptManagerWrapper.cs
- ServiceDescription.cs
- DTCTransactionManager.cs
- ClipboardData.cs
- HotSpot.cs
- SqlServices.cs
- DbConvert.cs
- ConfigurationManagerHelperFactory.cs
- HybridDictionary.cs
- InputProcessorProfiles.cs
- CompensationDesigner.cs
- OLEDB_Enum.cs
- DbModificationClause.cs
- DataTransferEventArgs.cs
- DBCommandBuilder.cs
- SqlDataAdapter.cs
- ImagingCache.cs
- FileChangesMonitor.cs
- CloudCollection.cs
- CollectionsUtil.cs
- GridItemPattern.cs
- _ShellExpression.cs
- HostVisual.cs
- TreeView.cs
- HandlerFactoryCache.cs
- DisableDpiAwarenessAttribute.cs
- ComboBox.cs
- NameValueCollection.cs
- BoolExpressionVisitors.cs
- WebPartDisplayModeEventArgs.cs
- TraceSection.cs
- ObjectToIdCache.cs
- PackWebRequest.cs
- TrackPointCollection.cs
- Walker.cs
- SessionConnectionReader.cs
- SystemBrushes.cs
- XamlSerializer.cs
- PageThemeCodeDomTreeGenerator.cs
- TrackingStringDictionary.cs
- CopyNodeSetAction.cs
- TextEmbeddedObject.cs
- CultureInfoConverter.cs
- DbProviderSpecificTypePropertyAttribute.cs
- Token.cs
- FontFamilyValueSerializer.cs
- COSERVERINFO.cs
- Slider.cs
- XmlCharacterData.cs
- HotSpot.cs
- CqlWriter.cs
- ButtonBase.cs
- CqlParserHelpers.cs
- AdRotatorDesigner.cs
- MsmqBindingElementBase.cs
- XamlTypeMapper.cs
- TextBlockAutomationPeer.cs