using System.Collections.Generic; using System.Linq; using System.Windows; using Xamarin.PropertyEditing.ViewModels; namespace Xamarin.PropertyEditing.Windows { internal partial class TypeSelectorWindow : WindowEx { internal TypeSelectorWindow (IEnumerable mergedResources, AsyncValue>> assignableTypes) { DataContext = new TypeSelectorViewModel (assignableTypes); InitializeComponent (); Resources.MergedDictionaries.AddItems (mergedResources); } internal static ITypeInfo RequestType (FrameworkElement owner, AsyncValue>> assignableTypes) { Window hostWindow = Window.GetWindow (owner); var w = new TypeSelectorWindow (owner.Resources.MergedDictionaries, assignableTypes) { Owner = hostWindow, }; if (!w.ShowDialog () ?? false) return null; return ((TypeSelectorViewModel)w.DataContext).SelectedType; } private void OnSelectedItemChanged (object sender, RoutedPropertyChangedEventArgs e) { this.ok.IsEnabled = (e.NewValue as ITypeInfo) != null; } private void OnItemActivated (object sender, System.EventArgs e) { DialogResult = true; } private void OnOkClicked (object sender, RoutedEventArgs e) { DialogResult = true; } } }