问题标签 [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 投票
1 回答
594 浏览

validation - 双向多重绑定验证

我有这种情况,其中 ex,textbox1 有一个多重绑定,其值取决于 textbox2 和 textbox3,并且绑定是两种方式,如果减去,所有文本框都对 ex 错误应用相同的验证规则。

不知何故,如果 textbox1 更新了 textbox2 和 textbox3 验证将触发。但是当 textbox2 或 textbox3 更新时, textbox1 验证将不会触发。

  • 我试过设置 ValidatesOnTargetUpdated="True" 但什么也没发生。

有什么建议吗?

0 投票
1 回答
598 浏览

wpf - WPF 绑定用户控件坐标

我在画布上添加了一个用户控件。在应用程序的另一个区域,我有两个文本框,它们将获得 2 个值:X 和 Y。我需要在用户控件的左上角坐标和这两个文本框之间进行双向绑定。我不介意实现转换器或进行一些计算,但我需要朝着正确的方向前进。

0 投票
1 回答
1105 浏览

c# - C# MVVM TreeView TwoWay-Binding of hierarchical data

I googled for an answer to this for more than two weeks now. This usually means either I am blind or the idea is absurd. Anyways:

In a middle-sized, quite flexible project I'm storing configuration data in a hierarchical structure in the like of this one:

  • Configuration (collection)
    1. Audio (class)
      • BaseDir (struct)
      • PlayMode (enum)
      • Input (class)
      • CalibrateOnConnect (bool)
      • KnownDevices (collection)
        1. ... (class)
          • ...
      • UseDevice (integer)
      • Playlist (collection)
        1. FirstAudio (class)
          • Path (string)
          • Repeat (integer)
      • ...

I already managed to display these in a TreeView in a MVVM pattern. Since I can't exactly tell which options will be added in future, I used a generic approach, creating ViewModels for class, ienumerable, my custom structs and the basic value types (string, bool, enum, ...).

In my XAML these have their corresponding (Hierarchical)DataTemplates, e.g. with a CheckBox for booleans or a textblock for general value types.

Each ViewModel instance has a field to store the data of the underlying Model.

I manage to edit these values in the View and via TwoWay-Binding also in the ViewModel.
But what makes my head hurt is how to update this data in the Model.
Since I create the hierarchical ViewModel structure through reflection, the parents do not have get/set properties corresponding to the field names / indexers / ... of the equivalent configuration class / collection. Though each ViewModel instance knows the field/property name of the parent's model's data structure it was created from and knows its parent ViewModel instance, too (but not its parent Model instance).
Every attempt to solve this problem via Commands or by calling some parent's update function made a knot into my brain.

Isn't there a simple way to achieve this via regular binding techniques?
Would it be better if I created ViewModels for each configuration (sub)class I'm using?
Hint: Each ViewModel instance knows its field / property name in the parent's model's data structure.

0 投票
2 回答
1382 浏览

c# - 在分层数据结构中向 MVVM 添加编辑

这个问题是这个旧问题的后续问题,它更像是一个确认而不是一个开放的问题。

我的 ViewModel 实例有一个模型的私有实例,_modelInst.
ViewModel 在编辑期间拥有对 Model 数据的独占访问权限(因此 Model 不需要实现 INotifyPropertyChanged)。

现在我想出了三种从视图中编辑模型数据的方法:

  1. 直接在模型实例上获取/设置,
    例如简单的值字段
    return _modelInst.fieldname;
    _modelInst.fieldname = value;
    这很容易实现......

  2. 创建一个 ViewModel 实例并在父级的数据结构上进行操作,
    例如对于更复杂的对象类型,如 structs

    • 为该类型创建一个新的 ViewModel。
      ViewModel 知道父级及其字段名。
    • 在 ContentControl+DataTemplate 中显示
    • 获取/设置:
      通过以字段名为参数的父类方法,
      覆盖整个原始对象,即使只更改了一个字段

    _modelInst这意味着为这些结构中的每一个创建一个由父级实现的新接口(使用更新例程)。

  3. 在不直接了解父类数据结构的情况下创建 ViewModel 实例,
    例如父类中的类(列表)

    • 为每个类创建一个新的 ViewModel

    • 通过发送更新指令给父母

      1. 命令
      2. 消息
      3. 反射(父母
        通过将实例与所有存储的孩子进行比较来知道哪个孩子调用了函数)

      所有这些都是一大堆实现,为模型的每个可编辑字段创建函数。
      这意味着模型的几乎所有领域..​​....

(4.) 可以创建一个仅通过反射工作的通用 ViewModel,其中每个子对象都知道其父对象及其字段名(+index,如果在列表中)。
然后只有根的逻辑会干扰模型。
但是该解决方案还需要一种方法来将路径存储在_modelInst.

有没有其他(更简单)的方法来实现这一点?
我是否(再次)误解了 MVVM 的原理?
MVVM 是否适合处理大型分层数据结构?

0 投票
2 回答
2349 浏览

wpf - wpf双向绑定和从代码隐藏更新

我在 XAML 中这样定义了 ToggleButton:

和 'DateFilter' 定义如下:

当我单击切换按钮时,“日期过滤器”会相应更新。但是,如果我在代码中修改“DateFilter”,ToggleButton 不会更新!
我怎样才能做到这一点?

0 投票
1 回答
992 浏览

silverlight - Silverlight:DependencyProperty (IList) 的双向绑定不起作用

嗯..它的工作但只有当用户创建一个列表类型的属性时。

这是完整的场景。

我有一个模板化控件(带有复选框的多选组合框)用户提供了一个 List/ObservableCollection 作为其 ItemsSource。集合可以是任何类型(员工、主席、个人等)。ItemsSource 的 DependencyProperty 属于 IList 类型。

用户还可以在名为 SelectedItems 的 DependencyProperty 中提供具有双向绑定的列表(以便他可以将某些项目显示为已检查并取回已检查的项目)

现在问题出在 SelectedItems dp 上。它是模板化控件中的 IList 类型。如果用户将其绑定到,例如,双向绑定不起作用List<Person>。但如果List<Person>更改为List<object>.

我无法弄清楚我做错了什么!

0 投票
1 回答
878 浏览

silverlight - 我在 MVVM 模型中使用 silverlight 两种方式绑定获得 Null 对象

我是 silverlight 的新手,并尝试使用 MVVM 模式通过 RIA 服务将表单保存到数据库中。

当我在twoway绑定模式下将文本框绑定到字符串时,我在 ViewModel 中获得了一个文本框值。

但是当我将 a 绑定Object.Property到文本框(双向绑定)时,单击保存按钮后,我在 ViewModel 中得到一个空对象。

这是我的代码,请帮我弄清楚我哪里出错了。

这是我的 XAML:

0 投票
0 回答
414 浏览

c# - 复选框双向绑定

我有一个绑定到列表的列表框。该列表包含绑定到列表的字段/成员的复选框。我要实现的是,在检查相应的复选框时,我想从列表中删除数据。

这是我的 xaml 代码:

这是 .cs 文件中的代码

0 投票
3 回答
5159 浏览

c# - 与转换器的双向数据绑定不会更新源

我设置了一个数据绑定,它使用转换器将笨拙的 XML 源转换为便于显示和编辑的内部类树。一切都非常适合从 XML 源读取,但我有一段时间试图对内部类进行更改以传播回 XML 源。

这是使用站点的 XAML:

XmlSource 是父数据绑定对象的 CLR 读写属性(不是 DependencyProperty)。它是从 XSD 生成的 .NET 类型。

SampleConverter 实现IValueConverter. 该Convert方法被调用并返回非空数据,但该ConvertBack方法从未被调用。

SampleControl 是一个 UserControl,它封装了与 Sample 数据树的 UI 交互。它的 XAML 看起来像这样:

Sample 属性是后面 SampleControl 代码中的一个 DependencyProperty:

XmlSource 被转换以实现 INotifyPropertyChanged 的​​内部类,并正在向上发送更改通知树,如上面 MyPropertyChanged 中的断点所示。

因此,如果数据报告它已更改,为什么 WPF 不调用我的转换器的 ConvertBack 方法?

0 投票
2 回答
7272 浏览

wpf - WPF ComboBox SelectedItem 绑定

我有一个 WPF ComboBox,并且正在使用 MVVM 绑定 ItemsSource 和 SelectedItem 属性。基本上我想要做的是当用户在组合框中选择特定项目时,组合框会选择不同的项目。

出于演示目的,我还有一个按钮来更新 SelectedItem。

我的视图模型中有这个:

好的,所以我想让 ComboBox 在用户选择项目“全部”时选择项目“项目”。使用该按钮,我可以更新组合框的 SelectedItem,我可以在 UI 中看到这一点

我有类似的逻辑来更新 TestComboItemsSourceSelected 属性的设置器中的 viewModel。如果用户选择“all”,则将 SelectedItem 设置为“items”。因此在代码方面,viewmodel 属性会发生更改,但由于某种原因,这不会反映在 UI 中。我错过了什么吗?我实现这个的方式有什么副作用吗?