public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { if (context == null) { throw new ArgumentNullException("context"); } IXamlNameResolver service = (IXamlNameResolver)context.GetService(typeof(IXamlNameResolver)); if (service == null) { throw new InvalidOperationException(System.Xaml.SR.Get("MissingNameResolver")); } string str = value as string; if (string.IsNullOrEmpty(str)) { throw new InvalidOperationException(System.Xaml.SR.Get("MustHaveName")); } object fixupToken = service.Resolve(str); if (fixupToken == null) { string[] names = new string[] { str }; fixupToken = service.GetFixupToken(names, true); } return(fixupToken); }
public override object ProvideValue(IServiceProvider serviceProvider) { if (serviceProvider == null) { throw new ArgumentNullException("serviceProvider"); } IXamlNameResolver nameResolver = serviceProvider.GetService(typeof(IXamlNameResolver)) as IXamlNameResolver; if (nameResolver == null) { throw new InvalidOperationException(SR.Get(SRID.MissingNameResolver)); } if (String.IsNullOrEmpty(Name)) { throw new InvalidOperationException(SR.Get(SRID.MustHaveName)); } object obj = nameResolver.Resolve(Name); if (obj == null) { string[] names = new string[] { Name }; obj = nameResolver.GetFixupToken(names, true); } return(obj); }
public override object ProvideValue(IServiceProvider serviceProvider) { if (serviceProvider == null) { throw new ArgumentNullException("serviceProvider"); } IXamlNameResolver service = serviceProvider.GetService(typeof(IXamlNameResolver)) as IXamlNameResolver; if (service == null) { throw new InvalidOperationException(System.Xaml.SR.Get("MissingNameResolver")); } if (string.IsNullOrEmpty(this.Name)) { throw new InvalidOperationException(System.Xaml.SR.Get("MustHaveName")); } object fixupToken = service.Resolve(this.Name); if (fixupToken == null) { string[] names = new string[] { this.Name }; fixupToken = service.GetFixupToken(names, true); } return(fixupToken); }
static public Dictionary <string, Double> GetNameValueTable(IXamlNameResolver nameResolver, string expression, out List <string> unknownNames) { unknownNames = new List <string>(); var allNames = new List <string>(); var nameValueTable = new Dictionary <string, Double>(); var scanner = new MathExpressionScanner(expression); foreach (MathExpressionToken scannerTok in scanner.Scan()) { switch (scannerTok.TokenType) { case MathTokenType.Name: if (!allNames.Contains(scannerTok.Name)) { allNames.Add(scannerTok.Name); } break; } } foreach (string name in allNames) { bool isFullyInit; object obj = nameResolver.Resolve(name, out isFullyInit); if (obj == null) { if (nameResolver.IsFixupTokenAvailable) { unknownNames.Add(name); } else { throw new InvalidOperationException("Could not resolve name {0}"); } } else if (!isFullyInit) { throw new InvalidOperationException(String.Format("Name {0} is not fully initialized", name)); } else { var num = obj as Number; if (num == null) { throw new InvalidOperationException(String.Format("The Name {0} is of type {1} does not resolve to a Number", name, obj.GetType())); } nameValueTable.Add(name, num.Value); } } if (unknownNames.Count == 0) { unknownNames = null; } return(nameValueTable); }
void SetupNameTableProvider(IServiceProvider serviceProvider) { IXamlNameResolver serializerContext = (IXamlNameResolver)serviceProvider.GetService(typeof(IXamlNameResolver)); if (serializerContext != null) { this.tableProvider = () => serializerContext; } else { this.tableProvider = () => null; } }
public override object ProvideValue(IServiceProvider serviceProvider) { if (serviceProvider == null) { throw new ArgumentNullException("serviceProvider"); } // the bellow method do not work when no Application has been created /* * object[] references = (from window in Application.Current.Windows.Cast<Window>() * let name = window.FindName(Name) * where name != null * select name) * .ToArray(); * * if (references.Length == 0) * throw new InvalidOperationException(string.Format("Impossible to find reference for name '{0}'", Name)); * * if (references.Length > 1) * { * StringBuilder message = new StringBuilder(); * message.AppendLine(string.Format("There are {0} references for name '{1}'.", references.Length, Name)); * foreach (object reference in references) * message.AppendLine(string.Format(" reference: '{0}' ({1})", reference, reference.GetType().FullName)); * throw new InvalidOperationException(message.ToString()); * } * * return references[0]; */ IXamlNameResolver service = serviceProvider.GetService(typeof(IXamlNameResolver)) as IXamlNameResolver; if (service == null) { return(null); // happens in design mode } if (string.IsNullOrWhiteSpace(Name)) { throw new InvalidOperationException("Reference markup extension must be provided a name."); } object fixupToken = service.Resolve(Name); if (fixupToken == null) { fixupToken = service.GetFixupToken(new [] { Name }, true); } return(fixupToken); }
public static SymbolResolver EnvironmentFromNameTable(IXamlNameResolver table, SymbolResolver parent) { SymbolResolver environment = parent ?? new SymbolResolver(); if (table == null) { return(environment); } foreach (KeyValuePair <string, object> pair in table.GetAllNamesAndValuesInScope()) { environment.Add(pair); } return(environment); }
public static SymbolResolver EnvironmentFromNameTable(IXamlNameResolver table, SymbolResolver parent) { SymbolResolver environment = parent ?? new SymbolResolver(); if (table == null) { return environment; } foreach (KeyValuePair<string, object> pair in table.GetAllNamesAndValuesInScope()) { environment.Add(pair); } return environment; }
public void Handler(object sender, EventArgs e) { Resolver = (IXamlNameResolver)sender; }