From 212a0cb8be486bcb810ef06755b8a46c1a5201af Mon Sep 17 00:00:00 2001 From: feng <panruising@163.com> Date: Tue, 8 Nov 2022 10:53:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20=E4=B8=93=E4=B8=BA?= =?UTF-8?q?=E5=90=8D=E5=AD=97=E8=80=8C=E8=AE=BE=E5=AE=9A=E7=9A=84=E8=99=9A?= =?UTF-8?q?=E6=8B=9F=E9=94=AE=E7=9B=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FLY.ControlLibrary.csproj | 7 + .../UI.OSK/KeyboardBehavior.cs | 7 +- .../UI.OSK/WdNameKeyboard.xaml | 292 ++++++++++++++++++ .../UI.OSK/WdNameKeyboard.xaml.cs | 132 ++++++++ 4 files changed, 437 insertions(+), 1 deletion(-) create mode 100644 Project.FLY.ControlLibrary/FLY.ControlLibrary/UI.OSK/WdNameKeyboard.xaml create mode 100644 Project.FLY.ControlLibrary/FLY.ControlLibrary/UI.OSK/WdNameKeyboard.xaml.cs diff --git a/Project.FLY.ControlLibrary/FLY.ControlLibrary/FLY.ControlLibrary.csproj b/Project.FLY.ControlLibrary/FLY.ControlLibrary/FLY.ControlLibrary.csproj index a6bd15d..db9b4e5 100644 --- a/Project.FLY.ControlLibrary/FLY.ControlLibrary/FLY.ControlLibrary.csproj +++ b/Project.FLY.ControlLibrary/FLY.ControlLibrary/FLY.ControlLibrary.csproj @@ -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> diff --git a/Project.FLY.ControlLibrary/FLY.ControlLibrary/UI.OSK/KeyboardBehavior.cs b/Project.FLY.ControlLibrary/FLY.ControlLibrary/UI.OSK/KeyboardBehavior.cs index 129a513..914d0ca 100644 --- a/Project.FLY.ControlLibrary/FLY.ControlLibrary/UI.OSK/KeyboardBehavior.cs +++ b/Project.FLY.ControlLibrary/FLY.ControlLibrary/UI.OSK/KeyboardBehavior.cs @@ -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; diff --git a/Project.FLY.ControlLibrary/FLY.ControlLibrary/UI.OSK/WdNameKeyboard.xaml b/Project.FLY.ControlLibrary/FLY.ControlLibrary/UI.OSK/WdNameKeyboard.xaml new file mode 100644 index 0000000..2877c1e --- /dev/null +++ b/Project.FLY.ControlLibrary/FLY.ControlLibrary/UI.OSK/WdNameKeyboard.xaml @@ -0,0 +1,292 @@ +<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> diff --git a/Project.FLY.ControlLibrary/FLY.ControlLibrary/UI.OSK/WdNameKeyboard.xaml.cs b/Project.FLY.ControlLibrary/FLY.ControlLibrary/UI.OSK/WdNameKeyboard.xaml.cs new file mode 100644 index 0000000..37ed2df --- /dev/null +++ b/Project.FLY.ControlLibrary/FLY.ControlLibrary/UI.OSK/WdNameKeyboard.xaml.cs @@ -0,0 +1,132 @@ +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(); + } + } + +} -- 2.18.1