Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / View / BreadCrumbTextConverter.cs / 1305376 / BreadCrumbTextConverter.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.Activities.Presentation.View
{
using System.Windows.Data;
using System.Activities.Presentation.Model;
internal class BreadCrumbTextConverter : IMultiValueConverter
{
const int MaxDisplayNameLength = 20;
double pixelsPerChar = 6.5;
internal double PixelsPerChar
{
get { return this.pixelsPerChar; }
set { this.pixelsPerChar = Math.Max(5.0, value); }
}
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int actualDisplayNameLength = MaxDisplayNameLength;
ModelItem boundModelItem = values[0] as ModelItem;
// default to root item's typename
string breadCrumbText = (null != boundModelItem ? boundModelItem.ItemType.Name : "");
// if there is a display name property on root use that as the file name.
if (values[1] is ModelItem)
{
ModelItem displayNameProperty = (ModelItem)values[1];
if (typeof(string) == displayNameProperty.ItemType)
{
values[1] = displayNameProperty.GetCurrentValue();
}
}
if (values[1] is string)
{
string displayName = (string)values[1];
if (!displayName.Equals(string.Empty))
{
breadCrumbText = displayName;
}
}
if (values.Length == 3 && values[2] is double)
{
double actualControlWidth = (double)values[2];
actualDisplayNameLength = (int)Math.Max(MaxDisplayNameLength, actualControlWidth / pixelsPerChar);
}
if (breadCrumbText.Length > actualDisplayNameLength)
{
breadCrumbText = breadCrumbText.Substring(0, actualDisplayNameLength - 3) + "...";
}
return breadCrumbText;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw FxTrace.Exception.AsError(new InvalidOperationException());
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.Activities.Presentation.View
{
using System.Windows.Data;
using System.Activities.Presentation.Model;
internal class BreadCrumbTextConverter : IMultiValueConverter
{
const int MaxDisplayNameLength = 20;
double pixelsPerChar = 6.5;
internal double PixelsPerChar
{
get { return this.pixelsPerChar; }
set { this.pixelsPerChar = Math.Max(5.0, value); }
}
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int actualDisplayNameLength = MaxDisplayNameLength;
ModelItem boundModelItem = values[0] as ModelItem;
// default to root item's typename
string breadCrumbText = (null != boundModelItem ? boundModelItem.ItemType.Name : "");
// if there is a display name property on root use that as the file name.
if (values[1] is ModelItem)
{
ModelItem displayNameProperty = (ModelItem)values[1];
if (typeof(string) == displayNameProperty.ItemType)
{
values[1] = displayNameProperty.GetCurrentValue();
}
}
if (values[1] is string)
{
string displayName = (string)values[1];
if (!displayName.Equals(string.Empty))
{
breadCrumbText = displayName;
}
}
if (values.Length == 3 && values[2] is double)
{
double actualControlWidth = (double)values[2];
actualDisplayNameLength = (int)Math.Max(MaxDisplayNameLength, actualControlWidth / pixelsPerChar);
}
if (breadCrumbText.Length > actualDisplayNameLength)
{
breadCrumbText = breadCrumbText.Substring(0, actualDisplayNameLength - 3) + "...";
}
return breadCrumbText;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw FxTrace.Exception.AsError(new InvalidOperationException());
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WorkflowMarkupSerializer.cs
- ZipIOCentralDirectoryBlock.cs
- PathNode.cs
- _ConnectionGroup.cs
- ConstraintEnumerator.cs
- Win32.cs
- ExpandedWrapper.cs
- XmlSerializationReader.cs
- UserMapPath.cs
- DetailsViewUpdatedEventArgs.cs
- Inline.cs
- PropertyStore.cs
- Group.cs
- ProxyHelper.cs
- SecurityException.cs
- DuplicateWaitObjectException.cs
- FontUnit.cs
- Encoder.cs
- HitTestWithPointDrawingContextWalker.cs
- DataGridViewRowsRemovedEventArgs.cs
- BroadcastEventHelper.cs
- DragCompletedEventArgs.cs
- PointHitTestParameters.cs
- DirectionalLight.cs
- SafeArrayRankMismatchException.cs
- DynamicRendererThreadManager.cs
- DesigntimeLicenseContextSerializer.cs
- StylusPoint.cs
- TreeNodeBindingCollection.cs
- ObjectReaderCompiler.cs
- ImageClickEventArgs.cs
- WindowsGrip.cs
- PointValueSerializer.cs
- SqlDataReaderSmi.cs
- TemplatedAdorner.cs
- EntityDataSourceQueryBuilder.cs
- TextRunCache.cs
- DeclarativeCatalogPart.cs
- TextEditorParagraphs.cs
- XmlLoader.cs
- SafeCryptContextHandle.cs
- TargetParameterCountException.cs
- SafeFileMapViewHandle.cs
- SimpleFileLog.cs
- SelectionItemPattern.cs
- SourceSwitch.cs
- ShapeTypeface.cs
- ConfigViewGenerator.cs
- FileRegion.cs
- EndpointDiscoveryMetadata11.cs
- TextModifier.cs
- NamespaceInfo.cs
- SlipBehavior.cs
- SelectingProviderEventArgs.cs
- MessageDesigner.cs
- PageTheme.cs
- SystemResourceKey.cs
- Rect3D.cs
- QilChoice.cs
- GregorianCalendar.cs
- HttpModuleAction.cs
- CapabilitiesSection.cs
- ProxyWebPartConnectionCollection.cs
- CompModSwitches.cs
- NamespaceInfo.cs
- DataSourceView.cs
- LambdaCompiler.Logical.cs
- IntellisenseTextBox.cs
- WsdlImporterElement.cs
- FixedDocument.cs
- RelationshipSet.cs
- DesignParameter.cs
- PersistenceException.cs
- GridViewColumnCollectionChangedEventArgs.cs
- PropertyInfo.cs
- GridItemCollection.cs
- PbrsForward.cs
- CanExecuteRoutedEventArgs.cs
- XmlSchemaDatatype.cs
- WindowsFont.cs
- X509CertificateValidator.cs
- XmlAttributes.cs
- TraceLevelStore.cs
- ThreadStartException.cs
- CompletedAsyncResult.cs
- EdmMember.cs
- InitiatorServiceModelSecurityTokenRequirement.cs
- VBCodeProvider.cs
- RepeatButton.cs
- AdRotator.cs
- OutputCacheSettings.cs
- HtmlControlPersistable.cs
- NativeMethods.cs
- odbcmetadatafactory.cs
- ProjectionCamera.cs
- LinqDataSourceDisposeEventArgs.cs
- QueryOperator.cs
- Queue.cs
- SoapHelper.cs
- WorkflowApplicationAbortedException.cs