Десериализация разрывов Binding of My ViewModel - PullRequest
0 голосов
/ 22 июня 2019

Я довольно опытный программист, который впервые использует 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, все в моем пользовательском интерфейсе обновляется.Все мои сохраненные данные хранятся в моем объекте статистики.Я могу легко сериализовать и десериализовать свои статистические данные, но когда я загружаю свои сохраненные статистические данные, все мои привязки остаются пустыми и больше не запускают мой INotifyChanged.Однако я могу убедиться, что мои статистические данные есть.

Создать новый сезон 1979 года

После открытия сезона 1903 года (из сохраненного файла)

...