这是我的示例项目:https://github.com/kwon0408/WpfUserControlUnexpectedSync
我的
ValueIndicator
中有两个 MainWindow
,并且两个控件的 Values
是同步的,因此,如果我修改两个控件中任意一个的值,另一个控件中的值也会同时更改。
经过进一步调查,我发现
ReferenceEquals(L1Values.Values, R1Values.Values)
返回true
。这似乎就是两个 ValueIndicator
同步的原因。
我希望每个控件都有其
Values
。我怎样才能做到这一点?
经过一些更多进一步调查,发现在 UserControl 的构造函数中添加这一行是有效的。
public ValueIndicator()
{
InitializeComponent();
Values = new(); // <- New!
}
由于两个实例中
Values
的引用发生了变化,ReferenceEquals(L1Values.Values, L2Values.Values)
现在返回false
。
MRE 现在包含此行。