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(); } } }