Data binding 程序在使用可观察集合WP7导航时爆炸

Data binding 程序在使用可观察集合WP7导航时爆炸,data-binding,collections,observable,Data Binding,Collections,Observable,在缅因州,在我的按钮上单击事件处理程序我执行: private void addIconButton_Click(object sender, EventArgs e) { if (test) { MessageBox.Show("enters addIcon Main"); Note note = new Note(); note.Modified = DateTimeOff

在缅因州,在我的按钮上单击事件处理程序我执行:

    private void addIconButton_Click(object sender, EventArgs e)
    {
        if (test)
        {
            MessageBox.Show("enters addIcon Main");
            Note note = new Note();
            note.Modified = DateTimeOffset.Now;

            if (note != null)
            {
               Settings.NotesList.Add(note);  //this causes the issue. 

                //Settings.NotesList[0] = note;
            }
            Settings.CurrentNoteIndex = 0;
            test = false;

            MessageBox.Show("right before navigate");
            this.NavigationService.Navigate(new Uri("/DetailsPage.XAML", UriKind.Relative));
            MessageBox.Show("after navigate");

        }
        //DetailsPage mynewPage = new DetailsPage(); 
        //this.Content = mynewPage;

    }
在我的导航上,我做:

    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        MessageBox.Show("enters onNav Main");
        DataContext = null;
        DataContext = Settings.NotesList;


        Settings.CurrentNoteIndex = -1;
        Listbox.SelectedIndex = -1;


        if (Settings.NotesList != null)
        {
            if (Settings.NotesList.Count == 0)
            {
                Notes.Text = "No Notes";
            }
            else
            {
                Notes.Text = "";
            }
        }
    }
在前端代码中,我执行以下操作:

 <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <ListBox x:Name="Listbox" SelectionChanged="listbox_SelectionChanged" ItemsSource="{Binding}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Border Width="800" MinHeight="60">
                        <StackPanel>
                            <TextBlock x:Name="Title" VerticalAlignment="Center" FontSize="{Binding TextSize}"  Text="{Binding Name}"/>
                            <TextBlock x:Name="Date"  VerticalAlignment="Center" FontSize="{Binding TextSize}"  Text="{Binding Modified, 
                                    Mode=TwoWay, Converter={StaticResource dateConverter}}"/>
                        </StackPanel>
                    </Border>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>
</Grid>
当我单击应用程序按钮并在调用navigationService后立即调用invent处理程序时,我得到:

    // Code to execute on Unhandled Exceptions
    private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
    {
        if (System.Diagnostics.Debugger.IsAttached)
        {
            // An unhandled exception has occurred; break into the debugger
            System.Diagnostics.Debugger.Break();
        }
    }
仅当Settings.NotesList.Add(note)时才会发生这种情况;添加到addIconButton\u单击方法中


有什么建议吗

我通过在构造函数内的Notes类中为实例变量设置默认值来修复它

public class Note
{
    public DateTimeOffset Modified { get; set; }
    public string Title  { get; set; }
    public string Content { get; set; }
    public int TextSize { get; set; }

}
    // Code to execute on Unhandled Exceptions
    private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
    {
        if (System.Diagnostics.Debugger.IsAttached)
        {
            // An unhandled exception has occurred; break into the debugger
            System.Diagnostics.Debugger.Break();
        }
    }