我陷入了一个奇怪的ComboBox问题 .
我使用ObjectDataProvider来提供组合框:
<ObjectDataProvider x:Key="foo"
MethodName="GetNames" ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="local:FooEnum" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
现在我有一个类看起来像这样:
public class SomeClass : NotifyHelper
{
private FooEnum _value;
public FooEnum Value
{
get { return _value; }
set
{
_value = value;
OnPropertyChanged("Value");
}
}
}
SomeClass的集合绑定到带有组合框模板的ItemsControl
<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Source={StaticResource foo}}" SelectedItem="{Binding Value}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
ViewModel:
public class VM : NotifyHelper
{
public VM ()
{
Items = new List<SomeClass>();
Items.Add(new SomeClass{Value = Foo.X});
}
public List<SomeClass> Items {get; private set; }
}
我的问题:
- 最初组合框没有选择项目
- 当我在视图中更改视图模型中的值时,组合框中的值不会更新 .
将ComboBox SelectedItem的绑定更改为TwoWay和OnPropertyChange没有任何影响!
我错过了什么?
2 回答
设置SelectedItem绑定模式twoway
是的,GetVaues会在这里完成这项工作 .
这是我用COMVM为comboBox提供枚举值的方法
在我的ViewModel的构造函数中,我有这个,我将我的值(字符串)放在资源文件中