コンボボックスの SelectedIndex プロパティを ViewModel にバインドしようとしています。これがコードです。
Xaml:
<ComboBox x:Name="BloodGroupFilter" SelectedIndex="{Binding Path=SelectedBloodGroupIndex, Mode=TwoWay}">
<ComboBox.ItemsSource>
<CompositeCollection>
<ComboBoxItem Foreground="red" FontStyle="Italic">No Filter</ComboBoxItem>
<CollectionContainer Collection="{Binding Source={StaticResource BloodGroupEnum}}"/>
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
ビューモデル
private int _selectedBloodGroupIndex = 4;
public int SelectedBloodGroupIndex {
get { return _selectedBloodGroupIndex; }
set {
_selectedBloodGroupIndex = value;
}
}
ご覧のとおり、コンボボックスの SelectedIndex を「4」に設定しようとしています。これは発生せず、SelectedIndex は 0 に設定されます。また、ユーザーがコンボボックスの特定のアイテムを選択すると、ViewModel の SelectedBloodGroupIndex プロパティが現在選択されているコンボボックスのアイテムに更新されることを期待していましたが、これも起こりません. ViewModel プロパティが呼び出されることはありません (set と get の両方)。上記のコードでバインディングが失敗する理由。
アップデート
<UserControl.Resources>
<ObjectDataProvider x:Key="BloodGroupEnum" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="enums:BloodGroup" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</UserControl.Resources>