【发布时间】:2012-11-15 00:44:56
【问题描述】:
我正在尝试将组合框的 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 属性永远不会被调用(设置和获取)。上述代码绑定失败的任何原因。
更新
<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>
【问题讨论】:
-
您如何以及在何处实例化 ViewModel?你在哪里将它绑定到视图?
-
我怀疑你没有正确设置
DataContext。输出窗口是否显示绑定错误? -
ViewModel 由 Caliburn Micro 引导程序创建。该视图也是由 Caliburn 创建的。我在 View 中有一些绑定到 ViewModel 的控件,这些绑定工作正常。这表明 View 已正确绑定到 ViewModel。唯一不起作用的是按照我的问题中所述设置组合框的 SelectedIndex
-
你能不能给我们看看静态数据是什么样子的?
-
我已更新问题以包含 StaticResource 键定义。