WPF TextBox:如何将默认绑定模式更改为 OneWay?

2024-05-14

最初,我有以下代码:

<TextBox Text="{Binding LengthUnit, Mode=OneWay}" IsReadOnly="True" Background="{x:Static SystemColors.ControlBrush}" />

我知道我可以定义这样的样式:

<Style TargetType="{x:Type TextBox}" x:Key="readOnlyTextBox">
    <Setter Property="Background" Value="{x:Static SystemColors.ControlBrush}"></Setter>
    <Setter Property="IsReadOnly" Value="True"></Setter>
</Style>

这样我就可以写:

<TextBox Text="{Binding LengthUnit, Mode=OneWay}" Style="{StaticResource readOnlyTextBox}" />

由于该文本框是只读的,因此绑定模式不能是双向的。那么,是否可以将 OneWay 绑定设置为具有这种样式的 TextBox 的默认绑定?

编辑:我需要将绑定模式更改为 OneWay,因为我的属性是仅获取的,而不是因为我将 TextBox 标记为只读。但是,如果可能的话,我仍然想将文本框的默认绑定模式更改为 OneWay。


这是我按照您的建议编写的代码,但它不起作用。我错过了什么吗?

public class ReadOnlyTextBox : TextBox
{
    static ReadOnlyTextBox()
    {
        TextBox.TextProperty.OverrideMetadata(typeof(ReadOnlyTextBox), 
            new FrameworkPropertyMetadata() { BindsTwoWayByDefault = false, Journal = true, DefaultUpdateSourceTrigger = UpdateSourceTrigger.Explicit }); 
    }
    public ReadOnlyTextBox()
    {
        base.Background = SystemColors.ControlBrush;
        base.IsReadOnly = true;            
    }
}

由于该文本框是只读的,因此绑定模式不能是双向的。

为什么不? IsReadOnly 将阻止用户修改文本并从而修改属性。只需确保不要修改代码中的 Text 属性即可。

如果您对 TextBox 进行子类化,则可以阻止更新绑定属性。如果这样做,您可以覆盖 TextBox.Text 依赖属性元数据。

public class TextBoxEx : TextBox
{
    public TextBoxEx() : base() { }

    static TextBoxEx()
    {
        TextBox.TextProperty.OverrideMetadata(typeof(TextBoxEx), 
            new FrameworkPropertyMetadata() { BindsTwoWayByDefault = false, Journal = true,
                DefaultUpdateSourceTrigger = System.Windows.Data.UpdateSourceTrigger.Explicit });
    }

}

由于某些原因,将 BindsTwoWayByDefault 更改为 false 对我来说不起作用,但您可以将 DefaultUpdateSourceTrigger 设置为 Explicit,这意味着除非通过代码完成,否则不会更新绑定属性,从而有效地进行绑定 OneWay。

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

