组合框绑定在wpf中的反序列化中不起作用
我将combobox的selectedItem属性绑定到某个自定义对象,并使用序列化。当应用程序当前正在运行时,绑定工作正常。停止应用程序时,我正在序列化对象。现在,当我启动应用程序时,我正在反序列化对象并检索值。 现在,如果我看到comobox绑定,它不会显示任何绑定。但是,它仍然在组合框中显示项目。我已经重写了类中的Equals方法。但我仍然没有看到任何约束力。 这是我的一些代码:组合框绑定在wpf中的反序列化中不起作用,wpf,c#-4.0,Wpf,C# 4.0,我将combobox的selectedItem属性绑定到某个自定义对象,并使用序列化。当应用程序当前正在运行时,绑定工作正常。停止应用程序时,我正在序列化对象。现在,当我启动应用程序时,我正在反序列化对象并检索值。 现在,如果我看到comobox绑定,它不会显示任何绑定。但是,它仍然在组合框中显示项目。我已经重写了类中的Equals方法。但我仍然没有看到任何约束力。 这是我的一些代码: [Serializable] public class MyModel : ViewModelBase {
[Serializable]
public class MyModel : ViewModelBase
{
private int _id;
public int Id
{
get { return _id; }
set
{
_id = value;
OnPropertyChanged(() => Id);
}
}
private string _name;
public string Name
{
get { return _name; }
set
{
_name = value;
OnPropertyChanged(() => Name);
}
}
public override bool Equals(object obj)
{
if (obj == null) return false;
if (this.GetType() != obj.GetType()) return false;
return this.Id == ((MyModel )obj).Id || this.Name == ((MyModel )obj).Name;
}
}
[Serializable]
公共类MyViewModel:ViewModelBase
{
}
我的Xaml是:-
<ComboBox SelectedItem="{Binding SelectedMyModel , Mode=TwoWay}" DisplayMemberPath="Name" ItemsSource= "{Binding DataContext.MyModelSource,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}"
>'
'
这是否意味着要绑定并序列化同一对象?如果是这样的话,这意味着您混合了viewmodel和model,这不是很好。除此之外:请出示一些代码。XAML、序列化和viewmodel中的属性会很有帮助。谢谢@hSchroedl的回复。你好@hSchroedl。我刚刚上传了一些代码片段,请查看一下,如果我做错了什么,请告诉我。好的,我不明白。代码看起来不错。如果combobox显示了正确的项目,那么“但我仍然没有看到任何绑定”到底是什么意思?我的意思是combobox显示了其中填充的所有项目,但它没有显示combobox中的选定项目。我的意思是combobox的SelectedItem不起作用。
<ComboBox SelectedItem="{Binding SelectedMyModel , Mode=TwoWay}" DisplayMemberPath="Name" ItemsSource= "{Binding DataContext.MyModelSource,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}"
>'