WPF:所有对象的数据绑定属性同时更改(ReferenceEquals 返回 true)

问题描述 投票:0回答:1

这是我的示例项目:https://github.com/kwon0408/WpfUserControlUnexpectedSync

我的

ValueIndicator
中有两个
MainWindow
,并且两个控件的
Values
是同步的,因此,如果我修改两个控件中任意一个的值,另一个控件中的值也会同时更改。

经过进一步调查,我发现

ReferenceEquals(L1Values.Values, R1Values.Values)
返回
true
。这似乎就是两个
ValueIndicator
同步的原因。

我希望每个控件都有其

Values
。我怎样才能做到这一点?

c# wpf mvvm data-binding
1个回答
0
投票

经过一些更多进一步调查,发现在 UserControl 的构造函数中添加这一行是有效的。

public ValueIndicator()
{
    InitializeComponent();
    Values = new(); // <- New!
}

由于两个实例中

Values
的引用发生了变化,
ReferenceEquals(L1Values.Values, L2Values.Values)
现在返回
false

MRE 现在包含此行。

© www.soinside.com 2019 - 2024. All rights reserved.