通过DataTrigger设置的TextBox的文本不更新模型中的属性值

2024-04-28

我是 WPF 新手,如果未选中复选框,我想清除文本框的值。我尝试通过数据触发器来做到这一点。

下面是代码:

<TextBox Text="{Binding Path=Amount,Mode=TwoWay}">
                    <TextBox.Style>
                        <Style>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding Path=IsSelected}" Value="false">
                                    <Setter Property="TextBox.Text" Value="{x:Null}"></Setter>
                                </DataTrigger>  
                            </Style.Triggers>
                        </Style>
                    </TextBox.Style>
                </TextBox> 

我的复选框的值在我的模型的“IsSelected”属性中设置。在这里,如果未选中该复选框,则文本的更新值(在本例中为 {x:Null})不会反映在我的模型的“金额”属性中。因此,用户界面上的文本似乎永远不会改变。由于绑定,之前设置的“金额”值在文本框中再次设置

任何帮助表示赞赏。如果您需要更多信息或澄清,请告诉我 谢谢。


在这种情况下,我通常更喜欢 ViewModel / Model 执行功能的“清晰”部分,

因此,在你的情况下,我通常会这样做:

public bool IsSelected {
  get {
    return _isSelected;
  }

  private set {
    if (value == _isSelected)
      return;

    RaisePropertyChanging(() => IsSelected);
    _isSelected = value;
    RaisePropertyChanged(() => IsSelected);

    if (_isSelected == false)
      Amount = string.Empty
  }
}

这样视图就不负责任何逻辑,因此不需要DataTrigger at all

Update:

您的代码的问题是当您设置Text与绑定在TextBox它优先于您在中设置的值Style对于文本属性。您可以使用以下方法进行检查:

<TextBox>
  <TextBox.Style>
    <Style TargetType="{x:Type TextBox}">
      <Setter Property="Text"
              Value="{Binding Path=Amount,
                              Mode=TwoWay}" />
      <Style.Triggers>
        <DataTrigger Binding="{Binding Path=IsSelected}"
                      Value="false">
          <Setter Property="Text"
                  Value="{x:Null}" />
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </TextBox.Style>
</TextBox>

现在,当CheckBox已检查,但它不会更新您的 Binding(Amount)因为本质上你的绑定只有在CheckBox被选中。

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

通过DataTrigger设置的TextBox的文本不更新模型中的属性值 的相关文章

