我将combobox的selectedItem属性绑定到某个自定义对象,我正在使用serilization。当应用程序当前正在运行时,绑定工作正常。当我停止一个应用程序时,我正在对该对象进行seriliazing。现在,当我开始应用程序时,我正在对该对象进行deseriliazing并检索这些值。 现在,如果我看到comobox绑定,它不会显示任何绑定。但是,它仍然显示组合框中的项目。我在课堂上覆盖了Equals方法。但我仍然没有看到任何约束力。 这是我的一些代码:
[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]
public class MyViewModel:ViewModelBase {
private MyModel _selectedMyModel;
[XmlIgnore]
public MyModel SelectedMyModel
{
get
{
return _selectedMyModel ;
}
set
{
_selectedMyModel = value;
this.OnPropertyChanged(() => SelectedYAxisDetail);
}
}
}
我的Xaml是: -
<ComboBox SelectedItem="{Binding SelectedMyModel , Mode=TwoWay}" DisplayMemberPath="Name" ItemsSource= "{Binding DataContext.MyModelSource,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}"
>'