- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
以下代码按您预期的方式工作——当用户在下拉列表中选择一个新项目时,模型上的 MyProperty
会更新。
comboBox1.DataBindings.Add("SelectedValue", myModel, "MyProperty", true,
DataSourceUpdateMode.OnPropertyChanged);
但是,下面的方法并不相同,并且在输入焦点移动到表单上的另一个控件之前不会触发模型更新:
comboBox1.DataBindings.Add("SelectedItem", myModel, "MyProperty", true,
DataSourceUpdateMode.OnPropertyChanged);
有人知道为什么吗?我什至不知道从哪里开始调查原因。如果能指出开始调查的正确方向或提供明确的解释,我们将同样感激不尽。
旁白:出于我的目的,我最终绑定(bind)到 SelectedItem
和 SelectedValue
。通过这种方式,我可以获得基于 UI 更改(通过 SelectedValue
绑定(bind))的即时模型更新,以及基于编程模型更改(通过 SelectedItem
绑定(bind))的 UI 更新。
最佳答案
ComboBox
控件继承自 ListControl
控制。
SelectedItem
属性是 ComboBox
控件的适当成员。更改时触发的事件是 ComboBox.SelectionChangeCommitted
ComboBox.SelectionChangeCommitted
Occurs when the selected item has changed and that change is displayed in the ComboBox.
SelectedValue
属性继承自 ListControl
控件。因此,此属性将触发 ListControl.SelectedValueChanged
事件。
ListControl.SelectedValueChanged
Occurs when the SelectedValue property changes.
也就是说,他们不会解雇 INotifyPropertyChanged
. PropertyChanged
事件相同,但无论如何他们都会。唯一的区别在于触发事件。 SelectedValueChanged
在从 ComboBox 的列表部分做出新选择时立即触发,而 SelectedItemChanged
在项目显示在 ComboBox 的 TextBox 部分时触发。
简而言之,它们都代表了ComboBox 列表部分的一些东西。因此,绑定(bind)任一属性时,结果都是相同的,因为在任一情况下都会触发 PropertyChanged
事件。由于它们都代表列表中的一个元素,因此它们可能被同等对待。
这有帮助吗?
编辑#1
假设 ComboBox 的列表部分表示一个属性(我无法确认,因为我没有编写控件),绑定(bind) SelectedItem
或 SelectedValue
影响控件内的同一集合。然后,当更改此属性时,最终会发生相同的情况。 INotifyPropertryPropertyChanged.PropertyChanged
事件在同一属性上触发。
关于c# - ComboBox SelectedItem 与 SelectedValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2883481/
我正在尝试将 ComboBox SelectedValue 绑定(bind)到 string。 Binding 完美运行。但是,我的 ComboBoxItem 的 IsSelected 之一设置为 T
我有一个 WebForms 页面,上面有两个 DropDownList 控件,它们都包含 60-80 度的温度范围,一个用于加热,另一个用于冷却。它们在 .aspx 中声明为: 每个列表的值都使用
我有一个带有项目A,B,C,D,E的ComboBox。 用户选择后如何更改组合框的SelectedValue,因此,如果用户从列表项“A”中选择,则SelectedValue将为“D”(就像他自己选择
我在一个项目中使用 flex 4.0 和 ZK 框架。 我有 4 个状态,这些状态中有 3 个单选按钮组。 其中 2 个处于第一状态,其中 1 个处于第四状态。 我的问题是,我可以像这样获取前 2 个
问题很奇怪,我有一个组合框,它通过 DataSource 属性正确地填充了项目(它绑定(bind)到一个 bindingSource 项目,它包含一个显示成员和一个值成员),这是一个允许我选择供应商的
我在类中创建了一个组合框,并想为该组合框设置选定值。但是当我这样做时,selectedValue 保持为空,当我尝试设置 selectedIndex 时,我得到一个 ArgumentOutOfRang
我有一个连接到 ObjectDataSource 的 DropDownList。在我的页面加载中,我根据情况将 selectedvalue 设置为特定值。如何在我的方法 selectedindexch
我已经查看了一些解决方案,但对我来说还没有任何效果。 我正在为这个项目使用 MVVM,并且有一个无法设置 SelectedItem 属性的 ListView。 如果这是我的(简化的)XAML。
我在下拉列表方面遇到了一些问题,我需要将初始值传递给 View 模型,因此下拉列表将填充已选择的值。 据我所知(参见 this fiddle ): var additionalTravellersDe
我正在尝试根据查询字符串中传递的值来设置未绑定(bind)的 DropDownList 的值。这是我的代码: ListItem item = null; for (int x
对于我正在尝试构建的简单练习题,我的代码是这样的。我遇到了 Invalid Cast Exception. Specified Cast is not valid. public Form1() {
没有发布我的全部代码(我只是发布了有问题的脚本),我遇到了一个问题,似乎很多人都遇到过,但我的似乎没有响应其他推荐的修复程序。我在 VS2008 中使用 C#。 基本上我有一个组合框,当更改项目初始化
我有一个功能区组合框(MS Ribbon OpenSource 项目,.Net 4.0),它是数据绑定(bind)到我的 View 模型的属性,如下所示: XAML:
如果下拉列表在范围内,我如何设置下拉列表的选定值Gridview 和下拉列表在编辑时由 objectdatasource 填充按钮被点击? 我的应用发生了什么情况是下拉列表被填充但第一项始终显示为选定
drpDwnLstBillContact.SelectedValue = billContactId.ToString(); drpDwnLstRegContact.SelectedValue =
这段代码有什么问题? myComboBox.Items.Clear(); myComboBox.Items.AddRange(new string[]{"one","two"}); myComboBo
我整理了以下代码来演示我遇到的问题。 这是一个只有组合框的表单,在加载方法中使用从 LINQ 生成的数组填充组合框。 它设置了 DisplayMember 和 ValueMember。显示成员按预期工
我有一个在表单加载时填充的 ComboBox。我以数据集的形式从数据库中获取数据,并使用以下内容填充组合框。 checkBox4_combo.DataSource = ds.Tables[0].Def
所以我正在连接一个sql数据库。我有一个 asp.net 页面,当用户选择状态下拉列表并选择已关闭的值,然后单击更新票证按钮时,我需要它来更新表中的 Closed_date 列。 我的表有列 Clos
我正在尝试将对象添加到组合框中并使用 SelectedValue 属性来选择组合框中的项目,但它不起作用:SelectedValue 在作业。 class ComboBoxItem
我是一名优秀的程序员,十分优秀!