随机推荐

  • 让 std::complex 通过 std::is_floating_point 测试

    我想要类型double float complex
  • 多处理:为什么与子进程共享 numpy 数组,而复制列表?

    我用过这个script https stackoverflow com questions 13121790 using multiprocessing manager list instead of a real list makes t
  • 如何反编译混淆的java程序以避免类/包名称冲突

    我想反编译一个java程序并重新编译派生的 混淆的 源代码 我解压了 jar 存档并得到了如下目录结构 com com foo A com foo A A class com foo A B Class com foo B A class
  • 如何在 asp.Net 中的脚本标记上使用 runat="server"

    我不一定需要在服务器上运行它 但是 我想使用 js somefile js syntax 以前 我只是使用绝对路径设置所有内容并将我的项目设置为根级别 所以 我只需声明我所有的样式表 背景图像和 javascript 文件 例如 css s
  • 红宝石 Rspec。获取所有测试的列表

    我对 Rspec 进行了一些测试 如下所示 describe description do before each do do before end it something 1 do end it something 2 do end e
  • 从 python-rq 获取*所有*当前作业

    我正在使用 python rq 来管理基于 Redis 的作业 并且我想确定我的工作人员当前正在处理哪些作业 python rq 提供 get current job 函数来查找连接的 当前作业 但是 我无法让它发挥作用 并且 我真的想要一
  • 奇怪的问题,除非单击鼠标,否则按钮不会重新启用

    我的应用程序是使用 WPF 中的 MVVM 模式编写的 我的所有按钮都使用命令绑定来执行模型中的代码 所有命令在 CanExecute 中都有代码来确定绑定按钮的启用状态 该逻辑工作完美 但在所有情况下 GUI 都会保持禁用状态 除非我单击
  • 更改故事板中默认后退按钮的文本颜色

    如何更改故事板中默认后退按钮的文本颜色 通过故事板和以编程方式 显示的默认颜色是蓝色 This https stackoverflow com questions 12886274 storyboard uinavigation contr
  • 支持 Javascript 链式关系运算符吗?

    我只是尝试了一些 JS 核心原则 发现引擎评估链式关系运算符时不会抛出错误 相反 他们以一种我自己无法理解的方式进行评估 console log 1 lt 2 lt 3 lt 4 lt 5 true expected console log
  • bash:ssh-host-config:找不到命令

    有谁有任何想法可能导致此问题 我使用的是 win 7 我已经使用本教程成功设置了所有内容 http www kgx net nz 2010 03 cygwin sshd and windows 7 http www kgx net nz 2
  • 向回调函数添加附加参数

    我正在 Node js 中构建一个系统 该系统应该查找文件夹数组中的所有文件 统计它们 然后使用该信息执行一些其他工作 我使用 fs readdir 从每个文件夹同步获取所有文件 我的代码如下所示 for i 0 max paths len
  • JFace DialogCellEditor:如何使按钮始终出现?

    我用的是JFaceDialogCellEditor在 JFace 的一行单元格中显示一个按钮TableViewer激活时会触发一个对话框 此行为适用于以下代码 但仅当显式选择托管按钮的表的单元格时才会显示该按钮 public class C
  • Mongoose VersionError:保存文档时找不到 id 的匹配文档

    通过 sync API 请求同步用户购物车时 我反复看到以下错误 每当用户更改购物车的内容时就会调用此函数 VersionError 找不到 id 的匹配文档 2y4b1hq601cd013e0af25e32 版本4修改路径 购物车 car
  • firebase 崩溃报告上传的符号文件错误

    当崩溃上传到 firebase 仪表板时 它总是显示消息Upload symbol file to symbolicate future stack traces for UUID 不过 我确实通过查看 符号文件 选项卡确保符号文件已上传
  • MVC 4 中的运行时动态捆绑和缩小

    我想知道是否有人可以帮助我使用 MVC 4 附带的新优化命名空间进行捆绑和缩小 我有一个多租户应用程序 我想在其中决定应根据每个用户的设置加载哪些 js 文件 一种方法是预先创建所有包并根据用户的设置更改resolvebundleurl的虚
  • 黄瓜使用标签自动重新运行失败的场景?

    在我们的构建中 某些场景会由于我们无法控制的原因或需要很长时间才能正确调试而失败 诸如异步javascript之类的东西 无论如何 重点是有时它们工作 有时不工作 所以我认为最好向场景添加一个标签 例如 rerun on failure 或
  • Find和FindNext复制所有匹配对应的数据

    我想在工作表 BD 的第 5 列中搜索与工作表 Plan1 上名为 alocacao 的值匹配的所有条目 然后将第 2 列上的值复制到名为 tecnico1 的单元格 其他单元格称为 tecnico2 tecnico3 和 tecnico4
  • MASM 字符串反转

    好吧 我正在讨论这个问题 可能是一个非常复杂的解决方案 但这是我脑海中浮现的第一件事 我需要编写一个汇编语言程序来反转 源 字符串 而不使用 目标 字符串 临时变量 这是我的尝试 INCLUDE Irvine32 inc data sour
  • Rancher 外部子域

    我需要为 docker 容器中的应用程序设置子域 而不是在内部牧场主网络中 而是供公共使用 我已将域委托给牧场主服务器 并且目录中几乎所有堆栈都有主机属性 但它不起作用 我想我需要使用一些 rancher dns 委托域或设置 nginx
  • 通过DataTrigger设置的TextBox的文本不更新模型中的属性值

    我是 WPF 新手 如果未选中复选框 我想清除文本框的值 我尝试通过数据触发器来做到这一点 下面是代码