附加属性的使用-调用虚拟键盘
来源:互联网 发布:ocr识别软件 编辑:程序博客网 时间:2024/05/18 03:25
在之前介绍过附加属性,但是附加属性该怎么样使用呢?这篇文章对上篇文章介绍的虚拟键盘进行一个封装。使它可以用在任意一个支持输入的控件上。
下面直接上代码(我们可以将这个附加属性,新放到一个文件中,
using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Runtime.InteropServices;using System.Text;using System.Threading.Tasks;using System.Windows;namespace VirtualKeyboard{ public class GetVirtualKeyboardHelper { protected GetVirtualKeyboardHelper() { ////do nothing } public static bool GetVirtualKeyboard(DependencyObject obj) { return (bool)obj.GetValue(VirtualKeyboardProperty); } public static void SetVirtualKeyboard(DependencyObject obj, bool value) { obj.SetValue(VirtualKeyboardProperty, value); } // Using a DependencyProperty as the backing store for VirtualKeyboard. This enables animation, styling, binding, etc... public static readonly DependencyProperty VirtualKeyboardProperty = DependencyProperty.RegisterAttached("VirtualKeyboard", typeof(bool), typeof(GetVirtualKeyboardHelper), new PropertyMetadata(false, OnPropertyChanged)); private static void OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var element = d as UIElement; if (element != null) { //触摸时触发 element.TouchDown += ElementTouchDown; element.LostFocus += ElementLostFocus; } } private static void ElementTouchDown(object sender, RoutedEventArgs e) { try { StringBuilder sb = new StringBuilder(); string path = "\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe"; var file = Environment.GetEnvironmentVariable("SystemRoot"); var s = file.Split('\\'); for (int i = 0; i < s.Length - 1; i++) { sb.Append(s[i]); } sb.Append(path); if (!System.IO.File.Exists(sb.ToString())) return; Process.Start(sb.ToString()); } catch (Exception) { //nothing } } private const Int32 WM_SYSCOMMAND = 274; private const UInt32 SC_CLOSE = 61536; [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] private static extern bool PostMessage(IntPtr hWnd, int Msg, uint wParam, uint lParam); [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)] private static extern IntPtr FindWindow(string lpClassName, string lpWindowName); private static void ElementLostFocus(object sender, RoutedEventArgs e) { IntPtr touchhWnd = IntPtr.Zero; touchhWnd = FindWindow("IPTip_Main_Window", null); if (touchhWnd == IntPtr.Zero) return; PostMessage(touchhWnd, WM_SYSCOMMAND, SC_CLOSE, 0); } }}
那么这个附加属性该怎么使用呢?还是直接上代码
<TextBox Margin="5,5,5,5" Name="textBox" local:GetVirtualKeyboardHelper.VirtualKeyboard="True" ></TextBox>
此时当我们点击这个textBox就会调用处虚拟键盘
本文标题:附加属性的使用-调用虚拟键盘
文章作者:huangruifeng
发布时间:2017年11月29日 - 17:11
最后更新:2017年11月29日 - 17:11
原始链接
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。
阅读全文
0 0
- 附加属性的使用-调用虚拟键盘
- 易企cms附加属性的调用
- cocos2d调用虚拟键盘
- QT虚拟键盘中拼音输入法的使用
- c#调用windows虚拟键盘
- air调用windows自带的虚拟键盘
- iOS之UITextView的使用——通过虚拟键盘的工具条关闭虚拟键盘
- WPF中使用cs代码设置附加属性的方式
- 键盘的虚拟健
- 虚拟键盘的设置
- android虚拟键盘InputMethodManager使用
- qt如何使用虚拟键盘
- Qt:5.7虚拟键盘中拼音输入法的使用
- Qt:5.7虚拟键盘中拼音输入法的使用
- 依赖属性和附加属性的自定义
- Silverlight的依赖属性与附加属性
- Silverlight的依赖属性与附加属性
- Silverlight的依赖属性与附加属性
- 《抬头看看路吧》
- map的insert和[]重载下标
- Cleaning Shifts(POJ 2376, 贪心)
- OpenStack-M版(Mitaka)搭建基于(Centos7.2)+++九、Openstack配置仪表板(Dashboard)
- Ubuntu 14.04.1 for ROS(indigo) by ExBot iso 发行版
- 附加属性的使用-调用虚拟键盘
- caffe的python接口下,数据层的定义,均值文件的转化
- APP启动时白屏时间过长问题的优化
- asp.net用户注册的与密码强度相关的问题。
- HDOJ 2504 又见GCD
- AE 2015 轨道遮罩在哪?
- 主成分分析PCA之协方差矩阵的理解
- 思科认证入门级课程介绍(二)
- 最长公共子序列(dp动态规划)