WPF:同一个控件中的两个组合框不是相互独立的问题

本文关键字:组合 问题 独立 两个 控件 同一个 WPF | 更新日期: 2023-09-27 18:12:37

我在一个控件中有两个下拉菜单,它们本质上都具有相同的数据源。起初,我有两个控件使用相同的数据源,我还设置组合框属性"IsSynchronizedWithCurrentItem"为假,因为我在之前的答案中看到有些相关(两个组合框具有相同的CollectionViewSource ItemSource彼此更新)。虽然每次我点击一个组合框然后移动到第二个,第一个在下拉框中失去了它的值,如果我尝试编辑第一个框,它会改变第二个框的值。这次我为每个创建了一个新的可观察集合,并使两者尽可能独立于彼此(尽管他们获得的数据仍然是相同的),但我仍然遇到了这个问题。注意:如果WPF绑定导致任何问题,则从实体框架检索数据:

public void LoadLists() { 
    var items = new ObservableCollection<ComboBoxItem>();
    foreach (var item in Manager.Instance.ItemList) {
        var comboItem = new ComboBoxItem() { Content = item.Name };
        items.Add(comboItem);
    }
    // Binding the two combobox lists
    _viewModel.ListOne = Items;
    _viewModel.ListTwo = new ObservableCollection<ComboBoxItem>(Items);
}

前端:

<ComboBox IsEditable="True" Text="-- Select --" Name="ListOne" ItemsSource="{Binding ListOne, Mode=OneWay}" IsSynchronizedWithCurrentItem="False" />
...
<ComboBox IsEditable="True" Text="-- Select --" Name="ListTwo" ItemsSource="{Binding ListTwo, Mode=OneWay}" IsSynchronizedWithCurrentItem="False" />

编辑:解决了谢谢,谢谢。所以我在过去使用可观察的组合框项集合创建了另一个组合框(从看到前面的例子/堆栈溢出),没有任何问题。我没意识到这是个问题。我将组合框与源绑定,并保持"IsSynchronizedWithCurrentItem"为false,现在它工作了。

WPF:同一个控件中的两个组合框不是相互独立的问题

谢谢。所以我在过去使用可观察的组合框项集合创建了另一个组合框(从看到前面的例子/堆栈溢出),没有任何问题。我没意识到这是个问题。

我将组合框与源(字符串列表)绑定,并保持"IsSynchronizedWithCurrentItem"为false,现在它工作了。绑定到comboxboxitems的ObservableCollection导致了这个问题。