当有重复条目时,为什么不更新WPF组合框上的selecteindex ?

本文关键字:组合 WPF selecteindex 更新 为什么不 | 更新日期: 2023-09-27 18:12:25

我正在使用MVVM模式将ComboBox SelectedIndex值绑定到视图模型中的int:

<ComboBox ItemsSource="{Binding DropdownListChoices}" Margin="5,2,5,1" Width="320" Height="23"
 Style="{StaticResource comboBoxWithErrorHandling}" SelectedIndex="{Binding SelectedComboBoxIndex}">

视图模型:

public class FieldViewModel : ObservableObject, IDataErrorInfo
{
    private int _selectedComboBoxIndex;
    public int SelectedComboBoxIndex
    {    
        get { return _selectedComboBoxIndex; }
        set
        {
            if (_selectedComboBoxIndex != value)
            {
                _selectedComboBoxIndex = value;
                RaisePropertyChanged("SelectedComboBoxIndex");
            }
        }
    }   
    // ...  
}

在代码的另一部分,我填充DropdownListChoices。例如,假设元素是A、B、C、A、D。正确选择B、C或D会导致SelectedComboBoxIndex获得期望的值(分别为1、2或4)。但是选择A会将SelectedComboBoxIndex设置为0,无论选择的是第一个A还是第二个A。在选择第二个A时,我希望选择的索引是3。

为什么会发生这种情况?有没有别的方法来实现我想要的,也就是得到被选中的绝对列表索引?

当有重复条目时,为什么不更新WPF组合框上的selecteindex ?

你不应该在选择器控件中有重复的项,如果你有原始值将它们包装在一个类中,它只会混淆它们并导致异常。