使用 KeyBinding 实现文本框回车提交

文本框的回车提交是一个很常见的需求:在一个复杂的筛选页面上,用户希望在输入框输入文字后直接回车即可触发查询,而不是非得点击一下搜索按钮。假设需要在用户输入回车时触发 TestCommand 命令,则对应的实现代码如下:

<TextBox><TextBox.InputBindings><KeyBinding Command="{Binding TestCommand}" Key="Return"></KeyBinding></TextBox.InputBindings>
</TextBox>

属性优先级问题导致的 DataTrigger 不生效

这是一个新手特别容易犯的一个错误。

在下面的代码中我希望实现的效果是:一个文本框,如果用户未输入任何内容则展示边框,一旦用户有输入,则将边框隐藏。

<TextBox BorderThickness="0" x:Name="TestTextBox"><TextBox.Style><Style TargetType="TextBox"><Style.Triggers><DataTrigger Binding="{Binding Text.Length,ElementName=TestTextBox}" Value="0"><Setter Property="BorderThickness" Value="1" /></DataTrigger></Style.Triggers>
</Style></TextBox.Style>
</TextBox>

但程序运行后结果并不符合预期:边框一直没有出现。

这个问题的出现是因为 BorderThickness 被直接定义在了有更高优先级的 TextBox 标签上,该操作覆盖了 DataTrigger 的行为。

问题的解决方式也很简单:将 BorderThickness 的设置移入 Style 标签即可。

<TextBox  x:Name="TestTextBox"><TextBox.Style><Style TargetType="TextBox"><Setter Property="BorderThickness" Value="0" /><Style.Triggers><DataTrigger Binding="{Binding Text.Length,ElementName=TestTextBox}" Value="0"><Setter Property="BorderThickness" Value="1" /></DataTrigger></Style.Triggers>
</Style></TextBox.Style>
</TextBox>

图片源为空时展示默认图片

列表中展示缩略图也是很常见的需求。在信息管理系统中,不能保证所有信息都包含缩略图。在没有包含特定缩略图时,需要展示默认缩略图。

<Image><Image.Source><Binding Path="ImageUri" ><Binding.TargetNullValue><ImageSource>/Assets/PlaceHolder.png</ImageSource></Binding.TargetNullValue></Binding></Image.Source>
</Image>

WPF学习笔记(二):初学者避坑实录相关推荐

  1. wpf学习笔记二 深入学习 xaml

    1.XAML 主要用于绘制UI界面,最大的优点是能使UI与运行逻辑分离开来,使得整个程序回到逻辑处理上来. 每一个标签对应.NET Framework类库的一个控件类.通过设置标签的Attribute ...

  2. [WPF]学习笔记二---主窗体

    昨晚上简单的化了下界面.现在还比较简陋. 单击事件的参用的有问题, 使用了页面引用. XAML <Windowxmlns="http://schemas.microsoft.com/w ...

  3. 深度强化学习笔记(二)——Q-learning学习与二维寻路demo实现

    深度强化学习笔记(二)--Q-learning学习与二维寻路demo实现 文章目录 深度强化学习笔记(二)--Q-learning学习与二维寻路demo实现 前言 理论 什么是Q-Learning 算 ...

  4. wxpython应用程序对象与顶级窗口_wxPython学习笔记(二)

    如何创建和使用一个应用程序对象? 任何wxPython应用程序都需要一个应用程序对象.这个应用程序对象必须是类wx.App或其定制的子类的一个实例.应用程序对象的主要目的是管理幕后的主事件循环. 父类 ...

  5. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...

  6. [转载]dorado学习笔记(二)

    原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...

  7. PyTorch学习笔记(二)——回归

    PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...

  8. tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数

    tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报  分类: tensorflow(4)  目录(?)[+] 本笔记目的 ...

  9. Scapy学习笔记二

    Scapy学习笔记二 Scapy Sniffer的用法: http://blog.csdn.net/qwertyupoiuytr/article/details/54670489 Scapy Snif ...

最新文章

  1. 程序员拯救乐坛?OpenAI用“逆天”GPT2.0搞了个AI音乐生成器
  2. 成都地震了[原创]不断更新
  3. java 空格乱码_java 中文乱码以及空格乱码解决方案总结
  4. boost::log::expressions::has_attr用法的测试程序
  5. TPU和GPU跑模型时间统计(持续更新中)以及TPU Research Cloud的申请
  6. MongoDB最简单的入门教程之一 环境搭建
  7. 如何设计通用的回调机制
  8. windows下mysql+apache+php配置
  9. 2021如何运行带flash的html,2021年Flash被禁用后继续使用的方法
  10. 2022百度之星第一场初赛
  11. esp8266教程:网络基础知识
  12. 可以拍c语言答案的软件下载,c语言二级考试题库app下载-C语言二级考试题库 安卓版v2.3-PC6安卓网...
  13. java 无法显示打印页面_使用打印机打印网页时出现的脚本错误的办法
  14. 测试显示器分辨率和尺寸
  15. java 调用felix_使用eclipse开发felix的OSGI插件
  16. 第一部分——交错(拉丝)(Interlace)的产生
  17. Typora基本使用Markdown基本语法:精炼且详细
  18. PHP基本语法--php基础最详细教程
  19. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java体育运动兴趣社区系统8bisy
  20. Swift - 使用原生库进行 JSON 解析和生成

热门文章

  1. SQL Server 2008如何导出带数据的脚本文件
  2. 帆软报表(finereport)使用Event 事件对象 (target)修改提示框样式
  3. [HDU517] 小奇的集合
  4. k64 datasheet学习笔记12---System Integration Module (SIM)
  5. 大型网站技术架构:核心原理与案例分析笔记
  6. ABAP的自学之路 ,初步认识ABAP 一
  7. Android系统的体系结构、开发语言及源码结构
  8. Teams Bot开发系列:Activity和Turn
  9. php 执行文件tar打包,利用tar for windows对大量文件进行快速打包
  10. matlab胡良剑第五章,MATLAB习题参考答案(胡良剑,孙晓君)