我想将ComboBox的SelectedIndex属性绑定到我的ViewModel。这是代码。WPF Combobox SelectedIndex属性绑定不工作
的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;
}
}
正如你可以看到我想设置组合框的为 “4” 的SelectedIndex的。这不会发生,并且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>
如何和你在哪里实例化视图模型?你把它与视图绑定在哪里? – strmstn
我怀疑你没有正确设置'DataContext'。输出窗口是否提到绑定错误? – Joulukuusi
ViewModel由Caliburn Micro引导程序创建。该视图也由Caliburn创建。我在View中有一些绑定到ViewModel的控件,这些绑定工作正常。这表明View正确绑定到ViewModel。唯一不起作用的是设置Combobox的SelectedIndex,如我的问题 – Jatin