【发布时间】:2021-03-05 07:54:13
【问题描述】:
我有一个文本框,其文本绑定到列表视图选定项,如下所示:
<TextBox x:Name="txtAdditional" Width="300" Text="{Binding ElementName=lstPersons, Path=SelectedItem.Additional, Mode=OneWay}" />
现在我想实现一种机制,使用此文本框将新项目添加到列表视图以获取实际数据。所以我想将文本框的文本绑定到视图模型的一个属性,以便它可以被命令处理。
所以它的文本框文本必须绑定到 listviews selecteditem 并且另外绑定到我的视图模型的属性。
我四处搜索并找到了一些方法,但我不禁想到应该有一些更简单的机制来归档这个目标。
我现在发现了什么:
- 将 MultiBindung 与某种 ValueConverter 一起使用?所以在我看来,这主要用于显示而不是更新 viewmodels 属性。
- 使用一些自定义的自定义控件?
- 在Impossible WPF Part 1: Binding Properties 中使用具有输入和输出依赖属性的 BindingProxy?
是否有另一种更简单的解决方案,或者我必须使用上述其中一个? 如果应该使用其中一种方法,您会选择哪一种?
我不禁想到这个问题还没有被考虑过,使用 mvvm 模式?! ;-)
【问题讨论】:
-
您应该在视图模型中添加一个属性,例如
SelectedPerson。在需要时将此属性用作每个控件的绑定源。例如将其绑定到ListView.SelectedItem和TextBox.Text。您应该始终将视图模型视为唯一的数据源,而不是其他一些控件。数据总是在控制 视图模型之间流动,但“从不”控制 控制。首先这样思考会让事情变得更容易。
标签: wpf mvvm properties binding