UpdateSourceTrigger=PropertyChanged 和转换器

2024-01-28

我有一个简单的Converter将“+”符号添加到输入的正数中TextBox。当输入号码时,我想启动一些操作,但我不想等到TextBox失去焦点:我想在用户输入文本时立即更新绑定。

a 的默认行为TextBox是当用户离开该框时,绑定源会更新(UpdateSourceTrigger=LostFocus)。在这种情况下,我的转换器按预期工作,并且添加了+。但是,当我将其更改为以下内容时,+ 是never added.

<TextBox Text="{Binding Value, Converter={StaticResource PlusConverter}, UpdateSourceTrigger=PropertyChanged}" />

我可以想象我的 converter.Convert() 方法没有被调用是有充分理由的。我希望有以下行为:

  1. 当用户输入文本时,源会立即更新
  2. 当。。。的时候TextBox失去焦点,+ 被添加。

现在我正在寻找一种很好的但特别通用的方法来执行此操作(因为我的应用程序中有很多这样的文本框)。 到目前为止我还没能想出一个合适的解决方案。


同意 Kent B,您需要发布您的转换器代码。

我已经能够让第 1 部分与一个简单的转换器一起使用(我正在绑定第二个未转换的 TextBlock 以显示该值确实正在更新)。

然而,如果我理解你的第二部分,你就会试图得到TextBox的文本在失去焦点后用“+”更新。这有点棘手,我认为仅使用 IConverter 无法做到这一点。如果可以的话,我也很想知道答案。

您本质上要求的是带水印的输入行为,例如允许用户输入一些数据,并使其格式正确(在底层 DataBinding 和 UI 中)。最快/最肮脏的解决方案是处理文本框的 LostFocus,但由于您在整个应用程序中都使用它,因此这可能不可行。

您还可以考虑将 TextBox 包装在您自己的 UserControl 中。如果您查看 WPFToolkit 的 DatePicker 实现,它具有类似的行为:允许用户输入自由格式文本,然后将值自动转换为 DateTime(如果有效)并以本地化格式显示 DateTime。

