public override void OnApplyTemplate() { base.OnApplyTemplate(); if (Template == null) { return; } PanelItemsHost = Template.FindName("PART_PanelItemsHost", this) as Panel; if (PanelItemsHost != null) { PanelItemsHost.Focusable = false; PanelItemsHost.InputBindings.Add(new KeyBinding(mainModel.ToggleFiltersCommand, new KeyGesture(Key.Back))); PanelItemsHost.InputBindings.Add(new KeyBinding(mainModel.ToggleFiltersCommand, new KeyGesture(Key.Escape))); PanelItemsHost.InputBindings.Add(new XInputBinding(mainModel.ToggleFiltersCommand, XInputButton.B)); } var ButtonClear = new ButtonEx(); ButtonClear.Command = mainModel.ClearFiltersCommand; ButtonClear.Content = ResourceProvider.GetString(LOC.ClearLabel); ButtonClear.SetResourceReference(ButtonEx.StyleProperty, "FilterPanelButtonEx"); PanelItemsHost.Children.Add(ButtonClear); BindingTools.SetBinding(ButtonClear, FocusBahaviors.FocusBindingProperty, mainModel, nameof(mainModel.FilterPanelVisible)); AssignBoolFilter(nameof(FilterSettings.IsInstalled), LOC.GameIsInstalledTitle); AssignBoolFilter(nameof(FilterSettings.IsUnInstalled), LOC.GameIsUnInstalledTitle); AssignBoolFilter(nameof(FilterSettings.Favorite), LOC.GameFavoriteTitle); AssignBoolFilter(nameof(FilterSettings.Hidden), LOC.GameHiddenTitle); AssignBoolFilter(nameof(FilterSettings.UseAndFilteringStyle), LOC.UseFilterStyleAndTitle); AssignFilter(GameField.PluginId, nameof(FilterSettings.Library), LOC.Library); AssignFilter(GameField.Platforms, nameof(FilterSettings.Platform), LOC.PlatformTitle); AssignFilter(GameField.Categories, nameof(FilterSettings.Category), LOC.CategoryLabel); var ButtonAdditional = new ButtonEx(); ButtonAdditional.Command = mainModel.OpenAdditionalFiltersCommand; ButtonAdditional.Content = ResourceProvider.GetString(LOC.AditionalFilters); ButtonAdditional.SetResourceReference(ButtonEx.StyleProperty, "FilterPanelNagivationButton"); BindingTools.SetBinding( ButtonAdditional, ButtonBase.TagProperty, mainModel.AppSettings.Fullscreen.FilterSettings, nameof(FullscreenFilterSettings.IsSubAdditionalFilterActive)); PanelItemsHost.Children.Add(ButtonAdditional); var desc = new TextBlock(); desc.Text = ResourceProvider.GetString(LOC.MenuSortByTitle); desc.SetResourceReference(ButtonEx.StyleProperty, "FilterPanelText"); PanelItemsHost.Children.Add(desc); var SelectSortBy = new ComboBoxEx(); SelectSortBy.SetResourceReference(ComboBoxEx.StyleProperty, "FilterPanelComboBoxEx"); SelectSortBy.ItemsSource = ItemsSource.GetEnumSources(typeof(SortOrder)); SelectSortBy.DisplayMemberPath = nameof(ItemsSource.EnumItem.Name); SelectSortBy.SelectedValuePath = nameof(ItemsSource.EnumItem.Value); BindingTools.SetBinding( SelectSortBy, Selector.SelectedValueProperty, mainModel.AppSettings.Fullscreen.ViewSettings, nameof(FullscreenViewSettings.SortingOrder), BindingMode.TwoWay, UpdateSourceTrigger.PropertyChanged); PanelItemsHost.Children.Add(SelectSortBy); var SelectSortDirection = new ComboBoxEx(); SelectSortDirection.SetResourceReference(ComboBoxEx.StyleProperty, "FilterPanelComboBoxEx"); SelectSortDirection.ItemsSource = ItemsSource.GetEnumSources(typeof(SortOrderDirection)); SelectSortDirection.DisplayMemberPath = nameof(ItemsSource.EnumItem.Name); SelectSortDirection.SelectedValuePath = nameof(ItemsSource.EnumItem.Value); BindingTools.SetBinding( SelectSortDirection, Selector.SelectedValueProperty, mainModel.AppSettings.Fullscreen.ViewSettings, nameof(FullscreenViewSettings.SortingOrderDirection), BindingMode.TwoWay, UpdateSourceTrigger.PropertyChanged); PanelItemsHost.Children.Add(SelectSortDirection); desc = new TextBlock(); desc.Text = ResourceProvider.GetString(LOC.SettingsTopPanelFilterPresetsItem); desc.SetResourceReference(ButtonEx.StyleProperty, "FilterPanelText"); PanelItemsHost.Children.Add(desc); var ComboFilterPresets = new ComboBoxEx(); ComboFilterPresets.SetResourceReference(ComboBoxEx.StyleProperty, "FilterPanelComboBoxEx"); BindingTools.SetBinding(ComboFilterPresets, ComboBox.ItemsSourceProperty, mainModel, nameof(mainModel.SortedFilterPresets)); BindingTools.SetBinding(ComboFilterPresets, ComboBox.SelectedItemProperty, mainModel, nameof(mainModel.ActiveFilterPreset), mode: BindingMode.TwoWay); ComboFilterPresets.DisplayMemberPath = nameof(FilterPreset.Name); PanelItemsHost.Children.Add(ComboFilterPresets); var ButtonSaveFilter = new ButtonEx(); BindingTools.SetBinding(ButtonSaveFilter, ButtonBase.CommandProperty, mainModel, nameof(mainModel.AddFilterPresetCommand)); ButtonSaveFilter.SetResourceReference(ButtonEx.ContentTemplateProperty, "FilterPanelAddPresetTemplate"); ButtonSaveFilter.SetResourceReference(ButtonEx.StyleProperty, "FilterPanelFilterPresetActionButton"); var ButtonRenameFilter = new ButtonEx(); BindingTools.SetBinding(ButtonRenameFilter, ButtonBase.CommandProperty, mainModel, nameof(mainModel.RenameFilterPresetCommand)); BindingTools.SetBinding(ButtonRenameFilter, ButtonBase.CommandParameterProperty, mainModel, nameof(mainModel.ActiveFilterPreset)); ButtonRenameFilter.SetResourceReference(ButtonEx.ContentTemplateProperty, "FilterPanelRenamePresetTemplate"); ButtonRenameFilter.SetResourceReference(ButtonEx.StyleProperty, "FilterPanelFilterPresetActionButton"); var ButtonDeleteFilter = new ButtonEx(); BindingTools.SetBinding(ButtonDeleteFilter, ButtonBase.CommandProperty, mainModel, nameof(mainModel.RemoveFilterPresetCommand)); BindingTools.SetBinding(ButtonDeleteFilter, ButtonBase.CommandParameterProperty, mainModel, nameof(mainModel.ActiveFilterPreset)); ButtonDeleteFilter.SetResourceReference(ButtonEx.ContentTemplateProperty, "FilterPanelRemovePresetTemplate"); ButtonDeleteFilter.SetResourceReference(ButtonEx.StyleProperty, "FilterPanelFilterPresetActionButton"); var filterButtonGrid = new UniformGrid { Columns = 3 }; filterButtonGrid.Children.Add(ButtonSaveFilter); filterButtonGrid.Children.Add(ButtonRenameFilter); filterButtonGrid.Children.Add(ButtonDeleteFilter); PanelItemsHost.Children.Add(filterButtonGrid); }