123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- using Caliburn.Micro;
- using MECF.Framework.Common.DataCenter;
- using MECF.Framework.UI.Client.CenterViews.Dialogs;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Input;
- namespace MECF.Framework.UI.Client.Themes.OceanBlue
- {
- public partial class TextBoxEx : ResourceDictionary
- {
- public bool EnablePopupKeyboard { get; set; } = true;
- public void OnClick(object sender, MouseButtonEventArgs e)
- {
- if (e.StylusDevice != null)
- {
- e.Handled = true;
- return;
- }
- if (sender is TextBox)
- {
- TextBox textBox = sender as TextBox;
- if (textBox.Tag != null && textBox.Tag.ToString().Contains("None"))
- {
- e.Handled = false;
- return;
- }
- else
- {
- e.Handled = true;
- }
- string strRet = Show(sender, textBox.Text);
- if (string.IsNullOrEmpty(strRet)) return;
- textBox.Text = strRet;
- }
- else if (sender is PasswordBox)
- {
- PasswordBox passwordBox = sender as PasswordBox;
- string strRet = Show(sender, passwordBox.Password);
- if (string.IsNullOrEmpty(strRet)) return;
- passwordBox.Password = strRet;
- }
- }
- public void TextBox_PreviewTouchDown(object sender, TouchEventArgs e)
- {
- if (sender is TextBox)
- {
- TextBox textBox = sender as TextBox;
- string strRet = Show(sender, textBox.Text);
- if (string.IsNullOrEmpty(strRet)) return;
- textBox.Text = strRet;
- }
- else if (sender is PasswordBox)
- {
- PasswordBox passwordBox = sender as PasswordBox;
- string strRet = Show(sender, passwordBox.Password);
- if (string.IsNullOrEmpty(strRet)) return;
- passwordBox.Password = strRet;
- }
- }
- public void OnLoaded(object sender, RoutedEventArgs e)
- {
- if (sender is TextBox)
- {
- TextBox textBox = sender as TextBox;
- if (QueryDataClient.Instance.Service.GetConfig($"System.EnablePopupKeyboard") != null)
- EnablePopupKeyboard = (bool)QueryDataClient.Instance.Service.GetConfig($"System.EnablePopupKeyboard");
- textBox.IsReadOnly = EnablePopupKeyboard;
- }
- }
- private string Show(object sender, string strDefaultValue)
- {
- Control control = sender as Control;
- string strRet = string.Empty;
- if (QueryDataClient.Instance.Service.GetConfig($"System.EnablePopupKeyboard") != null)
- EnablePopupKeyboard = (bool)QueryDataClient.Instance.Service.GetConfig($"System.EnablePopupKeyboard");
- if (!EnablePopupKeyboard) { return string.Empty; }
- if (control.Tag != null && control.Tag.ToString().Contains("Number"))
- {
- NumberKeyboard numberKeyboard = new NumberKeyboard("", strDefaultValue);
- if (control.Tag.ToString().Contains("SubPanel"))
- {
- numberKeyboard.WindowStartupLocation = WindowStartupLocation.CenterScreen;
- }
- else
- {
- if (control.Tag.ToString().Contains(":"))
- {
- var subTagArray = control.Tag.ToString().Split(':');
- if (subTagArray.Length > 1)
- {
- int keepDecimals = -1;
- if (int.TryParse(subTagArray[1], out keepDecimals))
- {
- if (keepDecimals != -1) numberKeyboard.KeepDecimals = keepDecimals;
- }
- }
- }
- var point = control.PointFromScreen(new Point(0, 0));
- double x = SystemParameters.WorkArea.Width;
- double y = SystemParameters.WorkArea.Height;
- if (-point.Y + control.ActualHeight + 5 + numberKeyboard.Height < y)
- {
- numberKeyboard.Top = -point.Y + control.ActualHeight + 5;
- }
- else
- {
- numberKeyboard.Top = -point.Y - numberKeyboard.Height - 5;
- }
- if (-point.X + numberKeyboard.Width < x)
- {
- numberKeyboard.Left = -point.X;
- }
- else
- {
- numberKeyboard.Left = -point.X - (numberKeyboard.Width - control.ActualWidth);
- }
- }
- if ((bool)numberKeyboard.ShowDialog()) strRet = numberKeyboard.ValueString;
- }
- else if (control.Tag != null && control.Tag.ToString().Contains("None"))
- {
- return string.Empty;
- }
- else if (control.Tag != null && control.Tag.ToString().Contains("NotClearFull"))
- {
- FullKeyboard fullKeyboard = new FullKeyboard("", strDefaultValue);
- fullKeyboard.IsFristClick = false;
- if (control.Tag != null && control.Tag.ToString().Contains("SubPanel"))
- {
- fullKeyboard.WindowStartupLocation = WindowStartupLocation.CenterScreen;
- }
- else
- {
- var point = control.PointFromScreen(new Point(0, 0));
- double x = SystemParameters.WorkArea.Width;
- double y = SystemParameters.WorkArea.Height;
- if (-point.Y + control.ActualHeight + 5 + fullKeyboard.Height < y)
- {
- fullKeyboard.Top = -point.Y + control.ActualHeight + 5;
- }
- else
- {
- fullKeyboard.Top = -point.Y - fullKeyboard.Height - 5;
- }
- if (-point.X + fullKeyboard.Width < x)
- {
- fullKeyboard.Left = -point.X;
- }
- else
- {
- fullKeyboard.Left = -point.X - (fullKeyboard.Width - control.ActualWidth);
- }
- }
- if ((bool)fullKeyboard.ShowDialog()) strRet = fullKeyboard.ValueString;
- return strRet;
- }
- else
- {
- FullKeyboard fullKeyboard = new FullKeyboard("", strDefaultValue);
- if (control.Tag != null && control.Tag.ToString().Contains("SubPanel"))
- {
- fullKeyboard.WindowStartupLocation = WindowStartupLocation.CenterScreen;
- }
- else
- {
- var point = control.PointFromScreen(new Point(0, 0));
- double x = SystemParameters.WorkArea.Width;
- double y = SystemParameters.WorkArea.Height;
- if (-point.Y + control.ActualHeight + 5 + fullKeyboard.Height < y)
- {
- fullKeyboard.Top = -point.Y + control.ActualHeight + 5;
- }
- else
- {
- fullKeyboard.Top = -point.Y - fullKeyboard.Height - 5;
- }
- if (-point.X + fullKeyboard.Width < x)
- {
- fullKeyboard.Left = -point.X;
- }
- else
- {
- fullKeyboard.Left = -point.X - (fullKeyboard.Width - control.ActualWidth);
- }
- }
- if ((bool)fullKeyboard.ShowDialog()) strRet = fullKeyboard.ValueString;
- }
- return strRet;
- }
- }
- }
|