コンボボックスが同じ文字列値を持つことができるシナリオがあります。exaコンボボックスの場合、ドロップダウンに次の値を含めることができます: "Test"、 "Test1"、 "Test1"、 "Test1"、 "Test2"、
選択したインデックスに基づいて、別のコンボボックスを埋めています。私のXamlは次のようになります:
<Grid >
<Grid.RowDefinitions>
<RowDefinition Height="40"></RowDefinition>
</Grid.RowDefinitions>
<ComboBox ItemsSource="{Binding Path=ComboList, Mode=OneWay}"
SelectedIndex="{Binding Path=ComboIndex, Mode=TwoWay}"/ >
</Grid>
ViewModelは次のようになります。
class TestViewModel : INotifyPropertyChanged
{
private IList<string> _comboList = new List<string>
{
"Test",
"Test1",
"Test1",
"Test1",
"Test2",
};
public IList<string> ComboList
{
get { return _comboList; }
}
private int _comboIndex;
public int ComboIndex
{
get { return _comboIndex; }
set
{
if (value == _comboIndex)
{
return;
}
_comboIndex = value;
OnPropertyChanged("ComboIndex");
}
}
private void OnPropertyChanged(string prop)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(prop));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
私が直面している問題は、同じ文字列値の間で問題が発生した場合に、SelectedIndexが起動されないことです(インデックス1にある「Test1」からインデックス2にある「Test1」に値を変更するなど)。