public ProgramListControl() { DataContext = this; InitializeComponent(); EventManager.RegisterClassHandler(typeof(MetroWindow), Keyboard.KeyDownEvent, new KeyEventHandler(KeyDown), true); SearchBar.ApplyAnimationClock(MarginProperty, new ThicknessAnimation(new Thickness(10, -40, 10, 0), TimeSpan.FromMilliseconds(10)).CreateClock()); ProgramItems = new ObservableCollectionView <ProgramItemBase>(); LoadProgramList(); ProgramItems.Filter = (x => ((ProgramItemBase)x).ProgramName.ToLower().Contains(_searchString.ToLower())); ProgramItems.SortDescriptions.Add(new SortDescription("Favorite", ListSortDirection.Descending)); ProgramItems.SortDescriptions.Add(new SortDescription("ProgramName", ListSortDirection.Ascending)); ProgramList.ItemsSource = ProgramItems; Application.Current.Exit += SaveProgramList; }
private new void KeyDown(object sender, KeyEventArgs e) { if (!(Keyboard.FocusedElement is TextBox) || Keyboard.FocusedElement == SearchBar) { if (e.Key == Key.Escape) { SearchBar.Text = ""; } Keyboard.Focus(SearchBar); } else { SearchBar.ApplyAnimationClock(MarginProperty, new ThicknessAnimation(new Thickness(10, -40, 10, 0), TimeSpan.FromMilliseconds(350)) { EasingFunction = new SineEase() }.CreateClock()); } }