internal static Tuple <string, ITypeInfo, ResourceSource> RequestConverter(FrameworkElement owner, TargetPlatform platform, object target, AsyncValue <IReadOnlyDictionary <IAssemblyInfo, ILookup <string, ITypeInfo> > > assignableTypes) { Window hostWindow = Window.GetWindow(owner); var w = new CreateValueConverterWindow(owner.Resources.MergedDictionaries, platform, target, assignableTypes) { Owner = hostWindow, }; if (!w.ShowDialog() ?? false) { return(null); } var vm = (AddValueConverterViewModel)w.DataContext; return(new Tuple <string, ITypeInfo, ResourceSource> (w.converterName.Text, vm.SelectedType, vm.Source)); }
private void OnCreateValueConverterRequested(object sender, CreateValueConverterEventArgs e) { var vm = (CreateBindingViewModel)DataContext; ITypeInfo valueConverter = vm.TargetPlatform.EditorProvider.KnownTypes[typeof(CommonValueConverter)]; var typesTask = vm.TargetPlatform.EditorProvider.GetAssignableTypesAsync(valueConverter, childTypes: false) .ContinueWith(t => t.Result.GetTypeTree(), TaskScheduler.Default); var result = CreateValueConverterWindow.RequestConverter(this, vm.TargetPlatform, vm.Target, new AsyncValue <IReadOnlyDictionary <IAssemblyInfo, ILookup <string, ITypeInfo> > > (typesTask)); if (result == null) { return; } e.Name = result.Item1; e.ConverterType = result.Item2; e.Source = result.Item3; }