/// <summary>
 /// This constructor istantiates the data context.
 /// </summary>
 /// <param name="DBConnectionString">The DB connection string to pass to the data context.</param>
 public LibraryViewModel(string DBConnectionString)
 {
     _DataContext = new LibraryDataContext(DBConnectionString);
 }
        /// <summary>
        /// Constructor for the Application object.
        /// </summary>
        public App()
        {
            // Global handler for uncaught exceptions.
            UnhandledException += Application_UnhandledException;

            // Standard Silverlight initialization
            InitializeComponent();

            // Phone-specific initialization
            InitializePhoneApplication();

            // Show graphics profiling information while debugging.
            if (System.Diagnostics.Debugger.IsAttached)
            {
                // Display the current frame rate counters.
                Application.Current.Host.Settings.EnableFrameRateCounter = true;

                // Show the areas of the app that are being redrawn in each frame.
                //Application.Current.Host.Settings.EnableRedrawRegions = true;

                // Enable non-production analysis visualization mode,
                // which shows areas of a page that are handed off to GPU with a colored overlay.
                //Application.Current.Host.Settings.EnableCacheVisualization = true;

                // Disable the application idle detection by setting the UserIdleDetectionMode property of the
                // application's PhoneApplicationService object to Disabled.
                // Caution:- Use this under debug mode only. Application that disables user idle detection will continue to run
                // and consume battery power when the user is not using the phone.
                PhoneApplicationService.Current.UserIdleDetectionMode = IdleDetectionMode.Disabled;
            }

            // Specify the local database connection string.
            string DBConnectionString = "Data Source=isostore:/Transfer.sdf";

            // Create the database if it does not exist.
            using (TransferDataContext<AbstractTransfer> db = new TransferDataContext<AbstractTransfer>(DBConnectionString))
            {
                if (db.DatabaseExists() == false)
                {
                    // Create the local database.
                    db.CreateDatabase();

                    AbstractTransfer MilkyWay = new DownloadTransfer { TransferUrl = @"http://www.cfa.harvard.edu/image_archive/2009/1/hires.jpg", Path = "/space", Filename = "milky_way_highres.jpg" };

                    // Prepopulate with a page
                    db.Transfers.InsertOnSubmit(MilkyWay);

                    // Save pages to the database.
                    db.SubmitChanges();
                }
            }

            // Create the ViewModel object.
            _TransferViewModel = new TransferViewModel<AbstractTransfer>(DBConnectionString);

            // Query the local database and load observable collections.
            _TransferViewModel.LoadCollectionsFromDatabase();

            // Transfer manager
            _TransferManager = new TransferManager.TransferManager(_TransferViewModel);

            // Create the database if it does not yet exist.
            using (LibraryDataContext db = new LibraryDataContext("isostore:/Library.sdf"))
            {
                if (db.DatabaseExists() == false)
                {
                    // Create the database.
                    db.CreateDatabase();
                }
            }

            // Create the LibraryViewModel object.
            _LibraryViewModel = new LibraryViewModel("isostore:/Library.sdf");

            // Query the local database and load observable collections.
            _LibraryViewModel.LoadCollectionsFromDatabase();
        }