Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / View / VBIdentifierName.cs / 1407647 / VBIdentifierName.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Presentation.View { using System.Windows; using Microsoft.VisualBasic; using System.CodeDom.Compiler; using System.Globalization; using System.ComponentModel; using System.Xaml; using System.Xml; internal class VBIdentifierName : DependencyObject { public static readonly DependencyProperty IdentifierNameProperty = DependencyProperty.Register("IdentifierName", typeof(string), typeof(VBIdentifierName), new UIPropertyMetadata(OnIdentifierNameChanged)); public static readonly DependencyProperty IsValidProperty = DependencyProperty.Register("IsValid", typeof(bool), typeof(VBIdentifierName)); public static readonly DependencyProperty ErrorMessageProperty = DependencyProperty.Register("ErrorMessage", typeof(string), typeof(VBIdentifierName)); static VBCodeProvider vbProvider; static XamlSchemaContext xamlContext = new XamlSchemaContext(); static XamlType xamlType = new XamlType(typeof(string), xamlContext); bool checkAgainstXaml; VBCodeProvider VBProvider { get { if (vbProvider == null) { vbProvider = CodeDomProvider.CreateProvider("VisualBasic") as VBCodeProvider; } return vbProvider; } } public string ErrorMessage { get { return (string)GetValue(ErrorMessageProperty); } set { SetValue(ErrorMessageProperty, value); } } public bool IsValid { get { return (bool)GetValue(IsValidProperty); } set { SetValue(IsValidProperty, value); } } public string IdentifierName { get { return (string)GetValue(IdentifierNameProperty); } set { SetValue(IdentifierNameProperty, value); } } public bool CheckAgainstXaml { get { return this.checkAgainstXaml; } } public VBIdentifierName() { this.checkAgainstXaml = false; } public VBIdentifierName(bool checkAgainstXaml) { this.checkAgainstXaml = checkAgainstXaml; } static void OnIdentifierNameChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) { ((VBIdentifierName)sender).OnIdentifierNameChanged(); } internal static bool IsValidXamlName(string name) { bool isValid = new XamlMember(name, xamlType, false).IsNameValid; if (isValid) { //Work around TFS bug #825815, in some cases, XamlMember.IsNameValid returns true but it's not valid Xml Name. try { XmlConvert.VerifyName(name); } catch (XmlException) { isValid = false; } } return isValid; } void OnIdentifierNameChanged() { string trimedName = this.IdentifierName; if (this.CheckAgainstXaml && !VBIdentifierName.IsValidXamlName(trimedName)) { this.IsValid = false; this.ErrorMessage = string.Format(CultureInfo.CurrentUICulture, SR.InvalidXamlMemberName, trimedName); } else if(!this.VBProvider.IsValidIdentifier(trimedName)) { this.IsValid = false; this.ErrorMessage = string.Format(CultureInfo.CurrentUICulture, SR.InvalidVisualBasicIdentifier, trimedName); } else if (trimedName.StartsWith("[", StringComparison.Ordinal) && trimedName.EndsWith("]", StringComparison.Ordinal)) { this.IsValid = false; this.ErrorMessage = string.Format(CultureInfo.CurrentUICulture, SR.InvalidVisualBasicIdentifier, trimedName); } else { this.IsValid = true; this.ErrorMessage = string.Empty; } } } } // 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; using Microsoft.VisualBasic; using System.CodeDom.Compiler; using System.Globalization; using System.ComponentModel; using System.Xaml; using System.Xml; internal class VBIdentifierName : DependencyObject { public static readonly DependencyProperty IdentifierNameProperty = DependencyProperty.Register("IdentifierName", typeof(string), typeof(VBIdentifierName), new UIPropertyMetadata(OnIdentifierNameChanged)); public static readonly DependencyProperty IsValidProperty = DependencyProperty.Register("IsValid", typeof(bool), typeof(VBIdentifierName)); public static readonly DependencyProperty ErrorMessageProperty = DependencyProperty.Register("ErrorMessage", typeof(string), typeof(VBIdentifierName)); static VBCodeProvider vbProvider; static XamlSchemaContext xamlContext = new XamlSchemaContext(); static XamlType xamlType = new XamlType(typeof(string), xamlContext); bool checkAgainstXaml; VBCodeProvider VBProvider { get { if (vbProvider == null) { vbProvider = CodeDomProvider.CreateProvider("VisualBasic") as VBCodeProvider; } return vbProvider; } } public string ErrorMessage { get { return (string)GetValue(ErrorMessageProperty); } set { SetValue(ErrorMessageProperty, value); } } public bool IsValid { get { return (bool)GetValue(IsValidProperty); } set { SetValue(IsValidProperty, value); } } public string IdentifierName { get { return (string)GetValue(IdentifierNameProperty); } set { SetValue(IdentifierNameProperty, value); } } public bool CheckAgainstXaml { get { return this.checkAgainstXaml; } } public VBIdentifierName() { this.checkAgainstXaml = false; } public VBIdentifierName(bool checkAgainstXaml) { this.checkAgainstXaml = checkAgainstXaml; } static void OnIdentifierNameChanged(DependencyObject sender, DependencyPropertyChangedEventArgs e) { ((VBIdentifierName)sender).OnIdentifierNameChanged(); } internal static bool IsValidXamlName(string name) { bool isValid = new XamlMember(name, xamlType, false).IsNameValid; if (isValid) { //Work around TFS bug #825815, in some cases, XamlMember.IsNameValid returns true but it's not valid Xml Name. try { XmlConvert.VerifyName(name); } catch (XmlException) { isValid = false; } } return isValid; } void OnIdentifierNameChanged() { string trimedName = this.IdentifierName; if (this.CheckAgainstXaml && !VBIdentifierName.IsValidXamlName(trimedName)) { this.IsValid = false; this.ErrorMessage = string.Format(CultureInfo.CurrentUICulture, SR.InvalidXamlMemberName, trimedName); } else if(!this.VBProvider.IsValidIdentifier(trimedName)) { this.IsValid = false; this.ErrorMessage = string.Format(CultureInfo.CurrentUICulture, SR.InvalidVisualBasicIdentifier, trimedName); } else if (trimedName.StartsWith("[", StringComparison.Ordinal) && trimedName.EndsWith("]", StringComparison.Ordinal)) { this.IsValid = false; this.ErrorMessage = string.Format(CultureInfo.CurrentUICulture, SR.InvalidVisualBasicIdentifier, trimedName); } else { this.IsValid = true; this.ErrorMessage = string.Empty; } } } } // 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
- CharUnicodeInfo.cs
- PackagingUtilities.cs
- MetadataCache.cs
- DrawingGroupDrawingContext.cs
- PropertyItem.cs
- WhitespaceRuleReader.cs
- FontWeightConverter.cs
- WindowsStartMenu.cs
- PerfCounterSection.cs
- ConfigurationStrings.cs
- Button.cs
- OverflowException.cs
- SpAudioStreamWrapper.cs
- TemplateBindingExpressionConverter.cs
- ToolStripProgressBar.cs
- MarshalByRefObject.cs
- ForwardPositionQuery.cs
- WebPartAddingEventArgs.cs
- RuntimeCompatibilityAttribute.cs
- _SSPISessionCache.cs
- __Error.cs
- ActiveXHelper.cs
- UpDownBase.cs
- ConnectionManager.cs
- MessagePropertyFilter.cs
- RegexCapture.cs
- ProxyWebPartManager.cs
- EntityFunctions.cs
- SBCSCodePageEncoding.cs
- UnionCodeGroup.cs
- HostDesigntimeLicenseContext.cs
- AssociationType.cs
- ApplicationInfo.cs
- BaseTemplateParser.cs
- OraclePermission.cs
- BCLDebug.cs
- PageTheme.cs
- DataGridViewColumnConverter.cs
- HandledMouseEvent.cs
- ComplexBindingPropertiesAttribute.cs
- EnvelopedPkcs7.cs
- NotCondition.cs
- FamilyTypeface.cs
- InstancePersistenceEvent.cs
- TextDecoration.cs
- BigInt.cs
- EllipseGeometry.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- securestring.cs
- webproxy.cs
- FormatException.cs
- TraceRecord.cs
- CultureInfoConverter.cs
- SecurityTokenResolver.cs
- BoundPropertyEntry.cs
- TriggerAction.cs
- TraceFilter.cs
- ELinqQueryState.cs
- MissingSatelliteAssemblyException.cs
- ClientScriptManager.cs
- HttpListenerException.cs
- METAHEADER.cs
- _NTAuthentication.cs
- FileUtil.cs
- XmlNodeWriter.cs
- DesignerDataRelationship.cs
- CodeTypeParameterCollection.cs
- DataGridViewCellCollection.cs
- DefaultParameterValueAttribute.cs
- TreeViewItem.cs
- QilLiteral.cs
- ResolveCriteria.cs
- FormsAuthenticationUserCollection.cs
- QueryCursorEventArgs.cs
- PackUriHelper.cs
- TimeSpanValidator.cs
- WebContext.cs
- TargetException.cs
- PolicyStatement.cs
- MethodInfo.cs
- DataControlImageButton.cs
- counter.cs
- PropagationProtocolsTracing.cs
- LinkClickEvent.cs
- ToolTip.cs
- InlineUIContainer.cs
- XmlCollation.cs
- TimeStampChecker.cs
- PerformanceCounterLib.cs
- CryptoConfig.cs
- UidPropertyAttribute.cs
- WebPartTransformerCollection.cs
- Geometry.cs
- LabelLiteral.cs
- Brush.cs
- HostProtectionPermission.cs
- MetadataSource.cs
- Floater.cs
- BufferedGenericXmlSecurityToken.cs
- SortKey.cs