Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- WebPartAddingEventArgs.cs
- AvtEvent.cs
- dbenumerator.cs
- MenuStrip.cs
- ServiceDescriptionSerializer.cs
- TextEffectResolver.cs
- ZoneButton.cs
- InputScope.cs
- Int32CAMarshaler.cs
- AuthenticationService.cs
- RuleSettingsCollection.cs
- SystemThemeKey.cs
- DataExpression.cs
- NetworkCredential.cs
- CodeDelegateInvokeExpression.cs
- GlobalItem.cs
- ChannelDispatcherBase.cs
- DescendantOverDescendantQuery.cs
- NameValueCache.cs
- ListItemConverter.cs
- StateBag.cs
- EditorPart.cs
- TemplateAction.cs
- XamlSerializationHelper.cs
- ResourceType.cs
- PrivilegeNotHeldException.cs
- IncrementalReadDecoders.cs
- HitTestResult.cs
- Latin1Encoding.cs
- Unit.cs
- ListMarkerLine.cs
- GridEntry.cs
- IMembershipProvider.cs
- ContentElementAutomationPeer.cs
- GiveFeedbackEvent.cs
- SecureStringHasher.cs
- WebPartTransformer.cs
- StrokeSerializer.cs
- AuthenticationSection.cs
- SiteOfOriginContainer.cs
- EventLog.cs
- TrackingLocationCollection.cs
- SelectionItemPattern.cs
- CacheSection.cs
- TabPageDesigner.cs
- SerializerDescriptor.cs
- WSFederationHttpBindingElement.cs
- NameValueCollection.cs
- SrgsElementFactory.cs
- StateItem.cs
- CodeStatement.cs
- FieldBuilder.cs
- CompensationHandlingFilter.cs
- TableCell.cs
- SelectorAutomationPeer.cs
- RequestStatusBarUpdateEventArgs.cs
- DoubleLink.cs
- HelpInfo.cs
- HtmlInputImage.cs
- XmlAttributeOverrides.cs
- InteropAutomationProvider.cs
- Vector3DCollection.cs
- EmptyEnumerator.cs
- DataContext.cs
- HTTPAPI_VERSION.cs
- XmlAttribute.cs
- XmlBinaryReader.cs
- DiffuseMaterial.cs
- ClientCultureInfo.cs
- DataGrid.cs
- ComplexObject.cs
- EnumValAlphaComparer.cs
- ExpressionsCollectionConverter.cs
- TemplateBamlTreeBuilder.cs
- ImplicitInputBrush.cs
- remotingproxy.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- CDSsyncETWBCLProvider.cs
- XomlCompilerParameters.cs
- SystemIPGlobalProperties.cs
- GridViewRowPresenter.cs
- AccessDataSource.cs
- ImageDrawing.cs
- GenericUI.cs
- DataTableClearEvent.cs
- ObjectTypeMapping.cs
- DataGridItemAutomationPeer.cs
- BulletedList.cs
- UserMapPath.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- StrongNamePublicKeyBlob.cs
- FileSecurity.cs
- SuppressIldasmAttribute.cs
- SqlNotificationEventArgs.cs
- ArrayWithOffset.cs
- DataSourceXmlSerializationAttribute.cs
- LinqDataSourceHelper.cs
- Comparer.cs
- InvalidPropValue.cs
- ObjRef.cs