Commit 212a0cb8 authored by 潘栩锋's avatar 潘栩锋 🚴

添加 专为名字而设定的虚拟键盘

parent 1da75c4d
......@@ -118,6 +118,9 @@
<Compile Include="Rules\FileNameRule.cs" />
<Compile Include="NoToggleButton.cs" />
<Compile Include="ToggleButtonOnOff.cs" />
<Compile Include="UI.OSK\WdNameKeyboard.xaml.cs">
<DependentUpon>WdNameKeyboard.xaml</DependentUpon>
</Compile>
<Compile Include="UI.OSK\WdFullKeyboard.xaml.cs">
<DependentUpon>WdFullKeyboard.xaml</DependentUpon>
</Compile>
......@@ -269,6 +272,10 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Resource>
<Page Include="UI.OSK\WdNameKeyboard.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="UI.OSK\WdFullKeyboard.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
......
......@@ -171,9 +171,14 @@ namespace FLY.ControlLibrary.UI.OSK
kb = fkb;
}
else if (param.Contains("name"))
{
kb = new WdNameKeyboard();
}
else
{
kb = new WdNumKeyboard();
}
Window w = (Window)kb;
Window window = COMMON.GetWindow(tb);
w.Owner = window;
......
<Window x:Class="FLY.ControlLibrary.UI.OSK.WdNameKeyboard"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:FLY.ControlLibrary.UI.OSK"
WindowStyle="None" ResizeMode="NoResize" WindowStartupLocation="CenterScreen"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
Height="300" Width="650" Background="#525a65" Loaded="Window_Loaded">
<Grid>
<Grid.Resources>
<SolidColorBrush x:Key="Color_light" Color="#f4f4f4"/>
<SolidColorBrush x:Key="Color_dark" Color="#8e9aa8"/>
<Style TargetType="TextBlock" x:Key="TextBlockStyle_abc">
<Setter Property="FontSize" Value="20" />
<Setter Property="FontFamily" Value="Arial" />
</Style>
<Style TargetType="Button" x:Key="ButtonStyle_key">
<Setter Property="Margin" Value="3"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<StackPanel Orientation="Vertical">
<Border Background="{TemplateBinding Background}" Height="{TemplateBinding ActualHeight}" Width="{TemplateBinding ActualWidth}" BorderThickness="2" CornerRadius="3">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50*"/>
<RowDefinition Height="150*"/>
<RowDefinition Height="50*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50*"/>
<ColumnDefinition Width="150*"/>
<ColumnDefinition Width="50*"/>
</Grid.ColumnDefinitions>
<Viewbox Grid.Row="1" Grid.Column="1" >
<ContentPresenter RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</Viewbox>
</Grid>
</Border>
</StackPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsKeyboardFocused" Value="true">
</Trigger>
<Trigger Property="IsEnabled" Value="false">
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter Property="Opacity" Value="0.5"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="Button" x:Key="ButtonStyle_abc" BasedOn="{StaticResource ButtonStyle_key}">
<Setter Property="Background" Value="{StaticResource Color_light}"/>
<Setter Property="Foreground" Value="#444e57"/>
</Style>
<Style TargetType="Button" x:Key="ButtonStyle_opt" BasedOn="{StaticResource ButtonStyle_key}">
<Setter Property="Background" Value="{StaticResource Color_dark}"/>
<Setter Property="Foreground" Value="{StaticResource Color_light}"/>
</Style>
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition Height="57*" />
<RowDefinition Height="200*" />
</Grid.RowDefinitions>
<Border Background="White" Margin="6" CornerRadius="3" MouseDown="Border_MouseDown">
<Viewbox Margin="3" HorizontalAlignment="Right" VerticalAlignment="Center" >
<TextBlock x:Name="textblock_result" Text="{Binding ResultView}" Foreground="Black" FontWeight="Bold" FontSize="30" />
</Viewbox>
</Border>
<Grid Grid.Row="1" Margin="3">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Name="button_1" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="1" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="1" Name="button_2" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="2" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="2" Name="button_3" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="3" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="3" Name="button_4" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="4" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="4" Name="button_5" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="5" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="5" Name="button_6" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="6" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="6" Name="button_7" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="7" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="7" Name="button_8" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="8" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="8" Name="button_9" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="9" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="9" Name="button_0" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="0" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
</Grid>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Name="button_q" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="Q" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="1" Name="button_w" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="W" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="2" Name="button_e" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="E" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="3" Name="button_r" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="R" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="4" Name="button_t" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="T" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="5" Name="button_y" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="Y" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="6" Name="button_u" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="U" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="7" Name="button_i" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="I" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="8" Name="button_o" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="O" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="9" Name="button_p" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="P" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
</Grid>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="50*"/>
</Grid.ColumnDefinitions>
<Button Grid.Column="1" Name="button_a" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="A" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="2" Name="button_s" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="S" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="3" Name="button_d" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="D" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="4" Name="button_f" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="F" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="5" Name="button_g" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="G" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="6" Name="button_h" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="H" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="7" Name="button_j" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="J" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="8" Name="button_k" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="K" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="9" Name="button_l" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="L" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
</Grid>
<Grid Grid.Row="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="200*"/>
</Grid.ColumnDefinitions>
<Button Grid.Column="1" Name="button_z" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="Z" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="2" Name="button_x" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="X" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="3" Name="button_c" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="C" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="4" Name="button_v" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="V" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="5" Name="button_b" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="B" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="6" Name="button_n" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="N" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="7" Name="button_m" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="M" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="8" Name="button_backspace" Style="{StaticResource ButtonStyle_opt}" Click="button_backspace_Click">
<iconPacks:Material Kind="Backspace" />
</Button>
</Grid>
<Grid Grid.Row="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250*"/>
<ColumnDefinition Width="300*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="100*"/>
<ColumnDefinition Width="250*"/>
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Name="button_close" Style="{StaticResource ButtonStyle_opt}" Click="button_close_Click">
<iconPacks:Material Kind="KeyboardClose" />
</Button>
<Button Grid.Column="1" Name="button_space" Style="{StaticResource ButtonStyle_abc}" Click="button_space_Click" />
<Button Grid.Column="2" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="-" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="3" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="#" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="4" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="*" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="5" Style="{StaticResource ButtonStyle_abc}" Click="button_Click">
<TextBlock Text="/" Style="{StaticResource TextBlockStyle_abc}" />
</Button>
<Button Grid.Column="6" Name="button_enter" Style="{StaticResource ButtonStyle_opt}" Click="button_enter_Click">
<iconPacks:Material Kind="KeyboardReturn" />
</Button>
</Grid>
</Grid>
</Grid>
</Window>
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Windows.Threading;
namespace FLY.ControlLibrary.UI.OSK
{
/// <summary>
/// WdPNameKeyboard.xaml 的交互逻辑
/// </summary>
public partial class WdNameKeyboard : Window, INotifyPropertyChanged, IVirtualKeyboard
{
private DispatcherTimer timer;
private TextBox textbox = null;
private bool press1st = true;
public WdNameKeyboard()
{
InitializeComponent();
timer = new DispatcherTimer();
timer.Tick += new EventHandler(timer_Tick);
timer.Interval = TimeSpan.FromMilliseconds(1);
}
void timer_Tick(object sender, EventArgs e)
{
timer.Stop();
this.ShowDialog();
}
public void Open(TextBox textbox)
{
this.textbox = textbox;
this.Result = textbox.Text;
timer.Start();//不能直接showdialog(), 要让事件继续传递,直到有个框出来!!!
//this.ShowDialog();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.textblock_result.DataContext = this;
}
private void button_Click(object sender, RoutedEventArgs e)
{
if (press1st)
{
press1st = false;
Result = "";
}
string text = ((sender as Button).Content as TextBlock).Text;
Result += text;
}
private void button_backspace_Click(object sender, RoutedEventArgs e)
{
Result = "";
}
private void button_close_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
private void button_space_Click(object sender, RoutedEventArgs e)
{
Result += " ";
}
private void button_enter_Click(object sender, RoutedEventArgs e)
{
if (this.textbox != null)
{
this.textbox.Text = Result;
//触发失去焦点事件!!!!!!!
//让 绑定的 property 生效
this.textbox.RaiseEvent(new RoutedEventArgs(TextBox.LostFocusEvent));
}
this.Close();
}
private string result;
/// <summary>
/// 结果
/// </summary>
public string Result
{
get { return result; }
set
{
if (result != value)
{
result = value;
this.ResultView = this.Result;
}
}
}
/// <summary>
/// 正常模式时, ResultView 与 Result 一样, 密码模式时, ResultView 显示*******
/// </summary>
public string ResultView { get; set; }
/// <summary>
/// 属性改变事件
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
private void Border_MouseDown(object sender, MouseButtonEventArgs e)
{
this.DragMove();
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment