Files
Ursa.Avalonia/src/Ursa.Themes.Semi/Controls/NumPad.axaml
2025-09-16 21:13:15 +08:00

225 lines
11 KiB
XML

<ResourceDictionary
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:u="https://irihi.tech/ursa">
<Design.PreviewWith>
<u:NumPad />
</Design.PreviewWith>
<ControlTheme x:Key="{x:Type u:NumPad}" TargetType="{x:Type u:NumPad}">
<Setter Property="Template">
<ControlTemplate TargetType="u:NumPad">
<Border>
<Border.Styles>
<Style Selector="u|NumPadButton">
<Setter Property="NumMode" Value="{Binding $parent[u:NumPad].NumMode}" />
<Setter Property="Command" Value="{Binding $parent[u:NumPad].ProcessClick}" />
<Setter Property="Focusable" Value="False" />
<Setter Property="CommandParameter" Value="{Binding $self}" />
<Setter Property="Width" Value="54" />
<Setter Property="Height" Value="54" />
<Setter Property="UseLayoutRounding" Value="False" />
<Setter Property="HorizontalAlignment" Value="Stretch" />
<Setter Property="VerticalAlignment" Value="Stretch" />
<Setter Property="Margin" Value="1" />
</Style>
</Border.Styles>
<Grid
HorizontalAlignment="Left"
VerticalAlignment="Top"
ColumnDefinitions="*,*,*,*"
RowDefinitions="*,*,*,*,*">
<ToggleButton
Grid.Row="0"
Grid.Column="0"
MinWidth="54"
MinHeight="54"
Margin="1"
Padding="0"
Focusable="False"
FontWeight="Regular"
IsChecked="{TemplateBinding NumMode,
Mode=TwoWay}">
<TextBlock>
<Run Text="Num" />
<LineBreak />
<Run Text="Lock" />
</TextBlock>
</ToggleButton>
<u:NumPadButton
Grid.Row="0"
Grid.Column="1"
FunctionContent="/"
FunctionKey="Divide"
NumContent="/"
NumKey="Divide" />
<u:NumPadButton
Grid.Row="0"
Grid.Column="2"
FunctionContent="*"
FunctionKey="Multiply"
NumContent="*"
NumKey="Multiply" />
<u:NumPadButton
Grid.Row="0"
Grid.Column="3"
FunctionContent="-"
FunctionKey="Subtract"
NumContent="-"
NumKey="Subtract" />
<u:NumPadButton
Grid.Row="1"
Grid.Column="0"
FunctionContent="Home"
FunctionKey="Home"
NumContent="7"
NumKey="NumPad7" />
<u:NumPadButton
Grid.Row="1"
Grid.Column="1"
FunctionContent="Up"
FunctionKey="Up"
NumContent="8"
NumKey="NumPad8" />
<u:NumPadButton
Grid.Row="1"
Grid.Column="2"
FunctionKey="PageUp"
NumContent="9"
NumKey="NumPad9">
<u:NumPadButton.FunctionContent>
<TextBlock><Run Text="Page" /><LineBreak /><Run Text="Up" /></TextBlock>
</u:NumPadButton.FunctionContent>
</u:NumPadButton>
<u:NumPadButton
Grid.Row="1"
Grid.RowSpan="1"
Grid.Column="3"
Height="{x:Static x:Double.NaN}"
VerticalAlignment="Stretch"
FunctionContent="+"
FunctionKey="Add"
NumContent="+"
NumKey="Add" />
<u:NumPadButton
Grid.Row="2"
Grid.RowSpan="1"
Grid.Column="3"
Height="{x:Static x:Double.NaN}"
VerticalAlignment="Stretch"
FunctionContent="←"
FunctionKey="Back"
NumContent="←"
NumKey="Back" />
<u:NumPadButton
Grid.Row="2"
Grid.Column="0"
FunctionContent="Left"
FunctionKey="Left"
NumContent="4"
NumKey="NumPad4" />
<u:NumPadButton
Grid.Row="2"
Grid.Column="1"
FunctionContent=" "
FunctionKey="None"
NumContent="5"
NumKey="NumPad5" />
<u:NumPadButton
Grid.Row="2"
Grid.Column="2"
FunctionContent="Right"
FunctionKey="Right"
NumContent="6"
NumKey="NumPad6" />
<u:NumPadButton
Grid.Row="3"
Grid.Column="0"
FunctionContent="End"
FunctionKey="End"
NumContent="1"
NumKey="NumPad1" />
<u:NumPadButton
Grid.Row="3"
Grid.Column="1"
FunctionContent="Down"
FunctionKey="Down"
NumContent="2"
NumKey="NumPad2" />
<u:NumPadButton
Grid.Row="3"
Grid.Column="2"
FunctionKey="PageDown"
NumContent="3"
NumKey="NumPad3">
<u:NumPadButton.FunctionContent>
<TextBlock><Run Text="Page" /><LineBreak /><Run Text="Down" /></TextBlock>
</u:NumPadButton.FunctionContent>
</u:NumPadButton>
<u:NumPadButton
Grid.Row="3"
Grid.RowSpan="2"
Grid.Column="3"
Height="{x:Static x:Double.NaN}"
VerticalAlignment="Stretch"
FunctionContent="Enter"
FunctionKey="Enter"
NumContent="Enter"
NumKey="Enter" />
<u:NumPadButton
Grid.Row="4"
Grid.Column="0"
Grid.ColumnSpan="2"
Width="{x:Static x:Double.NaN}"
FunctionContent="Insert"
FunctionKey="Insert"
NumContent="0"
NumKey="NumPad0" />
<u:NumPadButton
Grid.Row="4"
Grid.Column="2"
FunctionContent="Delete"
FunctionKey="Delete"
NumContent="."
NumKey="Decimal" />
</Grid>
</Border>
</ControlTemplate>
</Setter>
</ControlTheme>
<ControlTheme x:Key="{x:Type u:NumPadButton}" TargetType="u:NumPadButton">
<Setter Property="Focusable" Value="False" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="Background" Value="{DynamicResource ButtonDefaultBackground}" />
<Setter Property="CornerRadius" Value="3" />
<Setter Property="Template">
<ControlTemplate TargetType="u:NumPadButton">
<Border
Name="PART_Background"
Background="{TemplateBinding Background}"
CornerRadius="{TemplateBinding CornerRadius}">
<Panel>
<ContentPresenter
Name="PART_ContentPresenter"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Content="{TemplateBinding NumContent}"
IsVisible="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=NumMode}" />
<ContentPresenter
Name="PART_FunctionContentPresenter"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Content="{TemplateBinding FunctionContent}"
IsVisible="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=!NumMode}" />
</Panel>
</Border>
</ControlTemplate>
</Setter>
<Style Selector="^:pointerover /template/ Border#PART_Background">
<Setter Property="Background" Value="{DynamicResource ButtonDefaultPointeroverBackground}" />
</Style>
<Style Selector="^:pressed /template/ Border#PART_Background">
<Setter Property="Background" Value="{DynamicResource ButtonDefaultPressedBackground}" />
</Style>
</ControlTheme>
</ResourceDictionary>