HTH.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UpdateSourceTrigger=PropertyChanged 和转换器 的相关文章

  • 异常堆栈跟踪不显示抛出异常的位置

    通常 当我抛出异常 捕获它并打印出堆栈跟踪时 我会看到抛出异常的调用 导致该异常的调用 导致该异常的调用that 依此类推回到整个程序的根 现在它只向我显示异常所在的调用caught 而不是它所在的地方thrown 我不明白是什么改变导致了
  • 带有运算符语法的错误消息,但不带有函数语法的错误消息

    为什么我在调用 unary 时收到错误消息 使用运算符语法 如果我用函数语法调用它就可以了 现场演示 https godbolt org z j7AbeQ template
  • 为什么需要数字后缀?

    C 语言 我确信还有其他语言 需要在数字文字末尾添加后缀 这些后缀指示文字的类型 例如 5m是一个小数 5f是一个浮点数 我的问题是 这些后缀真的有必要吗 或者是否可以从上下文中推断出文字的类型 例如 代码decimal d 5 0应该推断
  • 有什么方法可以重载 C# 中的扩展方法吗?

    我有以下模型模式 public abstract class PARENTCLASS public class CHILD A CLASS PARENTCLASS public static class EXTENSION public s
  • 在 C# 中何时使用 ArrayList 而不是 array[]?

    我经常使用一个ArrayList而不是 正常 array 当我使用时 我感觉好像我在作弊 或懒惰 ArrayList 什么时候可以使用ArrayList在数组上 数组是强类型的 并且可以很好地用作参数 如果您知道集合的长度并且它是固定的 则
  • Resharper:IEnumerable 的可能多重枚举

    我正在使用新的 Resharper 版本 6 在我的代码中的几个地方 它给一些文本加了下划线 并警告我可能存在IEnumerable 可能的多重枚举 我理解这意味着什么 并在适当的情况下采纳了建议 但在某些情况下 我不确定这实际上是一个大问
  • Control.Focus() 和 FocusManager.SetFocusedElement() 之间的区别

    从字面上看 我想知道这一点 在某些情况下 Focus 看起来比 SetFocusedElement 更好 但另一种情况 则是逆转 所以我必须知道那里有什么不同的东西 另外 根据 MSDN Focus 用于键盘焦点 SetFocusedEle
  • 如何在 C# 中获取 Json 数组?

    我有一个像这样的 Json 字符串 我想将它加载到 C 数组中 当我尝试这样做时 我收到异常 我的字符串 customerInformation customerId 123 CustomerName Age 39 Gender Male
  • 将错误代码映射到 C++ 中的字符串

    将错误代码从枚举映射到字符串的更有效方法是什么 在 C 中 例如 现在我正在做这样的事情 std string ErrorCodeToString enum errorCode switch errorCode case ERROR ONE
  • ALTER TABLE ... ADD CONSTRAINT 失败时将事务回滚到保存点

    有没有办法在事务中添加检查约束and如果失败回滚到以前的保存点 而不是回滚整个事务 就我而言 当 ALTER TABLE ADD CONSTRAINT 命令失败时 事务无法回滚到保存点 尝试这样做会引发 InvalidOperationEx
  • 为什么 f(i = -1, i = -1) 是未定义的行为?

    我正在读关于违反评估顺序 http en cppreference com w cpp language eval order 他们举了一个令我困惑的例子 1 如果标量对象上的副作用相对于同一标量对象上的另一个副作用是无序的 则行为未定义
  • 如何在dll级别读取app.config? [复制]

    这个问题在这里已经有答案了 我在一个解决方案中有一个控制台应用程序项目和库项目 dll The 图书馆项目有 app config 文件 我在其中存储我在库中使用的一些键值对 控制台应用程序引用此 dll 我有另一个 app config
  • 在哪里可以下载没有 Visual Studio 2010 的 C# 4.0 编译器?

    我知道 CTP VS 2010 映像 但我可以只下载 NET Framework 4 0 和 C 编译器吗 AFAIK VS 2010 CTP 仅作为 VM 映像提供 我不相信 Microsoft 发布了 VS 的安装程序 其中一个绝对不适
  • Linq.Select() 中的嵌套表达式方法调用

    I use Select i gt new T 每次手动点击数据库后将我的实体对象转换为 DTO 对象 以下是一些示例实体和 DTOS 用户实体 public partial class User public int Id get set
  • 如何将 int 作为“void *”传递给线程启动函数?

    我最初有一个用于斐波那契变量数组的全局变量 但发现这是不允许的 我需要进行基本的多线程处理并处理竞争条件 但我无法在 pthread 创建中将 int 作为 void 参数提供 我尝试过使用常量指针 但没有成功 由于某些奇怪的原因 void
  • “必须声明标量变量”错误[重复]

    这个问题在这里已经有答案了 必须声明标量变量 Id SqlConnection con new SqlConnection connectionstring con Open SqlCommand cmd new SqlCommand cm
  • 无法识别解决方案文件夹中的 Visual Studio 2017 Nuget.config

    我在使用 Visual Studio 2017 时遇到问题 新的解决方案不断引用 C Users yopa AppData Roaming NuGet Nuget config 中意外位置的 Nuget config 文件 我已将 nuge
  • 将 Swagger 与命名空间版本的 WebApi 结合使用

    我已经找到了如何使用基于名称空间的 WebAPI 版本这个班 https aspnet codeplex com SourceControl changeset view dd207952fa86 Samples WebApi Namesp
  • 使用 C# 动态创建按钮并按预定义的顺序放置它们

    NET 4 5 C 创建 Windows 窗体 我想动态创建和添加按钮并为其分配单击事件 但希望它们以特定的方式动态放置 就像图像一样 我的问题是如何以上述方式动态放置按钮 即 4x4 格式 一行 4 个按钮 4 列 但行数不受限制 是否可
  • 调试VS 2005提示“操作不支持”

    我一直在调试 VS 2005 并将 启动外部程序 设置为 C Program Files Microsoft Visual Studio 10 0 Common7 IDE devenv exe 但按 F5 后出现此错误 尝试运行项目时出错