WPF TextBox:如何将默认绑定模式更改为 OneWay? 的相关文章

  • 列表元素之间的 Tab WPF

    我有一个列表框 其中每个项目都使用文本框表示 问题是我希望能够在移动到 xaml 窗口中的下一个元素之前在列表框中的所有项目之间进行切换 当前 和正常的 WPF 行为 是 当我按 Tab 键进入列表框时 第一个元素会突出显示 如果我再次按
  • 如何从 Access 数据库中读取“是/否”值作为布尔值?

    帮我找回YES NO来自 MS Access 的布尔格式数据类型 我尝试解析它 但它总是返回 false 更新 实际上不是问题抱歉 它确实接受 YES NO 作为布尔值 OleDbconnection dbConnect new OleDb
  • 能够在 WPF 网络浏览器中支持 Html5

    我的WPF浏览器不支持网页上的html5元素 我不知道如何实现对它的支持 我确实安装了 IE9 并且可以看到使用 IE 浏览的 html5 元素 非常感谢任何关于如何添加对 html5 支持的帮助 我实际上自己找到了解决方案 一切都在这个页
  • WPF 中的 IWin32Window

    我有一个 excel AddIn 它公开 IWin32Window 作为它的主 UI 我想显示一个使用它作为父窗口的 WPF 窗口 我该如何去做呢 您可以使用窗口互操作助手 http msdn microsoft com en us lib
  • Silverlight 4relativeSourceFindAncestor绑定[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions Silverlight 4中会有Re
  • 使用资源进行主题化,无需 Blend 呕吐

    WPF 的伟大之处在于 我应该能够在整个应用程序中使用 StaticResource MyBackground 而不是 White 然后通过更改资源定义重新定义整个应用程序的外观 问题是如果您在子控件中引用了全局资源 Expression
  • WPF DataGrid - 将 TimeSeries 与 MultiBinding 相结合,丢失更改通知。为什么?

    我有一个具有两个 ObservableCollection 的类 其中 TimeValue 是带有更改通知的自定义日期时间 值配对 通过 INotifyPropertyChanged 我将这些称为 目标 和 实际值 当我将它们绑定到图表时
  • MouseDoubleClick 事件不会冒泡

    我的场景经过简化 我有一个包含员工行的 ListView 在每个员工行中 都有 增加 和 减少 按钮来调整他的工资 假设在我的程序中 双击 员工 行意味着 解雇此人 The problem是当我快速单击 增加 时 这会触发 ListView
  • 如何提高Canvas渲染性能?

    我必须画很多Shape http msdn microsoft com en us library system windows shapes shape aspx 约 1 20 万 作为 Canvas 2 的子级 我在 WPF 应用程序中
  • 如何正确对齐 WPF GeometryGroup 中的路径?

    我正在使用一个GeometryGroup在圆的中心绘制一个符号 下面的示例显示了我在对此进行实验时的尝试之一 它具有从同一原点 32 32 出发的三条直线
  • OpenGL:顶点越多,性能越慢

    我正在开发一个程序的一部分 其中给定 xyz 坐标集合 制作 3D 模型 我已经完成了这张图片所需的所有功能 即平移 旋转 缩放 但是给出的 xyz 坐标越多 程序运行速度就越慢 我的程序在处理 29 000 个坐标时运行得非常流畅 但当我
  • 捕获多点触摸屏上的双击触摸

    我发布了另一个问题 如何通过监视 TouchDown 事件的触摸之间的时间跨度来 手动 捕获双击 但它有很多问题 有谁知道在多点触摸屏上捕获双击的标准 Microsoft 方式 事件 多谢 Dan 我检查了点击位置和秒表的组合 效果非常完美
  • 当 DataTable 为空时,DataGrid 显示空行

    我有一个DataGrid dg1 绑定到DataTable 数据集 表 代码运行良好并且DataGrid正在显示数据DataTable正确 但是 如果我Clear the DataTable the DataGrid也很清楚 但留下一个空行
  • 如何阻止 Control-I 在 CoreWindow 范围内的 UWP 文本框中插入选项卡?

    当我在 UWP 应用程序中有一个 TextBox 时 对我来说 奇怪的行为 在 Windows 10 中创建通用的空白应用程序 UWP 应用程序 使用以下代码将文本框添加到默认网格
  • 获取颜色位置的深度,Kinect SDK

    我正在寻找方法 尽快 从 Kinect 相机获取颜色像素的相应深度 我找到了 MapDepthFrameToColorFrame 函数 但这只给我特定深度位置的颜色 我想要相反的颜色 我想要这个的原因是我将能够单击 RGB 图像上的某个位置
  • 过滤项目来源

    通过此代码 我设置了数据网格的 ItemsSource 不过 我有更多的 wpf 控件来过滤数据网格 例如从时间范围过滤数据网格 我可以为此编写一个新查询 但这似乎没有必要 因为数据已经可用 我只需要过滤它 最好的方法是什么 我能得到的任何
  • ListView:在资源字典中定义ItemsPanelTemplate

    我有一个 ListView 其布局看起来像 Windows 资源管理器视图 图标 一些详细信息 绑定到 ViewModel 中某处的列表 我的目标是能够随时在资源管理器视图或经典视图之间切换 我可以定义一个ItemsPanelTemplat
  • WPF 3D - 在复杂几何体上映射渐变画笔

    我想问是否有人知道如何在 WPF 3D 中的复杂对象上映射渐变画笔 结果应该类似于 matlab 中的 3D 图像 例如 3D 函数 假设您有一些想要可视化的 3 维数据 并且想要通过颜色区分某些级别的值 给定一个 GradientBrus
  • 获取程序集中所有资源的列表

    我有一个文件夹Resources并想要获得一份包含所有内容的列表paths 如果我将它们设置为embedded resource 我可以通过 var resources Assembly GetExecutingAssembly GetMa
  • 已发布的 .Net Core 应用程序警告安装 .Net Core,但它已安装

    我制作了一个 WPF 和控制台应用程序 供某人在我无法访问的私人服务器上使用 我使用 Visual Studio 2019 的内置 发布向导 来创建依赖于框架的单文件应用程序 当该人打开 WPF 应用程序时 他们会看到标准警告 他们单击 是

随机推荐

  • iPad Safari 100% 高度问题

    我的页面上有一个模态 div 它使背景变灰 如果我将overlay div的高度设置为100 它在IE 桌面 上工作正常 但在iPad Safari上 完整的高度不会变灰 究竟是什么问题 这与固定位置 视口有关吗 请帮忙 下面是相同的 CS
  • 将 Python 中的 SHA 哈希计算转换为 C#

    有人可以帮我将以下两行 python 代码转换为 C 代码吗 hash hmac new secret data digestmod hashlib sha1 key hash hexdigest 8 如果您有兴趣 其余的看起来像这样 us
  • 需要使用 imap php 保存电子邮件副本,然后可以在 Outlook Express 中打开

    我有 IMAP PHP 脚本 它连接并读取邮箱中的电子邮件 我正在寻找的是 我想将电子邮件保存在服务器磁盘上 并将其命名为 testing eml 文件 因此 当我稍后记下这些电子邮件时 可以在 Outlook Express 中查看 任何
  • 如何在 PHP 中使用 RS256 签署 X.509 证书?无法获取有效指纹...x5t

    我已经实现了 JWT 令牌生成器库Here https github com F21 jwt blob master JWT JWT php 并且我能够获得 RS256 令牌 有效负载 但我对标题数据有疑问 我需要一个标头值 x5t 该标头
  • 在 Magento 中获取购物车详细信息

    我想通过使用 Magento 获取购物车详细信息getQuote功能 我怎样才能做到这一点 cart Mage getModel checkout cart gt getQuote 当我打印 cart页面停止执行并显示空白页面 但是当我写的
  • Azure 网站中的 404 处理

    我在 Azure 上有一个 MVC 网站 我已经编写了一个控制器操作来代表资源 该操作应该返回 HTTP 404 但正文内容应该是一些 HTML 我在其中解释了 404 的原因 这是作为一个标准操作实现的 该操作设置Response Sta
  • 如何在 Safari 上打开本地 html 文件?

    我想打开本地 html 文件Safari集成到我的Swift 3应用 我知道如何使用网址来做到这一点 这是我用来执行此操作的代码 let encodedString url addingPercentEncoding withAllowed
  • Docx 缺少属性

    我正在尝试使用 python 中的 docx 库来考虑 word 文档 问题是 无论我导入什么 我都会收到有关 无属性 的错误消息 例如 文档 from docx import Document 给出输出 cannot import nam
  • 如何使用 solrnet 在 solr 中使字段搜索不区分大小写

    在 solr 模式中我有如下字段
  • 在 php 中将单词转换为数字 II

    这里有一个很棒的功能在 PHP 中将单词转换为数字 https stackoverflow com questions 1077600 converting words to numbers in php来自埃尔约博 但我有一个问题 字符串
  • 将 C# 代码转换为 F#(if 语句)

    我想知道如何转换此代码逐行从 C 到 F 我不想使用任何类型的 F 习惯用法或类似的东西 我想了解如何直接映射C 的构造到 F 这是 C 代码 requires l Length gt 0 int GetMinimumValue List
  • 在 dart 的 MultipartRequest 中添加授权标头

    我在用多部分请求 https pub dartlang org documentation http latest http MultipartRequest class html在 Dart 中以便将文件上传到 API 但是我需要在我的请
  • 无法让 Visual Studio 诊断工具工作

    我在启动 Visual Studio 2015 含更新 3 中的诊断工具时遇到一些问题 我在调试模式下构建并启动一个项目 诊断工具窗口会弹出并显示文本 启动诊断工具 大约十分钟后 该文本消失 但 诊断工具 窗口仍然存在 上面没有任何内容 诊
  • 费率计费计算

    Azure 价目表 API 返回 MeterRates 字段 请参阅文档 https msdn microsoft com en US library azure mt219004 aspx Azure 使用情况聚合给出了数量 请参阅文档
  • Python。短语表示,如何改变?

    我不知道这个短语中存在的编码是什么 我也想知道这个问题的答案 主要是 我想改变我的措辞 例如 你好世界 变成你好 20世界 0A 老天啊 变成ol C3 A1 20mundo 0A 0A 我想要一个 python 解决方案 如果我有 gt
  • 通过 Apps 脚本强制刷新公式

    有时 更改单元格的值时 电子表格中的公式不会自动刷新 并且单元格上会出现注释以选择该单元格 然后按 CTRL SHIFT E 强制重新加载公式 我想从 Apps 脚本调用此重新加载函数 有没有办法用 Apps 脚本来做到这一点 我尝试了 S
  • 如何删除 WSO2 Identity Server 中的租户?

    在 v 4 6 0 中 我们无法通过 UI 删除 tenat 只能禁用 但是 我看到 TenantMgtAdminService 肥皂服务上有一个 deleteTenant 方法 我尝试调用此服务 但收到错误消息 从日志来看 它有 org
  • Android中将JSON数据存储到本地数据库

    好的 我创建了一个应用程序 它使用 JSON 从我的服务器检索数据 现在我想将检索到的数据存储在手机的本地存储 数据库中 我该怎么做 我是android编程新手 这是我从服务器收到的 JSON messages id 44 issender
  • 使用 javascript 获取焦点元素的 id

    我有一个包含许多锚元素的 Html 页面 这个单个 Html 页面包含许多 div 部分 一次仅显示一个部分 并且特定于该部分的锚点将聚焦 该 html 还包含一个用于打开弹出窗口的 div 当此弹出窗口打开特定于此的锚点时 将聚焦 现在我
  • WPF TextBox:如何将默认绑定模式更改为 OneWay?

    最初 我有以下代码