csharpc-sharpdotnetxamlavaloniauicross-platformcross-platform-xamlavaloniaguimulti-platformuser-interfacedotnetcore
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
259 lines
13 KiB
259 lines
13 KiB
<ResourceDictionary xmlns="https://github.com/avaloniaui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:sys="using:System"
|
|
x:ClassModifier="internal">
|
|
<Design.PreviewWith>
|
|
<Border Padding="20">
|
|
<StackPanel Spacing="10">
|
|
<ComboBox PlaceholderText="Select an item">
|
|
<ComboBoxItem>Item 1</ComboBoxItem>
|
|
<ComboBoxItem>Item 2</ComboBoxItem>
|
|
</ComboBox>
|
|
<ComboBox IsEnabled="False"
|
|
Width="200"
|
|
SelectedIndex="1"
|
|
HorizontalContentAlignment="Center">
|
|
<ComboBoxItem>Item 1</ComboBoxItem>
|
|
<ComboBoxItem>Item 2</ComboBoxItem>
|
|
</ComboBox>
|
|
|
|
<ComboBox PlaceholderText="Error">
|
|
<DataValidationErrors.Error>
|
|
<sys:Exception>
|
|
<x:Arguments>
|
|
<x:String>Error</x:String>
|
|
</x:Arguments>
|
|
</sys:Exception>
|
|
</DataValidationErrors.Error>
|
|
</ComboBox>
|
|
|
|
<ComboBox SelectedIndex="1" IsEditable="True">
|
|
<ComboBoxItem>Item A</ComboBoxItem>
|
|
<ComboBoxItem>Item b</ComboBoxItem>
|
|
<ComboBoxItem>Item c</ComboBoxItem>
|
|
</ComboBox>
|
|
|
|
<ComboBox SelectedIndex="0">
|
|
<ComboBox.SelectionBoxItemTemplate>
|
|
<DataTemplate>
|
|
<Border Padding="20" BorderBrush="Red" BorderThickness="1">
|
|
<TextBlock Text="{ReflectionBinding}"/>
|
|
</Border>
|
|
</DataTemplate>
|
|
</ComboBox.SelectionBoxItemTemplate>
|
|
<ComboBoxItem>Item A</ComboBoxItem>
|
|
<ComboBoxItem>Item b</ComboBoxItem>
|
|
<ComboBoxItem>Item c</ComboBoxItem>
|
|
</ComboBox>
|
|
</StackPanel>
|
|
</Border>
|
|
</Design.PreviewWith>
|
|
|
|
<Thickness x:Key="ComboBoxTopHeaderMargin">0,0,0,4</Thickness>
|
|
<x:Int32 x:Key="ComboBoxPopupMaxNumberOfItems">15</x:Int32>
|
|
<x:Int32 x:Key="ComboBoxPopupMaxNumberOfItemsThatCanBeShownOnOneSide">7</x:Int32>
|
|
|
|
<Thickness x:Key="ComboBoxPadding">12,5,0,7</Thickness>
|
|
<Thickness x:Key="ComboBoxEditableTextPadding">11,5,32,6</Thickness>
|
|
<x:Double x:Key="ComboBoxMinHeight">32</x:Double>
|
|
|
|
<ControlTheme x:Key="{x:Type ComboBox}" TargetType="ComboBox">
|
|
<Setter Property="Padding" Value="{DynamicResource ComboBoxPadding}" />
|
|
<Setter Property="FocusAdorner" Value="{x:Null}" />
|
|
<Setter Property="MaxDropDownHeight" Value="504" />
|
|
<Setter Property="Foreground" Value="{DynamicResource ComboBoxForeground}" />
|
|
<Setter Property="Background" Value="{DynamicResource ComboBoxBackground}" />
|
|
<Setter Property="BorderBrush" Value="{DynamicResource ComboBoxBorderBrush}" />
|
|
<Setter Property="BorderThickness" Value="{DynamicResource ComboBoxBorderThemeThickness}" />
|
|
<Setter Property="CornerRadius" Value="{DynamicResource ControlCornerRadius}" />
|
|
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled" />
|
|
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
|
|
<Setter Property="MinHeight" Value="{DynamicResource ComboBoxMinHeight}" />
|
|
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
|
|
<Setter Property="VerticalContentAlignment" Value="Center" />
|
|
<Setter Property="HorizontalAlignment" Value="Left" />
|
|
<Setter Property="VerticalAlignment" Value="Top" />
|
|
<Setter Property="PlaceholderForeground" Value="{DynamicResource ComboBoxPlaceHolderForeground}" />
|
|
<Setter Property="Template">
|
|
<ControlTemplate>
|
|
<DataValidationErrors>
|
|
<Grid ColumnDefinitions="*,32">
|
|
<Border x:Name="Background"
|
|
Grid.Column="0"
|
|
Grid.ColumnSpan="2"
|
|
Background="{TemplateBinding Background}"
|
|
BorderBrush="{TemplateBinding BorderBrush}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
CornerRadius="{TemplateBinding CornerRadius}"
|
|
MinWidth="{DynamicResource ComboBoxThemeMinWidth}" />
|
|
<Border x:Name="HighlightBackground"
|
|
Grid.Column="0"
|
|
Grid.ColumnSpan="2"
|
|
Background="{DynamicResource ComboBoxBackgroundUnfocused}"
|
|
BorderBrush="{DynamicResource ComboBoxBackgroundBorderBrushUnfocused}"
|
|
BorderThickness="{TemplateBinding BorderThickness}"
|
|
CornerRadius="{TemplateBinding CornerRadius}"
|
|
IsVisible="False"/>
|
|
<TextBlock x:Name="PlaceholderTextBlock"
|
|
Grid.Column="0"
|
|
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
|
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
|
|
Margin="{TemplateBinding Padding}"
|
|
Text="{TemplateBinding PlaceholderText}"
|
|
Foreground="{TemplateBinding PlaceholderForeground}">
|
|
<TextBlock.IsVisible>
|
|
<MultiBinding Converter="{x:Static BoolConverters.And}">
|
|
<Binding Path="SelectionBoxItem" RelativeSource="{RelativeSource TemplatedParent}" Converter="{x:Static ObjectConverters.IsNull}" />
|
|
<Binding Path="!IsEditable" RelativeSource="{RelativeSource TemplatedParent}" />
|
|
</MultiBinding>
|
|
</TextBlock.IsVisible>
|
|
</TextBlock>
|
|
<ContentControl x:Name="ContentPresenter"
|
|
Content="{TemplateBinding SelectionBoxItem}"
|
|
Grid.Column="0"
|
|
Margin="{TemplateBinding Padding}"
|
|
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
|
|
ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"
|
|
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
|
|
IsVisible="{TemplateBinding IsEditable, Converter={x:Static BoolConverters.Not}}">
|
|
</ContentControl>
|
|
|
|
<TextBox Name="PART_EditableTextBox"
|
|
Grid.Column="0"
|
|
Padding="{TemplateBinding Padding}"
|
|
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
|
|
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
|
|
Foreground="{TemplateBinding Foreground}"
|
|
Background="Transparent"
|
|
Text="{TemplateBinding Text, Mode=TwoWay}"
|
|
PlaceholderText="{TemplateBinding PlaceholderText}"
|
|
BorderThickness="0"
|
|
IsVisible="{TemplateBinding IsEditable}">
|
|
<TextBox.Resources>
|
|
<SolidColorBrush x:Key="TextControlBackgroundFocused">Transparent</SolidColorBrush>
|
|
<SolidColorBrush x:Key="TextControlBackgroundPointerOver">Transparent</SolidColorBrush>
|
|
<Thickness x:Key="TextControlBorderThemeThicknessFocused">0</Thickness>
|
|
</TextBox.Resources>
|
|
</TextBox>
|
|
|
|
<Border x:Name="DropDownOverlay"
|
|
Grid.Column="1"
|
|
Background="Transparent"
|
|
Margin="0,1,1,1"
|
|
Width="30"
|
|
IsVisible="False"
|
|
HorizontalAlignment="Right" />
|
|
|
|
<PathIcon x:Name="DropDownGlyph"
|
|
Grid.Column="1"
|
|
UseLayoutRounding="False"
|
|
IsHitTestVisible="False"
|
|
Height="12"
|
|
Width="12"
|
|
Margin="0,0,10,0"
|
|
HorizontalAlignment="Right"
|
|
VerticalAlignment="Center"
|
|
Foreground="{DynamicResource ComboBoxDropDownGlyphForeground}"
|
|
Data="M1939 486L2029 576L1024 1581L19 576L109 486L1024 1401L1939 486Z"/>
|
|
|
|
<Popup Name="PART_Popup"
|
|
WindowManagerAddShadowHint="False"
|
|
IsOpen="{TemplateBinding IsDropDownOpen, Mode=TwoWay}"
|
|
MinWidth="{Binding Bounds.Width, RelativeSource={RelativeSource TemplatedParent}}"
|
|
MaxHeight="{TemplateBinding MaxDropDownHeight}"
|
|
PlacementTarget="Background"
|
|
IsLightDismissEnabled="True"
|
|
InheritsTransform="True">
|
|
<Border x:Name="PopupBorder"
|
|
Background="{DynamicResource ComboBoxDropDownBackground}"
|
|
BorderBrush="{DynamicResource ComboBoxDropDownBorderBrush}"
|
|
BorderThickness="{DynamicResource ComboBoxDropdownBorderThickness}"
|
|
Padding="{DynamicResource ComboBoxDropdownBorderPadding}"
|
|
HorizontalAlignment="Stretch"
|
|
CornerRadius="{DynamicResource OverlayCornerRadius}">
|
|
<ScrollViewer HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"
|
|
IsScrollChainingEnabled="False"
|
|
VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}"
|
|
IsDeferredScrollingEnabled="{TemplateBinding (ScrollViewer.IsDeferredScrollingEnabled)}">
|
|
<ItemsPresenter Name="PART_ItemsPresenter"
|
|
Margin="{DynamicResource ComboBoxDropdownContentMargin}"
|
|
ItemsPanel="{TemplateBinding ItemsPanel}" />
|
|
</ScrollViewer>
|
|
</Border>
|
|
</Popup>
|
|
</Grid>
|
|
</DataValidationErrors>
|
|
</ControlTemplate>
|
|
</Setter>
|
|
|
|
<!-- PointerOver State -->
|
|
<Style Selector="^:pointerover /template/ Border#Background">
|
|
<Setter Property="Background" Value="{DynamicResource ComboBoxBackgroundPointerOver}" />
|
|
<Setter Property="BorderBrush" Value="{DynamicResource ComboBoxBorderBrushPointerOver}" />
|
|
</Style>
|
|
|
|
<!-- Pressed State -->
|
|
<Style Selector="^:pressed /template/ Border#Background">
|
|
<Setter Property="Background" Value="{DynamicResource ComboBoxBackgroundPressed}" />
|
|
<Setter Property="BorderBrush" Value="{DynamicResource ComboBoxBorderBrushPressed}" />
|
|
</Style>
|
|
|
|
<!-- Error State -->
|
|
<Style Selector="^:error /template/ Border#Background">
|
|
<Setter Property="BorderBrush" Value="{DynamicResource SystemControlErrorTextForegroundBrush}" />
|
|
</Style>
|
|
|
|
<!-- Focus Pressed State -->
|
|
<Style Selector="^:focus:pressed">
|
|
<Style Selector="^ /template/ ContentControl#ContentPresenter">
|
|
<Setter Property="Foreground" Value="{DynamicResource ComboBoxForegroundFocusedPressed}" />
|
|
</Style>
|
|
<Style Selector="^ /template/ TextBlock#PlaceholderTextBlock">
|
|
<Setter Property="Foreground" Value="{DynamicResource ComboBoxPlaceHolderForegroundFocusedPressed}" />
|
|
</Style>
|
|
<Style Selector="^ /template/ PathIcon#DropDownGlyph">
|
|
<Setter Property="Foreground" Value="{DynamicResource ComboBoxDropDownGlyphForegroundFocusedPressed}" />
|
|
</Style>
|
|
</Style>
|
|
|
|
<!-- Focused State -->
|
|
<Style Selector="^:focus-visible">
|
|
<Style Selector="^ /template/ Border#HighlightBackground">
|
|
<Setter Property="IsVisible" Value="True" />
|
|
<Setter Property="BorderBrush" Value="{DynamicResource ComboBoxBackgroundBorderBrushFocused}" />
|
|
</Style>
|
|
<Style Selector="^ /template/ ContentControl#ContentPresenter">
|
|
<Setter Property="Foreground" Value="{DynamicResource ComboBoxForegroundFocused}" />
|
|
</Style>
|
|
<Style Selector="^ /template/ TextBlock#PlaceholderTextBlock">
|
|
<Setter Property="Foreground" Value="{DynamicResource ComboBoxForegroundFocused}" />
|
|
</Style>
|
|
<Style Selector="^ /template/ PathIcon#DropDownGlyph">
|
|
<Setter Property="Foreground" Value="{DynamicResource ComboBoxDropDownGlyphForegroundFocused}" />
|
|
</Style>
|
|
</Style>
|
|
|
|
<!-- Disabled State -->
|
|
<Style Selector="^:disabled">
|
|
<Style Selector="^ /template/ Border#Background">
|
|
<Setter Property="Background" Value="{DynamicResource ComboBoxBackgroundDisabled}" />
|
|
<Setter Property="BorderBrush" Value="{DynamicResource ComboBoxBorderBrushDisabled}" />
|
|
</Style>
|
|
<Style Selector="^ /template/ ContentControl#ContentPresenter">
|
|
<Setter Property="Foreground" Value="{DynamicResource ComboBoxForegroundDisabled}" />
|
|
</Style>
|
|
<Style Selector="^ /template/ TextBlock#PlaceholderTextBlock">
|
|
<Setter Property="Foreground" Value="{DynamicResource ComboBoxForegroundDisabled}" />
|
|
</Style>
|
|
<Style Selector="^ /template/ PathIcon#DropDownGlyph">
|
|
<Setter Property="Foreground" Value="{DynamicResource ComboBoxDropDownGlyphForegroundDisabled}" />
|
|
</Style>
|
|
</Style>
|
|
|
|
<Style Selector="^[IsEditable=true]">
|
|
<Setter Property="IsTabStop" Value="False" />
|
|
<Setter Property="KeyboardNavigation.TabNavigation" Value="Local" />
|
|
</Style>
|
|
</ControlTheme>
|
|
|
|
</ResourceDictionary>
|
|
|