
トグルボタンでの2面切り替えサンプル
数字入力の機会があまりないので 使い勝手が良いかどうかはわかりません
キーボードのFnキーのような機能は ボタンを2つ用意して表示非表示を切り替えるのが簡単で作りやすいです
<!-- zeKey skinfile https://ze-key.blogspot.jp/ -->
<z:Keyboard xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:z="clr-namespace:zeKey.Skin;assembly=zeKey"
Width="320"
Height="400"
z:DragMoveBehavior.CanMove="True"
FontFamily="Yu Gothic UI"
FontWeight="Bold">
<z:Keyboard.SkinInfo>
<z:SkinInfo Title="テンキー(標準電卓風)"
Author="T.Naga"
License="改変自由"
Version="1.0.0">
<z:SkinInfo.Information>
<TextBlock TextWrapping="Wrap">
テンキー+α 標準電卓風な見た目にしてみました<Run Text=" " />
使い方:<Run Text=" " />
Fnトグルキー押し込みでNumLock+α<Run Text=" " />
通常状態の右クリックで Fn状態のキーが打てます(見えないので覚える他ないですが)<Run Text=" " />
Fn状態の右クリックに Shift動作や類似キーがついているものがあります<Run Text=" " />
<LineBreak />
注意:<Run Text=" " />
・Fnキーは実際にはNumLockキーではありません 他のキーもテンキーではありません
そのため(リアル)キーボードのNumLock状態の影響は受けませんが テンキーを期待しているアプリでは動作しません<Run Text=" " />
<LineBreak />
詳しい説明は
<z:Hyperlink NavigateUri="https://ze-key.blogspot.jp/">ブログ</z:Hyperlink>
を参照してください
</TextBlock>
</z:SkinInfo.Information>
</z:SkinInfo>
</z:Keyboard.SkinInfo>
<z:Keyboard.Resources>
<BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
<SolidColorBrush x:Key="キーボード 背景" Color="#FFF2F2F2" />
<SolidColorBrush x:Key="キーボード 枠" Color="Black" />
<SolidColorBrush x:Key="キーボード 枠IMEオン" Color="Red" />
<SolidColorBrush x:Key="キー 背景" Color="#FFE6E6E6" />
<SolidColorBrush x:Key="キー 押し込み" Color="#FFB8B8B8" />
<SolidColorBrush x:Key="キー マウスオーバー" Color="#FFCFCFCF" />
<SolidColorBrush x:Key="文字" Color="Black" />
<ControlTemplate x:Key="Button">
<Grid>
<Rectangle Fill="{TemplateBinding Background}" />
<Viewbox Stretch="Uniform">
<TextBlock>
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Margin" Value="12,8" />
<Setter Property="Foreground" Value="{Binding Foreground, RelativeSource={RelativeSource TemplatedParent}}" />
<Setter Property="Text" Value="{Binding Content, RelativeSource={RelativeSource TemplatedParent}}" />
</Style>
</TextBlock.Style>
</TextBlock>
</Viewbox>
</Grid>
</ControlTemplate>
<Style TargetType="{x:Type ButtonBase}">
<Setter Property="Background" Value="{DynamicResource キー 背景}" />
<Setter Property="Template" Value="{StaticResource Button}" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{DynamicResource キー マウスオーバー}" />
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" Value="{DynamicResource キー 押し込み}" />
</Trigger>
<Trigger Property="ToggleButton.IsChecked" Value="True">
<Setter Property="Background" Value="{DynamicResource キー 押し込み}" />
</Trigger>
</Style.Triggers>
</Style>
<Style BasedOn="{StaticResource {x:Type ButtonBase}}" TargetType="{x:Type z:LRRepeatButton}" />
<Style BasedOn="{StaticResource {x:Type ButtonBase}}" TargetType="{x:Type ToggleButton}" />
<Style x:Key="CloseButton" TargetType="{x:Type Button}">
<Setter Property="Background" Value="Transparent" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid>
<Rectangle Fill="{Binding Background, RelativeSource={RelativeSource TemplatedParent}}" />
<Path Width="12"
Height="12"
Data="M0,0 L12,12 M0,12 L12,0"
Stretch="Fill"
Stroke="{Binding Foreground,
RelativeSource={RelativeSource TemplatedParent}}"
StrokeThickness="1" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="White" />
<Setter Property="Background" Value="#FFE81123" />
</Trigger>
</Style.Triggers>
</Style>
</z:Keyboard.Resources>
<Grid>
<Rectangle Fill="{DynamicResource キーボード 背景}" StrokeThickness="1">
<Rectangle.Style>
<Style TargetType="{x:Type Rectangle}">
<Setter Property="Stroke" Value="{DynamicResource キーボード 枠}" />
<Style.Triggers>
<DataTrigger Binding="{Binding ModeKeys.ImeLock}" Value="true">
<Setter Property="Stroke" Value="{DynamicResource キーボード 枠IMEオン}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
<Button Width="46"
Height="30"
Margin="1"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Command="{Binding CloseCommand}"
Style="{StaticResource CloseButton}" />
<ToggleButton x:Name="Toggle"
Width="{Binding ActualWidth,
ElementName=SpacerBtn}"
Height="{Binding ActualHeight,
ElementName=SpacerBtn}"
Margin="10,40,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Content="Fn"
Focusable="False" />
<!-- 表 -->
<Grid Margin="10,40,10,10">
<Grid.Style>
<Style TargetType="{x:Type Grid}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked, ElementName=Toggle}" Value="True">
<Setter Property="Visibility" Value="Hidden" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<ToggleButton Name="SpacerBtn" Visibility="Hidden" />
<z:LRRepeatButton Grid.Column="1"
Content="/"
TypeKey="OemQuestion">
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="LeftShift">
<z:TypeKeys TypeKey="D8" />
</z:TypeKeys>
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Column="2" Content="*">
<z:LRRepeatButton.LeftTypeKeys>
<z:TypeKeys TypeKey="LeftShift">
<z:TypeKeys TypeKey="Oem1" />
</z:TypeKeys>
</z:LRRepeatButton.LeftTypeKeys>
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="LeftShift">
<z:TypeKeys TypeKey="D9" />
</z:TypeKeys>
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Column="3"
Content="⌫"
TypeKey="Backspace">
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="Delete" />
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Row="1"
Content="7"
TypeKey="D7">
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="Home" />
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Row="1"
Grid.Column="1"
Content="8"
TypeKey="D8">
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="Up" />
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Row="1"
Grid.Column="2"
Content="9"
TypeKey="D9">
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="PageUp" />
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Row="1"
Grid.Column="3"
Content="-"
TypeKey="OemMinus">
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="Oem5" />
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Row="2"
Content="4"
TypeKey="D4">
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="Left" />
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Row="2"
Grid.Column="1"
Content="5"
TypeKey="D5" />
<z:LRRepeatButton Grid.Row="2"
Grid.Column="2"
Content="6"
TypeKey="D6">
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="Right" />
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Row="2"
Grid.Column="3"
Content="+">
<z:LRRepeatButton.LeftTypeKeys>
<z:TypeKeys TypeKey="LeftShift">
<z:TypeKeys TypeKey="OemPlus" />
</z:TypeKeys>
</z:LRRepeatButton.LeftTypeKeys>
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="LeftShift">
<z:TypeKeys TypeKey="D5" />
</z:TypeKeys>
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Row="3"
Content="1"
TypeKey="D1">
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="End" />
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Row="3"
Grid.Column="1"
Content="2"
TypeKey="D2">
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="Down" />
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Row="3"
Grid.Column="2"
Content="3"
TypeKey="D3">
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="pageDown" />
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Row="3"
Grid.RowSpan="2"
Grid.Column="3"
Content="⏎"
TypeKey="Return">
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="LeftShift">
<z:TypeKeys TypeKey="OemMinus" />
</z:TypeKeys>
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Row="4"
Grid.ColumnSpan="2"
Content="0"
TypeKey="D0">
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="Space" />
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Row="4"
Grid.Column="2"
Content="."
TypeKey="OemPeriod">
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="OemComma" />
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
</Grid>
<!-- 裏 -->
<Grid Margin="10,40,10,10" Visibility="{Binding IsChecked, Converter={StaticResource BooleanToVisibilityConverter}, ElementName=Toggle}">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<z:LRRepeatButton Grid.Column="1" Content="(">
<z:LRRepeatButton.LeftTypeKeys>
<z:TypeKeys TypeKey="LeftShift">
<z:TypeKeys TypeKey="D8" />
</z:TypeKeys>
</z:LRRepeatButton.LeftTypeKeys>
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="OemOpenBrackets" />
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Column="2" Content=")">
<z:LRRepeatButton.LeftTypeKeys>
<z:TypeKeys TypeKey="LeftShift">
<z:TypeKeys TypeKey="D9" />
</z:TypeKeys>
</z:LRRepeatButton.LeftTypeKeys>
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="OemCloseBrackets" />
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Column="3"
Content="⌦"
TypeKey="Delete">
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="Backspace" />
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Row="1"
Content="↖"
TypeKey="Home" />
<z:LRRepeatButton Grid.Row="1"
Grid.Column="1"
Content="↑"
TypeKey="Up" />
<z:LRRepeatButton Grid.Row="1"
Grid.Column="2"
Content="⇞"
TypeKey="PageUp">
<z:LRRepeatButton.RightTypeKeys>
<z:TypeKeys TypeKey="LeftShift">
<z:TypeKeys TypeKey="PageUp" />
</z:TypeKeys>
</z:LRRepeatButton.RightTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Row="1"
Grid.Column="3"
Content="\">
<z:LRRepeatButton.LeftTypeKeys>
<z:TypeKeys TypeKey="Oem5" />
</z:LRRepeatButton.LeftTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Row="2"
Content="←"
TypeKey="Left" />
<z:LRRepeatButton Grid.Row="2"
Grid.Column="2"
Content="→"
TypeKey="Right" />
<z:LRRepeatButton Grid.Row="2"
Grid.Column="3"
Content="%">
<z:LRRepeatButton.LeftTypeKeys>
<z:TypeKeys TypeKey="LeftShift">
<z:TypeKeys TypeKey="D5" />
</z:TypeKeys>
</z:LRRepeatButton.LeftTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Row="3"
Content="↘"
TypeKey="End" />
<z:LRRepeatButton Grid.Row="3"
Grid.Column="1"
Content="↓"
TypeKey="Down" />
<z:LRRepeatButton Grid.Row="3"
Grid.Column="2"
Content="⇟"
TypeKey="PageDown" />
<z:LRRepeatButton Grid.Row="3"
Grid.RowSpan="2"
Grid.Column="3"
Content="=">
<z:LRRepeatButton.LeftTypeKeys>
<z:TypeKeys TypeKey="LeftShift">
<z:TypeKeys TypeKey="OemMinus" />
</z:TypeKeys>
</z:LRRepeatButton.LeftTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Row="4"
Grid.ColumnSpan="2"
Content="␣">
<z:LRRepeatButton.LeftTypeKeys>
<z:TypeKeys TypeKey="Space" />
</z:LRRepeatButton.LeftTypeKeys>
</z:LRRepeatButton>
<z:LRRepeatButton Grid.Row="4"
Grid.Column="2"
Content=",">
<z:LRRepeatButton.LeftTypeKeys>
<z:TypeKeys TypeKey="OemComma" />
</z:LRRepeatButton.LeftTypeKeys>
</z:LRRepeatButton>
</Grid>
<z:ResizeGrip>
<z:ResizeGrip.Style>
<Style TargetType="{x:Type z:ResizeGrip}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid Background="#01FFFFFF">
<Canvas Width="10"
Height="10"
Margin="4">
<Path Data="M 0,8L 2,8L 2,10L 0,10L 0,8 Z M 8,0L 10,0L 10,2L 8,2L 8,0 Z M 8,4L 10,4L 10,6L 8,6L 8,4 Z M 8,8L 10,8L 10,10L 8,10L 8,8 Z M 4,8L 6,8L 6,10L 4,10L 4,8 Z M 4,4L 6,4L 6,6L 4,6L 4,4 Z " Fill="#FFBFBFBF" />
</Canvas>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</z:ResizeGrip.Style>
</z:ResizeGrip>
</Grid>
</z:Keyboard>
0 件のコメント :
コメントを投稿