Я довольно опытный программист, который впервые использует 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 года (из сохраненного файла)