WPF TextBox/TextBlock 文本超出显示时,文本靠右显示
文本框显示
文本框正常显示:
文本框超出区域显示:
实现方案
判断文本框是否超出区域
请见《TextBlock IsTextTrimmed 判断文本是否超出》
设置文本布局显示
1. FlowDirection
当文本超出显示区域时,设置FlowDirection靠右显示
下面是封装的附加属性ScrollEndWhenTextTrimmed
1 /// <summary> 2 /// 当文本超出显示时,文本是否靠右侧显示 3 /// </summary> 4 public static readonly DependencyProperty ScrollEndWhenTextTrimmedProperty = DependencyProperty.RegisterAttached( 5 "ScrollEndWhenTextTrimmed", typeof(bool), typeof(TextBoxHelper), 6 new PropertyMetadata(default(bool), OnScrollEndWhenTextTrimmedChanged)); 7 8 private static void OnScrollEndWhenTextTrimmedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 9 { 10 var textBox = (TextBox)d; 11 textBox.TextChanged -= TextBoxOnTextChanged; 12 if ((bool)e.NewValue) 13 { 14 textBox.FlowDirection = IsTextTrimmed(textBox) ? FlowDirection.RightToLeft : FlowDirection.LeftToRight; 15 textBox.TextChanged += TextBoxOnTextChanged; 16 } 17 void TextBoxOnTextChanged(object sender, TextChangedEventArgs args) 18 { 19 textBox.FlowDirection = IsTextTrimmed(textBox) ? FlowDirection.RightToLeft : FlowDirection.LeftToRight; 20 } 21 } 22 23 public static void SetScrollEndWhenTextTrimmed(DependencyObject element, bool value) 24 { 25 element.SetValue(ScrollEndWhenTextTrimmedProperty, value); 26 } 27 28 public static bool GetScrollEndWhenTextTrimmed(DependencyObject element) 29 { 30 return (bool)element.GetValue(ScrollEndWhenTextTrimmedProperty); 31 }
在需要设置文本超出时居右显示的TextBox控件中,添加附加属性ScrollEndWhenTextTrimmed即可。
2.ScrollToEnd
类似方案FlowDirection,文本超出时,通过滚动到文本末尾后,文本靠右显示。
如方案FlowDirection,可以在添加附加属性更改事件中,订阅TextBox的TextChanged。
1 textBox.SelectionStart = textBox.Text.Length; 2 textBox.ScrollToEnd();
But,此方案有缺陷。当TextBox设置IsEnabled=false时,就无法滚动到了。即使如下设置依然无效:
1 textBox.IsEnabled = true; 2 textBox.SelectionStart = textBox.Text.Length; 3 textBox.ScrollToEnd(); 4 textBox.IsEnabled = false;
当然,如果文本框不设置IsEnabled时,此方案是可行的。
注:如上方案,本来通过SelectionStart直接绑定TextBox自身的Text.Length就行。然而SelectionStart不是依赖属性,只能直接赋值~
转载于:https://www.cnblogs.com/kybs0/p/9338049.html
WPF TextBox/TextBlock 文本超出显示时,文本靠右显示相关推荐
- 安卓超过两行就加省略号_CSS文本超出2行就隐藏并且显示省略号
超出一行隐藏: overflow:hidden; //超出的文本隐藏 text-overflow:ellipsis; //溢出用省略号显示 white-space:nowrap; //溢出不换行 但是 ...
- win7文件夹中的图片使用“XX图标”查看模式显示时,无法正常显示图片缩略图
win7文件夹中的图片使用"XX图标"查看模式显示时,无法正常显示图片缩略图 系统: win7 详细症状描述: 进入含有图片的文件夹,选择"查看"菜单栏中的&q ...
- CSS文本超出2行就隐藏并且显示省略号
超出一行隐藏: overflow:hidden; //超出的文本隐藏 text-overflow:ellipsis; //溢出用省略号显示 white-space:nowrap; //溢出不换行 但是 ...
- css 文本超出2行就隐藏并且显示省略号
今天做东西,遇到了这个问题,百度后总结得到了这个结果. 首先,要知道css的三条属性. overflow:hidden; //超出的文本隐藏 text-overflow:ellipsis; //溢出用 ...
- Java写记事本:文本超出范围时实现滚动条功能
问题背景 本次Java课程的作业是做一个记事本,能够实现记事本的基本功能,如图所示 问题描述 想要实现内容超出文本框范围时,自动添加垂直滚动条和横向自适应. 添加了JScrollPane scroll ...
- android中Textview 和图片同时显示时,文字省略号显示,图片自动靠到右边
很纠结的一个标题,实在是不知道怎么去描述这个现象. 上图片吧,先看看需求是什么样的. 1.需求: 视频与票的图标跟在标题后面显示,当标题过长时icon显示到省略号-后(textview省略号显示, ...
- js实现图片不能显示时使用替换图片显示
2019独角兽企业重金招聘Python工程师标准>>> 解决方案:使用img标签的onerror属性来处理默认图片,示例如下: <html> <head> & ...
- CSS文字超出部分用省略号代替,js鼠标悬停时显示全部文本
需求: 宽度为百分比,随浏览器变化而变化,当窗口变小到一定程度,文字超出部分用省略号代替,当文字出现省略号,需要鼠标悬停时显示全部文本. 文字超出部分用省略号代替 width:overflow: hi ...
- css 超出文字头尾相接滚动_【转载】CSS3 ——文本超出设置 超出显示...与跑马灯效果...
桌面平台的开发中,内容超出设定区域的大小时,我们常用的操作有三种,一个是显示,一个是隐藏,一个是出现滚动条. 在手机平台的开发中,我们常用的操作也有三种,第一是隐藏,第二是显示"...&qu ...
- CSS控制文本超出打点显示
CSS控制文本超出打点显示 1 单行文本过长打点 2 多行文本打点显示 3 涉及的属性 3.1 white-space 3.2 text-overflow 1 单行文本过长打点 只有1行文本时,需要满 ...
最新文章
- JavaScript字符串数组拼接的性能测试及优化方法
- 哪个websocket库与Node.js一起使用? [关闭]
- 标准化工作导则2020_最新版 GB/T 1.12020 标准化工作导则 第 1 部分:标准化文件的结构和起草规则标准解读...
- keras从入门到放弃(十八)批量标准化
- pytorch修改tensor数据类型
- 设计模式 - 访问者模式
- 叫板抖音,运营商入局短视频
- 解析库之——beautifulsoup
- atitit.错误:找不到或无法加载主类 的解决 v4 qa15.doc
- vue数组转对象、JSON数据处理
- 软件验收报告文档模版
- chrome弱网_弱网测试参考
- Lottie动画的优劣及原理
- ipv4和ipv6地址长度
- 【React】unmountComponentAtNode卸载组件
- 一、DC DC电源转换电路设计
- 计算机连共享盘被禁止用户,共享文件夹无法访问、设置文件夹访问权限、共享文件夹拒绝访问的解决方法...
- PowerDesigner 16逆向工程,MySQL数据库的生成PDM物理数据模型文件
- ora-01722 无效数字_错误提示ORA-01722: 无效数字一例
- 并发编程后记_什么是后记? 它与我的打印机有什么关系?