封装:WPF中可以绑定的BindPassWord控件
一、目的:本身自带的PassWord不支持绑定
二、Xaml部分
-
<UserControl x:Class="HeBianGu.General.WpfControlLib.BindPassWordBox"
-
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"
-
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-
xmlns:local="clr-namespace:HeBianGu.General.WpfControlLib"
-
mc:Ignorable="d"
-
d:DesignHeight="50" d:DesignWidth="300">
-
<Grid>
-
<PasswordBox x:Name="pb_center" PasswordChanged="pb_center_PasswordChanged" />
-
</Grid>
-
</UserControl>
三、代码部分
-
/// <summary> 可以绑定的密码框 </summary>
-
public partial class BindPassWordBox : UserControl
-
{
-
PasswordBox _password = null;
-
-
private void pb_center_PasswordChanged(object sender, RoutedEventArgs e)
-
{
-
this.PassWord = this._password.Password;
-
}
-
-
-
public BindPassWordBox()
-
{
-
InitializeComponent();
-
}
-
-
public string PassWord
-
{
-
get { return (string)GetValue(PassWordProperty); }
-
set { SetValue(PassWordProperty, value); }
-
}
-
-
// Using a DependencyProperty as the backing store for MyProperty. This enables animation, styling, binding, etc...
-
public static readonly DependencyProperty PassWordProperty =
-
DependencyProperty.Register("PassWord", typeof(string), typeof(BindPassWordBox), new PropertyMetadata(default(string), (d, e) =>
-
{
-
BindPassWordBox control = d as BindPassWordBox;
-
-
if (control == null) return;
-
-
string config = e.NewValue as string;
-
-
if (control._password == null) return;
-
-
control._password.Password = config;
-
-
SetPasswordBoxSelection(control._password, config.Length, 0);
-
}));
-
-
-
private static void SetPasswordBoxSelection(PasswordBox passwordBox, int start, int length)
-
{
-
var select = passwordBox.GetType().GetMethod("Select",
-
BindingFlags.Instance | BindingFlags.NonPublic);
-
-
select.Invoke(passwordBox, new object[] { start, length });
-
}
-
}
四、原理
封装一层PassWordBox控件,自定义依赖属性,在PassWordBox的Changed事件中赋值依赖属性
SetPasswordBoxSelection(control._password, config.Length, 0);
此方法用来设置光标,否则输入后光标位置不正确
封装:WPF中可以绑定的BindPassWord控件的更多相关文章
- WPF中不规则窗体与WindowsFormsHost控件的兼容问题完美解决方案
首先先得瑟一下,有关WPF中不规则窗体与WindowsFormsHost控件不兼容的问题,网上给出的解决方案不能满足所有的情况,是有特定条件的,比如 WPF中不规则窗体与WebBrowser控件的兼 ...
- WPF中不规则窗体与WebBrowser控件的兼容问题解决办法
原文:WPF中不规则窗体与WebBrowser控件的兼容问题解决办法 引言 这几天受委托开发一个网络电视项目,要求初步先使用内嵌网页形式实现视频播放和选单,以后再考虑将网页中的所有功能整合进桌面程序. ...
- WPF 中动态创建和删除控件
原文:WPF 中动态创建和删除控件 动态创建控件 1.容器控件.RegisterName("Name",要注册的控件) //注册控件 2.容器控件.FindName(" ...
- WPF 将数据源绑定到TreeView控件出现界面卡死的情况
首先来谈一下实现将自定义的类TreeMode绑定到TreeView控件上的一个基本的思路,由于每一个节点都要包含很多自定义的一些属性信息,因此我们需要将该类TreeMode进行封装,TreeView的 ...
- WPF 中动态创建、删除控件,注册控件名字,根据名字查找控件
动态创建控件 1.容器控件.RegisterName("Name",要注册的控件) //注册控件 2.容器控件.FindName("Name") as 控 ...
- WPF中增加Month Calendar月历控件
XAML代码:(这里使用了codeproject.com网站上的一个Dll,你可以在这里下载它:http://www.codeproject.com/cs/miscctrl/MonthCalendar ...
- WPF中实现多选ComboBox控件
在WPF中实现带CheckBox的ComboBox控件,让ComboBox控件可以支持多选. 将ComboBox的ItemsSource属性Binding到一个Book的集合, public clas ...
- 在WPF中的Canvas上实现控件的拖动、缩放
如题,项目中需要实现使用鼠标拖动.缩放一个矩形框,WPF中没有现成的,那就自己造一个轮子:) 造轮子前先看看Windows自带的画图工具中是怎样做的,如下图: 在被拖动的矩形框四周有9个小框,可以从不 ...
- WPF中Expander的用法和控件模板详解
一.Expander的用法 在WPF中,Expander是一个很实用的复合控件,可以很方便的实现下拉菜单和导航栏等功能.先介绍简单的用法,而后分析他的控件模板. <Window.Resource ...
随机推荐
- Django框架(十三)--Django分页组件
一.分页器 数据量大的话,可以分页获取,查看 例如:图书管理中,如果有成千上万本书,要是都在一个页面中渲染出来,会影响页面美观,所以就要用分页器分页渲染 二.分页器的使用 基本写法 基本写法: 后端: ...
- PAT 乙级 1042.字符统计 C++/Java
题目来源 请编写程序,找出一段给定文字中出现最频繁的那个英文字母. 输入格式: 输入在一行中给出一个长度不超过 1000 的字符串.字符串由 ASCII 码表中任意可见字符及空格组成,至少包含 1 个 ...
- docker学习11-上传本地镜像到镜像仓库
前言 在本地自己制作用过镜像后,上传到镜像仓库,这样方便在不同的机器上快速搭建同一套环境. 如果公开的话,别人也可以用你的镜像快速搭建环境,类似于 GitHub 本地代码上传到代码仓库,再从仓库拉取代 ...
- vue - 基础(1)
Vue基本用法 在学习Vue的基本用法之前,我们先简单的了解一些es6的语法 let: 特点:1.局部作用域 2.不会存在变量提升 3.变量不能重复声明 const: 特点:1.局部作用域 2.不会存 ...
- 查看mysql连接数和状态
查看MySQL连接数 登录到MySQL命令行,使用如下命令可以查看当前处于连接未关闭状态的进程列表: show full processlist; 若不加上full选项,则最多显示100条记录. 若以 ...
- django admin 编辑页面(change page) 自定义字段, 展示数据
最近遇到一个需求, 需要在django 的 admin 编辑页内展示由用户上传的进行反馈的图片, 还要支持点击查看原图, 所以需要在编辑页内自定义 img 标签及 a 标签进行图片的展示及点击跳转 i ...
- hdu5285-wyh2000 and pupil-(染色法二分图判定)
http://acm.hdu.edu.cn/showproblem.php?pid=5285 题意:把互不认识的人分到两个组,第一组人数尽可能多. 题解:把互不认识的人连起来,当作二分图,二分图可能有 ...
- 07_LACP负载分担(数通华为)
1. 网络拓扑 2. SW1配置:[SW1]vlan batch 10 20[SW1]interface GigabitEthernet 0/0/1[SW1-GigabitEthernet0/0/1] ...
- 请简要描述margin重复问题,及解决方式
两个相邻的盒子垂直方向上的margin会发生重叠,取较大的那个值,而不是相加. 解决: 父级设置padding代替margin 父级设置overflow:hidden 当前元素设置透明的边框 使用绝对 ...
- ZROI 暑期高端峰会 A班 Day2 线性代数
高斯消元 很普及组,不讲了 当主元没有逆的时候可以辗转相除. 如果也没有带余数除法--没救了 逆矩阵 我们定义矩阵 \(A\) 的逆矩阵为 \(A^{-1}\),满足 \(AA^{-1}=A^{-1} ...