当有重复条目时,为什么在WPF ComboBox上没有SelectedIndex更新?

时间:2011-10-25 12:10:43

标签: c# wpf mvvm combobox

我使用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,选择A都会将SelectedComboBoxIndex设置为0。在选择第二个A时,我希望所选索引为3。

为什么会这样?是否有不同的方法来实现我正在尝试做的事情,即获得所选的绝对列表索引?

1 个答案:

答案 0 :(得分:2)

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