FiltersDropDown.xaml
1 <?xml version="1.0" encoding="utf-8" ?> 2 <UserControl 3 x:Class="Microsoft.CmdPal.UI.Controls.FiltersDropDown" 4 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 5 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 6 xmlns:cmdpalUI="using:Microsoft.CmdPal.UI" 7 xmlns:converters="using:CommunityToolkit.WinUI.Converters" 8 xmlns:coreViewModels="using:Microsoft.CmdPal.Core.ViewModels" 9 xmlns:cpcontrols="using:Microsoft.CmdPal.UI.Controls" 10 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 11 xmlns:help="using:Microsoft.CmdPal.UI.Helpers" 12 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 13 Background="Transparent" 14 mc:Ignorable="d"> 15 16 <UserControl.Resources> 17 <ResourceDictionary> 18 <converters:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter" /> 19 20 <cmdpalUI:FilterTemplateSelector 21 x:Key="FilterTemplateSelector" 22 Default="{StaticResource FilterItemViewModelTemplate}" 23 Separator="{StaticResource SeparatorViewModelTemplate}" /> 24 25 <Style 26 x:Name="ComboBoxStyle" 27 BasedOn="{StaticResource DefaultComboBoxStyle}" 28 TargetType="ComboBox"> 29 <Style.Setters> 30 <Setter Property="Visibility" Value="Collapsed" /> 31 <Setter Property="Margin" Value="0,0,12,0" /> 32 <Setter Property="Padding" Value="16,4" /> 33 </Style.Setters> 34 </Style> 35 36 <!-- Template for the filter items --> 37 <DataTemplate x:Key="FilterItemViewModelTemplate" x:DataType="coreViewModels:FilterItemViewModel"> 38 <Grid AutomationProperties.Name="{x:Bind Name, Mode=OneWay}"> 39 <Grid.ColumnDefinitions> 40 <ColumnDefinition Width="32" /> 41 <ColumnDefinition Width="*" /> 42 </Grid.ColumnDefinitions> 43 <cpcontrols:IconBox 44 Width="16" 45 Margin="4,0" 46 HorizontalAlignment="Left" 47 VerticalAlignment="Center" 48 SourceKey="{x:Bind Icon}" 49 SourceRequested="{x:Bind help:IconCacheProvider.SourceRequested20}" /> 50 <TextBlock 51 Grid.Column="1" 52 VerticalAlignment="Center" 53 Text="{x:Bind Name}" /> 54 </Grid> 55 </DataTemplate> 56 57 <!-- Template for separators --> 58 <DataTemplate x:Key="SeparatorViewModelTemplate" x:DataType="coreViewModels:SeparatorViewModel"> 59 <Rectangle 60 Height="1" 61 Margin="-16,-12,-12,-12" 62 Fill="{ThemeResource MenuFlyoutSeparatorBackground}" /> 63 </DataTemplate> 64 65 </ResourceDictionary> 66 </UserControl.Resources> 67 68 <ComboBox 69 Name="FiltersComboBox" 70 x:Uid="FiltersComboBox" 71 MinWidth="200" 72 VerticalAlignment="Center" 73 ItemTemplateSelector="{StaticResource FilterTemplateSelector}" 74 ItemsSource="{x:Bind ViewModel.Filters, Mode=OneWay}" 75 PlaceholderText="Filters" 76 PreviewKeyDown="FiltersComboBox_PreviewKeyDown" 77 SelectedValue="{x:Bind ViewModel.CurrentFilter, Mode=OneWay}" 78 SelectionChanged="FiltersComboBox_SelectionChanged" 79 Style="{StaticResource ComboBoxStyle}" 80 Visibility="{x:Bind ViewModel.ShouldShowFilters, Mode=OneWay, Converter={StaticResource BoolToVisibilityConverter}, FallbackValue=Collapsed}"> 81 <ComboBox.ItemContainerStyle> 82 <Style BasedOn="{StaticResource DefaultComboBoxItemStyle}" TargetType="ComboBoxItem"> 83 <Setter Property="MinHeight" Value="0" /> 84 <Setter Property="Padding" Value="12,8" /> 85 </Style> 86 </ComboBox.ItemContainerStyle> 87 <ComboBox.ItemContainerTransitions> 88 <TransitionCollection /> 89 </ComboBox.ItemContainerTransitions> 90 </ComboBox> 91 </UserControl>