一个DataSource用于多个控件

Sae*_*ani 5 c# datasource winforms

ListBox在winforms应用程序中有两个,我为它们分配了一个数据源,如下所示:

private void MakeMeasurementUnits()
{
    var units = new List<MeasurementUnit>
                    {
                        new MeasurementUnit {Name = "Current", SiUnit = "A"},
                        new MeasurementUnit {Name = "Voltage", SiUnit = "V"},
                        new MeasurementUnit {Name = "Time", SiUnit = "s"},
                        new MeasurementUnit {Name = "Temprature", SiUnit = "°C"}
                    };

    lbxXunit.DataSource = units;
    lbxYunit.DataSource = units;
}
Run Code Online (Sandbox Code Playgroud)

奇怪的是(或者可能是因为这是我的第一次!!),在我点击其中一个lisboxes的项目的形式,第二个列表框中的相同项目也被选中.这是默认行为吗?怎么预防这个?如果这是默认行为,那么有用的是什么?

我找到了快速补救措施来制作两个不同的数据源(与另一个名称相同)

Bas*_*Bas 5

列表框似乎缓存了绑定源.这是默认行为.如果要避免这种情况,最简单的方法是创建列表的副本以绑定到第二个数据源:

lbxXunit.DataSource = units;
lbxYunit.DataSource = units.ToList();
Run Code Online (Sandbox Code Playgroud)

当您拥有相同数据的多个视图并希望同步这些项的选择时,这非常有用.