【问题标题】:WPF TextBox.Text property OneWay binding bug?WPF TextBox.Text 属性 OneWay 绑定错误?
【发布时间】:2020-09-25 14:58:43
【问题描述】:

我有一个“用户设置”对话框,其中包含用于显示 Settings.Default 中的设置值的文本框。我已将对话框的 DataContext 设置为 Settings.Default 并将 Text 属性绑定设置为 OneWay(以避免在对话框被取消时立即更新设置)

一些设置是我使用System.Windows.Forms.FolderBrowserDialog 设置的目录路径。这只是设置关联 TextBox 的 Text 属性(接受 Dialog 会强制更新 DC)。我还有一个“默认”按钮,它调用

Settings.Default.Reset().

如果我手动编辑文本框的内容,然后单击默认值,它会按预期重置内容(所以我知道绑定正常)。但是,如果我使用 FileBrowserDialog 修改 Text 属性,然后单击默认值,则即使 Setting.Default 设置已重置为默认设置,文本框内容仍将保持为使用 FileBrowserDialog 选择的内容。 p>

有什么想法吗??

【问题讨论】:

  • 请提供您正在使用的代码,否则可能难以为您提供帮助。
  • 您的问题不太可能与错误(框架方面)有关。但很可能您的问题与您的实际实施细节有关。

标签: wpf data-binding


【解决方案1】:

您应该使用 SetcurrentValue 来设置文本框的 Text 依赖属性值。

https://docs.microsoft.com/en-us/dotnet/api/system.windows.dependencyobject.setcurrentvalue?redirectedfrom=MSDN&view=netcore-3.1#System_Windows_DependencyObject_SetCurrentValue_System_Windows_DependencyProperty_System_Object_

SetCurrentValue 方法改变有效值 属性,但现有的触发器、数据绑定和样式将 继续工作。

将绑定设置为双向并不是避免重写绑定的唯一方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 2014-12-08
    • 2012-07-20
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    相关资源
    最近更新 更多