我使用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。
为什么会这样?是否有不同的方法来实现我正在尝试做的事情,即获得所选的绝对列表索引?
答案 0 :(得分:2)
你应该永远不会在选择器控件中有重复的项目,它只会混淆它们并导致异常,如果你有原始值将它们包装在一个类中。