问题标签 [two-way-binding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
9379 浏览

wpf - 组合框到静态属性的双向绑定

- - - -编辑 - - -

所以,我认为我的代码是正确的,你所有答案的代码片段也是正确的。感谢那。我的问题是我的开发机器运行的 .NET4.5 行为不同!相同的程序(针对 .NET4.0 编译)在 .NET4.0 的机器上运行正确,但在 .NET4.5 的机器上运行不正确!

所以这是我修改后的问题

- - - -编辑 - - -

首先,我如何将组合框双向绑定到数据上下文的简单示例:

查看型号:

和代码隐藏

和我的 XAML

这很好用,如果我选择一个带有组合框的项目,它就会绑定到我的视图模型。

好的,现在我想让我的 viewModel 静态但仍然双向绑定 selectedItem。我试试这个:

我不再需要在代码隐藏中设置数据上下文,而且我知道,xaml 需要一个用于双向绑定的实例,所以我仍然有默认构造函数。然后我绑定组合框

初始值已正确绑定,但如果我使用组合框选择另一个项目,它不会反映在我的 viewModel 中。我究竟做错了什么?

编辑:

如果我对 TextBox 使用完全相同的绑定字符串并更改框中的文本,它会反映在属性中。

所以显然我的绑定字符串是正确的,但我使用组合框的方式似乎是错误的。我也尝试绑定SelectedValue......也没有改变。

0 投票
1 回答
542 浏览

xaml - 在 .NET 4.5 中将组合框双向绑定到静态属性

好吧,我刚刚发布了这个问题,但我认为我没有做错任何事情。我的代码(以及所有答案的代码)是正确的,但是我的开发机器使用 .NET4.5 运行,这显然与组合框的绑定有问题......

所以这里有一个新版本的问题:如何将组合框的 SelectedItem 双向绑定到 .NET4.5 中的静态属性?

以下代码片段在 .net4 中有效,但在 .NET4.5 中无效。在 4.5 中,只是所选值不会传播回我的静态属性。

我的视图模型:

还有我的 XAML

有没有人知道如何在 .NET4.5 中实现 ComboBox 的 SelectedItem 到静态属性的这种双向绑定?

0 投票
2 回答
5645 浏览

c# - 为什么我收到消息双向绑定需要路径或 XPath。?

我在运行时创建 aTextBox和 a 并TextBlock在运行时将其绑定到数据库字段。代码如下:

但我收到这条消息:

双向绑定需要 Path 或 XPath。

我哪里错了?

0 投票
2 回答
1118 浏览

wpf - 反向双向多重绑定

我试图将视图模型中的枚举属性表示为视图中的一组单选按钮。到目前为止,一切都很好; 我可以用两种方式表达MultiBinding

(rb1.IsChecked, rb2.IsChecked, rb3.IsChecked) <-> vm.Value

这里使用的多重绑定将具有一个多重转换器,可以在(bool, bool, bool) <-> MyValue;之间进行转换。显然,类型的(三个)允许值之一是根据isMyValue来选择的,反之亦然。booltrue

不过,这已经有点不方便了:我无法在视图的 Xaml 中定义该绑定,因为必须从单个值的一侧定义多重绑定。因此,我必须在代码隐藏中定义多重绑定,并SetBinding在我的视图模型的Value属性上使用它。

现在,我遇到的问题是我不只是将一组单选按钮绑定到该值,而是两个。因此,我的绑定必须如下所示:

(rbA1.IsChecked, rbA2.IsChecked, rbA3.IsChecked) <-> vm.Value <-> (rbB1.IsChecked, rbB2.IsChecked, rbB3.IsChecked)

问题是我不能使用一次SetBinding连接多个绑定vm.Value

到目前为止我尝试过的解决方案是:

  • 使用一个的多重绑定,一次绑定到所有单选按钮。这将意味着表单的绑定(rbA1.IsChecked, rbA2.IsChecked, rbA3.IsChecked, rbB1.IsChecked, rbB2.IsChecked, rbB3.IsChecked) <-> vm.Value。该解决方案的问题在于,如果选中了一个单选按钮(例如rbB2),我无法判断rbA2(未选中)或rbB2(选中)是否具有“新的、正确的”值。
  • 首先通过定义一个仅公开一个属性的单选组控件来抽象单选按钮组。SelectedIndex然后可以方便地从我的无线电组控件vm.Value的所有实例将此属性绑定到我的属性。虽然可行,但它需要编写一个新的控件类,我想知道这是否是 WPF 中的唯一方法。
  • 将一组单选按钮绑定到另一组:通过双向绑定rbB1to rbA1rbB2torbA2等,并且vm.Value仅在 my 和第一组单选按钮之间使用多重绑定,我会达到预期的效果,但我不喜欢拥有“主广播组”的概念。它将滥用 GUI 元素进行数据传输。
  • 在代码隐藏中执行所有操作并手动更新单选按钮和视图模型值。当然这是一个可行的后备解决方案,但这感觉在 Xaml/with 绑定中应该是可行的。
0 投票
1 回答
8297 浏览

c# - 在 WPF 中将 ObservableCollection 绑定到 DataGrid 不起作用

我的应用程序中有这个简单的 DataGrid。在源代码的某个地方,我将ItemsSource它的属性绑定到一个ObservableCollection<System.Windows.Points>. 所以点显示在DataGrid. 但是问题是我已经设置了TwoWay绑定,但是当更改 中的点坐标值时DataGrid,实际点值 intObservableCollection没有改变!

出了什么问题?

注意我已经看到了,但我的问题是不同的。

0 投票
1 回答
122 浏览

c# - WPF TwoWay 不适用于 X(退出)但适用于 TAB 或单击其他位置

我的 XAML 中有以下内容:

当我在 TitleValue 或 DescValue 和 Tab 中输入值或单击窗口中的不同位置时,集合类属性会正确更新。然后当我点击 X 退出窗口时,集合类中的数据就被正确保存了。

但是,当我在其中任何一个字段中输入值,然后单击 X 退出窗口时,集合类中的数据将被保存,但输入的值不会保存为我在单击 X 时正在编辑的特定字段。

我在字段上实现了失去焦点事件并且它们工作,即使单击 X 也是如此。在这些事件中,我输入了代码:

但这也没有用。以下也不起作用:

在正在编辑的字段中单击 X 时,如何获取集合类 Imports 以更新选定的类 Import?

它的工作方式应该与我在正在编辑的字段或单击窗口中的其他地方的选项卡上完全一样。

0 投票
0 回答
557 浏览

wpf - 带有TwoWay的ItemsControl中的WPF多维int数组

我有一个多维 int 数组(向量),我想ItemsControlTextBoxas显示它DataTemplate。我习惯使用Binding一个VectorListList< int[] >。int[,] 不起作用,因为ItemSource必须是一维的,所以我将其转换为 List< int[] >。

Binding有效,所有显示正确VectorList。但是不起作用, 的不会改变并且不会更新。我究竟做错了什么?OneWayTextBoxesTwoWayItemSourceItemsControlVectorList

XAML:

0 投票
2 回答
13290 浏览

wpf - DataGridTemplateColumn 两种方式绑定不起作用

我有一个DataGrid我已经绑定到一个SqlDataApterDataTextColumn如果我使用如下代码所示为网格设置 XAML,它可以完美运行

我使用以下方法将其绑定到DataTable代码中:

我有一个使用 ذSqlDataAdapterذ 更新方法保存更改的按钮:

问题是我想在记录c 和记录IC_DEF_CHAR_TEXT时禁用编辑字段。我尝试绑定到该属性,但发现它不可绑定,因此我为这两个字段创建了模板并将该属性绑定到and字段。isNumeriIC_DEF_CHAR_TEXTIsTextIsReadOnlyIsEnabledIsTextIsNumeric

这完全符合我的要求,必要时启用了文本框。但是,TextBoxes在更新期间所做的更改不再保存到数据库中。有人可以向我解释为什么不再更新数据库吗?

0 投票
1 回答
736 浏览

wpf - 双向绑定列表框 - 删除项目

我的WPF 应用程序中有一个ListBox(x:Name = ),它从集合中获取项目。该集合是我班级中的一个属性,类型为. 我以这种方式绑定它:(是一个包含一些项目的对象)notesListItemsSourceNotesDataObservableCollection<Note>dataDataNotes

绑定有效,项目显示在 ListBox 中。我设置了 TwoWay 绑定,因为我希望notesListNotes集合同步。当我尝试以这种方式删除所选项目时会出现问题:

我得到异常:“使用 ItemsSource 时操作无效。改为使用 ItemsControl.ItemsSource 访问和修改元素”。

我的问题:我必须使用收集功能来删除元素吗?data.Notes.RemoveAt(index)? 有什么方法可以使用ListBox类删除项目,因此会导致删除集合中的项目?我认为使用 TwoWay Binding 是可能的。

0 投票
1 回答
571 浏览

wpf - wpf双向绑定DependencyProperty setcurrentvalue不起作用

我正在研究 visiblox 图表的自定义行为。此自定义行为具有一个依赖属性 Value,该属性标识由图表中的垂直线绘制组成的光标位置。如果我将属性 FollowMouse 设置为 true,则此光标会跟随鼠标。

如果我绑定 Value 属性,changedvaluecallback 只会将 0 作为 newValue,而如果未绑定该值,则它可以正常工作。但是,如果我更改绑定的源属性(ViewModel 上的属性),它也可以工作。所以问题是在 PointerMoved 上使用 SetCurrentValue 设置值。

这是行为的源代码:

有谁知道为什么 setcurrentvalue 没有相应地更新值?