我是一位经验丰富的程序员,他是第一次将C#与WPF和数据绑定结合使用。我创建了一个应用程序,该应用程序在创建数据的新实例时运行良好。问题出在我序列化和反序列化这些对象时。当将数据读回我的应用程序时,我的绑定似乎消失了。
我的问题似乎在于这样的事实,当对我的对象进行反序列化时,数据得到更新,但是原始绑定丢失了。我可以看到变量使用保存信息进行了更新,但是当我反序列化对象时,我的INotifyPropertyChanged属性都没有被触发。
public class SeasonClass : Notifier
{
private string year;
public string Year
{
get { return year; }
set
{
year = value;
OnPropertyChanged("Year");
}
}
public ObservableCollection<Player> Players { get; set; }
public ObservableCollection<Team> Teams { get; set; }
[Serializable]
public class Team : Notifier
{
private string abbreviation;
public string Abbreviation
{
get { return abbreviation; }
set
{
abbreviation = value;
OnPropertyChanged("Abbreviation");
}
}
public void UpdateFromFile(TotalVariables ViewMODEL)
{
ViewMODEL.Statistics =
BinarySerialization.ReadFromBinaryFile<SeasonClass>("Data/1903a.scd") as SeasonClass;
}
public TotalVariables()
{
BoxScoreString = "";
TempTeams = new ObservableCollection<TeamItem>();
Statistics = new SeasonClass();
<syncfusion:ComboBoxAdv x:Name="comboBoxVisitor" Text="{Binding TempTeams[0].Name, Mode=TwoWay}"
IsEditable="True" DisplayMemberPath="FullTeamName"
SelectedValueDelimiter=" - "
SelectionChanged="ComboBoxVisitor_SelectionChanged"
SelectedValuePath="City"
DefaultText="Visitor" ItemsSource="{Binding Statistics.Teams, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
IsTextSearchCaseSensitive="False" Drop="ComboBoxVisitor_Drop" DropDownOpened="ComboBoxVisitor_DropDownOpened">
public class TotalVariables : Notifier
{
public string testVariable { get; set; }
public SeasonClass Statistics { get; set; }
public TotalVariables()
{
/// constructor for viewModel (TotalVariables is my viewModel class)
BoxScoreString = "";
TempTeams = new ObservableCollection<TeamItem>();
Statistics = new SeasonClass();
}
}
TotalVariables基本上是我的ViewModel类的名称。同样,当我创建原始ViewModel时,UI中的所有内容都会更新。我所有保存的数据都存储在我的Statistics对象中。我可以轻松地序列化和反序列化我的Statistics数据,但是当我加载保存的Statistics数据时,我所有的绑定都是空白的,并且不再触发INotifyChanged。但是,我可以确认我的统计数据在那里。