Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Framework / MS / Internal / Data / DisplayMemberTemplateSelector.cs / 1 / DisplayMemberTemplateSelector.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) Microsoft Corporation. All rights reserved.
//
//
// Description: Defines DisplayMemberTemplateSelector class.
//
//---------------------------------------------------------------------------
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using MS.Internal;
namespace MS.Internal.Data
{
// Selects template appropriate for CLR/XML item in order to
// display string property at DisplayMemberPath on the item.
internal sealed class DisplayMemberTemplateSelector : DataTemplateSelector
{
///
/// Constructor
///
/// path to the member to display
public DisplayMemberTemplateSelector(string displayMemberPath, string stringFormat)
{
Debug.Assert(!(String.IsNullOrEmpty(displayMemberPath) && String.IsNullOrEmpty(stringFormat)));
_displayMemberPath = displayMemberPath;
_stringFormat = stringFormat;
}
///
/// Override this method to return an app specific .
///
/// The data content
/// The container in which the content is to be displayed
/// a app specific template to apply.
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
if (XmlHelper.IsXmlNode(item))
{
if (_xmlNodeContentTemplate == null)
{
_xmlNodeContentTemplate = new DataTemplate();
FrameworkElementFactory text = ContentPresenter.CreateTextBlockFactory();
Binding binding = new Binding();
binding.XPath = _displayMemberPath;
binding.StringFormat = _stringFormat;
text.SetBinding(TextBlock.TextProperty, binding);
_xmlNodeContentTemplate.VisualTree = text;
_xmlNodeContentTemplate.Seal();
}
return _xmlNodeContentTemplate;
}
else
{
if (_clrNodeContentTemplate == null)
{
_clrNodeContentTemplate = new DataTemplate();
FrameworkElementFactory text = ContentPresenter.CreateTextBlockFactory();
Binding binding = new Binding();
binding.Path = new PropertyPath(_displayMemberPath);
binding.StringFormat = _stringFormat;
text.SetBinding(TextBlock.TextProperty, binding);
_clrNodeContentTemplate.VisualTree = text;
_clrNodeContentTemplate.Seal();
}
return _clrNodeContentTemplate;
}
}
private string _displayMemberPath;
private string _stringFormat;
private DataTemplate _xmlNodeContentTemplate;
private DataTemplate _clrNodeContentTemplate;
}
}
// 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: Defines DisplayMemberTemplateSelector class.
//
//---------------------------------------------------------------------------
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using MS.Internal;
namespace MS.Internal.Data
{
// Selects template appropriate for CLR/XML item in order to
// display string property at DisplayMemberPath on the item.
internal sealed class DisplayMemberTemplateSelector : DataTemplateSelector
{
///
/// Constructor
///
/// path to the member to display
public DisplayMemberTemplateSelector(string displayMemberPath, string stringFormat)
{
Debug.Assert(!(String.IsNullOrEmpty(displayMemberPath) && String.IsNullOrEmpty(stringFormat)));
_displayMemberPath = displayMemberPath;
_stringFormat = stringFormat;
}
///
/// Override this method to return an app specific .
///
/// The data content
/// The container in which the content is to be displayed
/// a app specific template to apply.
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
if (XmlHelper.IsXmlNode(item))
{
if (_xmlNodeContentTemplate == null)
{
_xmlNodeContentTemplate = new DataTemplate();
FrameworkElementFactory text = ContentPresenter.CreateTextBlockFactory();
Binding binding = new Binding();
binding.XPath = _displayMemberPath;
binding.StringFormat = _stringFormat;
text.SetBinding(TextBlock.TextProperty, binding);
_xmlNodeContentTemplate.VisualTree = text;
_xmlNodeContentTemplate.Seal();
}
return _xmlNodeContentTemplate;
}
else
{
if (_clrNodeContentTemplate == null)
{
_clrNodeContentTemplate = new DataTemplate();
FrameworkElementFactory text = ContentPresenter.CreateTextBlockFactory();
Binding binding = new Binding();
binding.Path = new PropertyPath(_displayMemberPath);
binding.StringFormat = _stringFormat;
text.SetBinding(TextBlock.TextProperty, binding);
_clrNodeContentTemplate.VisualTree = text;
_clrNodeContentTemplate.Seal();
}
return _clrNodeContentTemplate;
}
}
private string _displayMemberPath;
private string _stringFormat;
private DataTemplate _xmlNodeContentTemplate;
private DataTemplate _clrNodeContentTemplate;
}
}
// 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
- CriticalFinalizerObject.cs
- ExtensionElement.cs
- WinEventTracker.cs
- XmlSchemaAttribute.cs
- Grammar.cs
- _ListenerRequestStream.cs
- Vector3D.cs
- SqlCacheDependency.cs
- Application.cs
- SafeNativeMethodsOther.cs
- Point3DValueSerializer.cs
- XsdBuilder.cs
- CacheEntry.cs
- sapiproxy.cs
- InkPresenter.cs
- RepeaterItem.cs
- CompressionTransform.cs
- ControlIdConverter.cs
- DesignerLoader.cs
- AppSettingsExpressionEditor.cs
- RangeValueProviderWrapper.cs
- ResizeBehavior.cs
- OracleConnection.cs
- SpeakInfo.cs
- IpcServerChannel.cs
- TdsValueSetter.cs
- Rect3D.cs
- SwitchLevelAttribute.cs
- WebBrowsableAttribute.cs
- Config.cs
- IndexingContentUnit.cs
- XPathAncestorIterator.cs
- DataList.cs
- SQLSingle.cs
- DataGridPageChangedEventArgs.cs
- ErasingStroke.cs
- QueryParameter.cs
- TextBoxView.cs
- XmlBindingWorker.cs
- SqlReferenceCollection.cs
- NameValueFileSectionHandler.cs
- CustomTypeDescriptor.cs
- Parallel.cs
- ProfilePropertySettings.cs
- OdbcInfoMessageEvent.cs
- CodeAttributeArgument.cs
- EntityTemplateUserControl.cs
- SerializationSectionGroup.cs
- GraphicsContext.cs
- BaseValidator.cs
- DurableEnlistmentState.cs
- ActionMessageFilterTable.cs
- QueryContinueDragEvent.cs
- CollectionViewGroupInternal.cs
- ControlDesigner.cs
- ReferenceTypeElement.cs
- TypeBuilderInstantiation.cs
- SignatureHelper.cs
- HttpStreams.cs
- CryptoKeySecurity.cs
- SmtpCommands.cs
- LookupNode.cs
- StyleSheetRefUrlEditor.cs
- IImplicitResourceProvider.cs
- PageEventArgs.cs
- ReachPageContentCollectionSerializer.cs
- ButtonFieldBase.cs
- CodeConditionStatement.cs
- Vector.cs
- BuildResult.cs
- Pkcs7Recipient.cs
- Stopwatch.cs
- ColumnReorderedEventArgs.cs
- ListView.cs
- RequestCachePolicyConverter.cs
- Point3DConverter.cs
- DataGrid.cs
- RewritingSimplifier.cs
- XmlObjectSerializerWriteContext.cs
- SettingsPropertyValue.cs
- CalloutQueueItem.cs
- XPathNodeInfoAtom.cs
- XmlImplementation.cs
- DrawListViewSubItemEventArgs.cs
- ComplexPropertyEntry.cs
- CompressEmulationStream.cs
- ItemsPresenter.cs
- FontFamilyConverter.cs
- TableCell.cs
- PrincipalPermission.cs
- DeviceSpecificDesigner.cs
- DiscoveryServiceExtension.cs
- PathParser.cs
- PartialCachingControl.cs
- WebColorConverter.cs
- GroupDescription.cs
- CapabilitiesUse.cs
- AsyncCodeActivityContext.cs
- GenericIdentity.cs
- OdbcTransaction.cs