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
- WebContext.cs
- SizeAnimationUsingKeyFrames.cs
- UnsafeNativeMethods.cs
- AnimatedTypeHelpers.cs
- DesignTimeVisibleAttribute.cs
- NullExtension.cs
- HtmlTextArea.cs
- ParameterBuilder.cs
- ContourSegment.cs
- dsa.cs
- MailMessage.cs
- ThousandthOfEmRealDoubles.cs
- FilteredDataSetHelper.cs
- EvidenceBase.cs
- SevenBitStream.cs
- BitmapDecoder.cs
- URLAttribute.cs
- TextTreeUndo.cs
- ElementAction.cs
- GetPageCompletedEventArgs.cs
- Mutex.cs
- TimeSpan.cs
- TextAdaptor.cs
- WindowVisualStateTracker.cs
- QilNode.cs
- XhtmlBasicControlAdapter.cs
- TextComposition.cs
- DecimalAnimationUsingKeyFrames.cs
- DocumentScope.cs
- IteratorDescriptor.cs
- CalendarDay.cs
- Semaphore.cs
- Polyline.cs
- ClientSession.cs
- safemediahandle.cs
- TypeElement.cs
- MouseButton.cs
- DeviceSpecificDesigner.cs
- GridErrorDlg.cs
- VirtualizedCellInfoCollection.cs
- AutomationPropertyInfo.cs
- DynamicValueConverter.cs
- GroupBox.cs
- HwndSourceKeyboardInputSite.cs
- DifferencingCollection.cs
- ToolStripStatusLabel.cs
- TemplateBuilder.cs
- TextTreeObjectNode.cs
- SiteMapDataSourceView.cs
- DataGridView.cs
- ClientTargetSection.cs
- DataFieldCollectionEditor.cs
- UntypedNullExpression.cs
- controlskin.cs
- EventDescriptorCollection.cs
- InputLanguageEventArgs.cs
- EffectiveValueEntry.cs
- ObjectTypeMapping.cs
- XmlSchemaExternal.cs
- DictionarySectionHandler.cs
- COAUTHINFO.cs
- Publisher.cs
- ConnectionManagementSection.cs
- HttpContext.cs
- Ray3DHitTestResult.cs
- HiddenField.cs
- TreeNodeCollection.cs
- SessionStateModule.cs
- SchemaTypeEmitter.cs
- DataSourceIDConverter.cs
- EmbeddedObject.cs
- OleDbStruct.cs
- GestureRecognizer.cs
- DisplayMemberTemplateSelector.cs
- TextDpi.cs
- SslSecurityTokenParameters.cs
- ButtonFlatAdapter.cs
- ClientSettingsSection.cs
- FormViewModeEventArgs.cs
- NetworkAddressChange.cs
- XmlUtil.cs
- ForceCopyBuildProvider.cs
- GeometryDrawing.cs
- IndexerNameAttribute.cs
- XmlDownloadManager.cs
- DatePicker.cs
- EntityDataReader.cs
- versioninfo.cs
- MetadataCache.cs
- Schema.cs
- HttpRequestCacheValidator.cs
- ConfigurationManagerHelperFactory.cs
- ParserHooks.cs
- ParameterBuilder.cs
- EndpointConfigContainer.cs
- WebContext.cs
- DataGridViewUtilities.cs
- DiagnosticsConfigurationHandler.cs
- WindowsContainer.cs
- BorderGapMaskConverter.cs