随机推荐

  • 使用 Naudio 将 MP3 文件转换为 WAV 文件时遇到问题

    瑙迪奥图书馆 http naudio codeplex com http naudio codeplex com 我正在尝试将 MP3 文件转换为 WAV 文件 但遇到了一个小错误 我知道出了什么问题 但我真的不知道如何解决它 这是我正在运
  • _GLIBCXX_USE_CXX11_ABI、GCC 4.8 和 ABI 兼容性

    我们收到了一些为 Linux 编译的库 a 可能是用 GCC 6 x 编译的 我们使用的是 GCC 4 8 并且收到以下类型的错误 undefined reference to std cxx11 basic string当尝试链接时 通常
  • PHP 邮件停止工作

    前几天使用的时候mail 我让它工作了 但现在不行了 而且我不知道问题是什么 to email protected cdn cgi l email protection subject the subject message hello h
  • 如何获取 JSON 对象数组中所有子节点的 JSONPath?

    如何获取对象所有子节点的 JSONPath E g var data key1 children key2 value key3 value key4 key2 value key3 value key4 key5 value key1 c
  • 使用 numpy 处理 exp 溢出

    使用 numpy 我有一个函数的定义 def powellBadlyScaled X f1 10 4 X 0 X 1 1 f2 numpy exp numpy float X 0 numpy exp numpy float X 1 1 00
  • 检查文件是否存在(由命令行参数给出)

    我需要一个使用unix环境的C程序 我已经购买了 Unix环境下的高级编程 一书 到目前为止它已经帮了我很大的忙 然而 我的一些问题没有得到解答 我正在寻求一些帮助 我正在尝试编写一个程序 可以验证是否存在复制程序时输入的第一个和第二个参数
  • readstream 管道未关闭

    我正在使用 sax js 读取大型 xml 文件 解析器完成后我无法让程序退出 这是脚本的形状 删除了解析器逻辑 var fs require fs var sax require sax var feedFile foo xml var
  • Google Cloud Endpoints 链接 iOS 客户端问题

    这个问题的产生是因为我不完全理解iOS中的静态库 而且谷歌的文档似乎有点稀疏 我正在尝试将 Google Cloud Endpoints 用于我的移动后端 我为我的客户端库生成 m 和 h 文件 然后我创建了一个新项目 OwnItApi 将
  • 将 fscanf 转换为 C 中的二维数组

    我想将 txt 中的元素扫描到数组中 txt 没有我将有多少行或列 它只包含一个坐标和数组的元素 它看起来像这样 2 3 2 1 3 0 我怎样才能将这些数字放入一个数组中 以便array 0 0 将2 and array 1 0 将3 e
  • 在 Crypto++ 中使用原始 RSA 算法加密和解密消息?

    我在用Crypto http git github com weidai11 cryptopp git密码学相关作品的图书馆 任务的子部分是加密和解密文本 该消息的长度最多为 256 个字符 包含字母数字 空格 点和特殊字符 这段代码适用于
  • WPF - 使用视频作为背景

    我想知道是否可以在 WPF 中使用视频作为背景 我的意思是 我希望在后台播放视频 并在其顶部添加控件 如果你还是不太明白我的意思 你应该看看这个网站 http www barrelny com recap 2012 http www bar
  • Laravel 数据透视表具有多列,需要稍后插入

    我有两张桌子routes and stations和一个数据透视表route station 详见表格 路线表 id number code 车站表 id name code 路线站表 枢轴 id route id station id n
  • 如何解析javadoc? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在使用 Java 阅读 javadocs 我的java对象有属性 描述 包裹名字 方法名称 方法描
  • 回显 jpassword 字符一次然后隐藏它

    在我的 swing 应用程序中 我想回显 jpassword 字段字符一段时间 1 秒 然后再次隐藏它 我想在用户输入字符后逐个字符地执行此操作 当用户输入字符时 显示它 然后隐藏它 然后对于所有输入字符重复此操作 有人可以告诉我这是否可能
  • XSLT 运行速度太慢

    我有大约 100 个 XML 文件 我想将它们转换为另一个具有更好结构的文件 本示例将其转换为 CSV 但我还有一个变体 可以将其转换为更好的 XML 格式与我无关 我看到有很多这样的问题 但我发现这些例子很难适应 因为问题不是样式表不起作
  • 在 Flutter 中,如何在本机文件资源管理器中为用户打开文件夹,以便用户可以浏览其文件/文件夹

    我正在 flutter 中构建一个文件储物柜应用程序 它可以锁定文件和文件夹 当用户解锁文件夹时 我希望我的应用程序显示一个在本机文件资源管理器中查看文件夹内容的选项 有什么办法可以实现这个功能吗 提前致谢 您可以针对您提到的用例尝试此包
  • 在具有特定约束的滚动视图中显示图像(使用自动布局)

    我想在视图控制器中显示标题和图像下方 我的限制是 标签可以位于屏幕顶部 50 像素处 标签可以有一行或多行 图像可以位于我的标签的 50 像素处 图像必须具有屏幕的宽度 滚动视图必须根据所有这些元素的大小进行滚动 我有一个带有滚动视图的视图
  • 在java中读取Zip文件内容而不解压

    我有 byte zipFileAsByteArray This zip file has rootDir Folder1 first txt Folder2 second txt PictureFolder image png 我需要的是获
  • END事务和COMMIT事务的区别

    我正在尝试使用 java 来模拟数据库恢复子系统 但是 我有以下问题 每当发出开始交易时 是否总是需要有一个结束交易 就像下面的例子 b1 Begin txn 1 r1 X Read item X using txn 1 e1 End tx
  • UpdateSourceTrigger=PropertyChanged 和转换器

    我有一个简单的Converter将 符号添加到输入的正数中TextBox 当输入号码时 我想启动一些操作 但我不想等到TextBox失去焦点 我想在用户输入文本时立即更新绑定 a 的默认行为TextBox是当用户离开该框时 绑定源会更新 U