组合框不显示更改值
我卡在一个奇怪的组合框问题。组合框不显示更改值
我使用的是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>
The 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; }
}
我的问题:
- Initialy的组合框没有项目选择
- 当我在视图模型中,而不是视图更改值,该值不会更新组合框。
将组合框SelectedItem的绑定更改为TwoWay和OnPropertyChange没有任何影响!
我错过了什么?
这里是我做MVVM
养活我用枚举值的组合框在我的ViewModel我有这样的,我把我的值(字符串)在资源文件
private ObservableCollection<WritableKeyValuePair<int, string>> _traceDisplayList = null;
private WritableKeyValuePair<int, string> _selectedTraceType = new WritableKeyValuePair<int, string>();
public OptionsFilterViewModel()
{
_traceDisplayList = new ObservableCollection<WritableKeyValuePair<int, string>>();
_traceDisplayList.Add(new WritableKeyValuePair<int, string>((int)TraceDisplayEnum.All, ProjectResources.All));
_traceDisplayList.Add(new WritableKeyValuePair<int, string>((int)TraceDisplayEnum.WithEx, ProjectResources.TraceException));
_traceDisplayList.Add(new WritableKeyValuePair<int, string>((int)TraceDisplayEnum.ExOnly, ProjectResources.ExceptionOnly));
}
/// <summary>
/// Listes des types de traces
/// </summary>
public ObservableCollection<WritableKeyValuePair<int, string>> TraceDisplayList
{
get { return _traceDisplayList; }
set
{
_traceDisplayList = value;
RaisePropertyChanged<OptionsFilterViewModel>(x => x.TraceDisplayList);
}
}
/// <summary>
/// Type de trace sélectionné dans la liste
/// </summary>
public WritableKeyValuePair<int, string> SelectedTraceType
{
get
{
return _selectedTraceType;
}
set
{
_selectedTraceType = value;
RaisePropertyChanged<OptionsFilterViewModel>(x => x.SelectedTraceType);
}
}
考虑阅读我的实际任务。我知道如何绑定组合框。 – Jaster
但用这种方法,你不会有麻烦......这就是我所说的(写作) – NamedJohnny
你正在做一些完全不同的事情。你有本地化的问题。你也不会更新视图模型的值.. – Jaster
集的构造SelectedItem绑定模式twoway – RockWorld
不会改变任何内容。同时将updatesourcetrigger设置为propertychanged也无济于事。请不要猜测:) – Jaster
您能否提供具有Items属性的类的详细信息(使用)? (询问不想猜)。 –
RockWorld