トグルボタンでの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 件のコメント :
コメントを投稿