反序列化破坏了我的ViewModel的绑定

时间:2019-06-22 01:36:03

标签: c# wpf data-binding deserialization

我是一位经验丰富的程序员,他是第一次将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。但是,我可以确认我的统计数据在那里。

Create a New 1979 Season

After opening 1903 Season (from saved file)

0 个答案:

没有答案