【问题标题】:Combobox's SelectedValue (or SelectedItem) OneWay binding not working. Any ideas?组合框的 SelectedValue(或 SelectedItem)单向绑定不起作用。有任何想法吗?
【发布时间】:2011-11-23 04:47:40
【问题描述】:

在下面的窗口中,现有报告组合绑定到一个可观察的报告对象集合。我有一个 reportObject 属性currentReport 绑定到组合的 SelectedValue 属性 OneWay。但是,这在 XAML 中绑定时不起作用。

SelectedValue="{Binding currentReport, Mode=OneWay}"

TwoWay 可以很好地绑定,但是如果不向 reportObject 类写入 undo() 方法,我就无法做到这一点。我将 currentReport 的属性绑定到各种文本框以进行编辑。我想绑定 OneWay,这样源就不会改变。 currentReport 的所有属性都绑定到相应的文本框,因此当我在 SQL [保存] 中更新表时,它将从该对象中提取,谁的数据是最新的。

<TextBox Text="{Binding currentReport.reportName, Mode=TwoWay}"

从 currentReport 绑定到文本框的所有属性也可以正常工作。唯一的问题是从 SelectedValue 到 currentReport 对象的 OneWay 绑定。有谁知道如何让它发挥作用?我看到有一个bug,但是我看到的帖子是2009年的。

对黄色感到抱歉。不是我的主意。 =)

编辑:添加此 XAML 以防万一。

<ComboBox ItemsSource="{Binding reportsCollection}" SelectionChanged="cboReports_SelectionChanged"
                                  DisplayMemberPath="displayName"
                                  SelectedValue="{Binding currentReport, Mode=TwoWay}"
                                  x:Name="cboReports" Width="342" Height="40" VerticalAlignment="Center"/>  

【问题讨论】:

  • OneWay 仅在源属性更改时更新目标属性。当目标属性更改时,OneWayToSource 会更新源属性。但是,如果您将文本框绑定到 currentReports 属性,那么您实际上会更改报告属性,您如何将它绑定到您的组合框并不重要,还是我读错了什么?
  • 老兄,如果不是 TwoWay,您希望如何选择不同的现有报告?
  • @BigL & BalamBalam 我真正需要的只是当用户从组合中选择某些内容时将 currentReport 设置为 SelectedValue。不过,我不希望更改 currentReport 来更改基础集合。我想在用户保存时合并这些更改。 currentReport 只是一个用于通过文本框进行编辑的临时对象。有道理?如果我将 SelectedValue 双向绑定到 currentReport,则对 currentReport 进行更改会更改集合。如果我这样做,我必须编写一个 undo() 方法并将 reportObject 的变量计数加倍以保持原始值直到保存。
  • 我可以在代码中完成,但如果可能的话我更喜欢使用绑定
  • 因此,如果您在组合框中的选择发生变化,您总是会在您绑定到的属性的设置器中创建一个新的临时 currentReport 对象。然后设置临时属性,如果用户单击保存,则将其合并到数据库中。但是你仍然需要临时对象,所以你的集合永远不会改变?

标签: wpf xaml binding combobox selectedvalue


【解决方案1】:

忘记您需要更改值 - 这是一个单独的问题 - 需要审查您的数据设计。从 UI 问题开始。如果您希望用户能够从组合框中选择一个项目,那么它必须具有两种方式绑定。你的第一个问题是SelectedValue="{Binding currentReport, Mode=OneWay}" 失败了,为什么?

【讨论】:

    猜你喜欢
    • 2011-02-22
    • 2010-10-14
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 2016-06-09
    • 2021-10-15
    相关资源
    最近更新 更多