2014-10-30 37 views
0

我正在开发一个Windows Phone的应用程序了使用SQLite database.I都存储在history.xaml.cs所有的值,但是当我运行该应用程序了它最终的debugger.break为“>是错误SmartParking.DLL!SmartParking.App.RootFrame_NavigationFailed(object sender,System.Windows.Navigation.NavigationFailedEventArgs e)Line 133 C#“sqlite的随着Windows Phone 8的应用开发

以下是我正在处理的将所有值存储在数据库中并输出的所有3个类它在历史上.xaml

<Grid x:Name="LayoutRoot" Background="Transparent"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 

    <!--TitlePanel contains the name of the application and page title--> 
    <StackPanel Grid.Row="0" Margin="12,17,0,28"> 
     <TextBlock Text="Smart Parking" Style="{StaticResource PhoneTextNormalStyle}"/> 
     <TextBlock Text="History" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/> 
    </StackPanel> 
    <!--ContentPanel - place additional content here--> 
    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> 
     <ListBox x:Name="ListData"> 
      <ListBox.ItemTemplate> 
       <DataTemplate> 
          <StackPanel Orientation="Horizontal"> 
          <TextBlock x:Name= "DateTxt" Text="{Binding Date}" TextWrapping="Wrap" /> 
          <TextBlock x:Name= "TimeTxt" Text="{Binding Time}" TextWrapping="Wrap" /> 
          <TextBlock x:Name= "ZoneTxt" Text="{Binding Zone}" TextWrapping="Wrap"/> 
          <TextBlock x:Name= "FloorTxt" Text="{Binding Floor}" TextWrapping="Wrap"/> 
          <TextBlock x:Name= "LatTxt" Text="{Binding location_latitude}" TextWrapping="Wrap" /> 
          <TextBlock x:Name= "LongTxt" Text="{Binding location_longitude}" TextWrapping="Wrap" /> 
         </StackPanel> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 
    </Grid> 
</Grid> 

以下是dbhelper执行所有主要功能

public class DbHelper 
{ 

    SQLiteConnection dbConn; 

    public async Task<bool> onCreate(string DB_PATH) 
    { 
     try 
     { 
      if (!CheckFileExists(DB_PATH).Result) 
      { 
       using (dbConn = new SQLiteConnection(DB_PATH)) 
       { 
        dbConn.CreateTable<historyTableSQlite>(); 
       } 
      } 
      return true; 
     } 
     catch 
     { 
      return false; 
     } 
    } 


    private async Task<bool> CheckFileExists(string fileName) 
    { 
     try 
     { 
      var store = await Windows.Storage.ApplicationData.Current.LocalFolder.GetFileAsync(fileName); 
      return true; 
     } 
     catch 
     { 
      return false; 
     } 
    } 

    //retrieve all list from the database 
    public ObservableCollection<historyTableSQlite> ReadHistory() 
    { 
     using (var dbConn = new SQLiteConnection(App.DB_PATH)) 
     { 
      List<historyTableSQlite> myCollection = dbConn.Table<historyTableSQlite>().ToList<historyTableSQlite>(); 
      ObservableCollection<historyTableSQlite> HistoryList = new ObservableCollection<historyTableSQlite>(myCollection); 
      return HistoryList; 
     } 
    } 

    // Insert the new info in the histrorytablesqlite table. 
    public void Insert(historyTableSQlite newcontact) 
    { 
     using (var dbConn = new SQLiteConnection(App.DB_PATH)) 
     { 
      dbConn.RunInTransaction(() => 
      { 
       dbConn.Insert(newcontact); 
      }); 
     } 
    } 



}  

这里是history.xaml.cs代码文件

public partial class History : PhoneApplicationPage 
{ 





    // string dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "db.sqlite"); 
    ObservableCollection<historyTableSQlite> DB_HistoryList = new ObservableCollection<historyTableSQlite>(); 

    public History() 
    { 

     InitializeComponent(); 
     AddInfo(); 
     ReadHistoryList_Loaded(); 
    } 



    public void ReadHistoryList_Loaded() 
    { 
     ReadAllContactsList dbhistory = new ReadAllContactsList(); 
     DB_HistoryList = dbhistory.GetAllHistory();//Get all DB contacts 
     ListData.ItemsSource = DB_HistoryList.OrderByDescending(i => i.Id).ToList();//Latest contact ID can Display first 

    } 


    public void AddInfo() 
    { 
    // ListData.Items.Add(new historyTableSQlite{ 
    // Date = DateTime.Now.ToShortDateString(), 
    // Time = DateTime.Now.ToShortTimeString(), 
    // Zone = "PST", 
    // Floor = "10th Floor", 
    // latitude = 35.45112, 
    // longtitude = -115.42622 
    //}); 

     DbHelper Db_helper = new DbHelper(); 
     Db_helper.Insert((new historyTableSQlite { 
      Date = DateTime.Now.ToShortDateString(), 
      Time = DateTime.Now.ToShortTimeString(), 
      Zone = "PST", 
       Floor = "10th Floor", 
      latitude = 35.45112, 
      longtitude = -115.42622 
     })); 

    } 

} ,最后是我intialize我所有的值类

ublic class historyTableSQlite : INotifyPropertyChanged 
{ 
    [SQLite.PrimaryKey, SQLite.AutoIncrement] 

    public int Id { get; set; } 
    private int idvalue; 

    private string dateValue = string.Empty; 

    public string Date { 
     get { return this.dateValue; } 
     set 
     { 
      if (value != this.dateValue) 
      { 
       this.dateValue = value; 
       NotifyPropertyChanged("Date"); 
      } 
     } 
    } 


    private string timeValue = string.Empty; 
    public string Time 
    { 
     get { return this.timeValue; } 
     set 
     { 
      if (value != this.timeValue) 
      { 
       this.timeValue = value; 
       NotifyPropertyChanged("Time"); 
      } 
     } 
    } 

    private string floorValue = string.Empty; 
    public string Floor 
    { 
     get { return this.floorValue; } 
     set 
     { 
      if (value != this.floorValue) 
      { 
       this.floorValue = value; 
       NotifyPropertyChanged("Floor"); 
      } 
     } 
    } 

    public string zoneValue; 
    public string Zone 
    { 
     get { return this.zoneValue; } 
     set 
     { 
      if (value != this.zoneValue) 
      { 
       this.zoneValue = value; 
       NotifyPropertyChanged("Zone"); 
      } 
     } 
    } 

    private double latValue; 
    public double latitude 
    { 
     get { return latValue; } 
     set 
     { 
      if (value != this.latValue) 
      { 
       this.latValue = value; 
       NotifyPropertyChanged("Latitude"); 
      } 
     } 
    } 

    private double lonValue; 
    public double longtitude 
    { 
     get { return this.lonValue; } 
     set 
     { 
      if (value != this.lonValue) 
      { 
       this.lonValue = value; 
       NotifyPropertyChanged("Longitude"); 
      } 
     } 
    } 

    // public string isMarkPoint { get; set; } 

    public historyTableSQlite() 
    { 

    } 

    public historyTableSQlite(string date,string time,string floor,string zone,double lat,double lng) 
    { 
     Date = date; 
     Time = time; 
     Floor = floor; 
     Zone = zone; 
     latitude = lat; 
     longtitude = lng; 
    } 
    public event PropertyChangedEventHandler PropertyChanged; 

    private void NotifyPropertyChanged(String info) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(info)); 
     } 
    } 

}

回答

0

删除ADDINFO()和ReadHistoryList_Loaded()从历史构造函数和覆盖的OnNavigatedTo()这样的。

protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
       AddInfo(); 
       ReadHistoryList_Loaded(); 
    } 

如果它的页面构造函数花费的时间超过几百毫秒来创建页面窗口将假设出现了问题。出于这个原因,最好不要在构造函数中放入任何东西。

+0

谢谢它的工作! – 2014-10-30 08:27:20

+0

测试两次应用程序后,应用程序显示了 ListData.ItemsSource = DB_HistoryList.OrderByDescending(I => i.Id).ToList system.invalid操作(); 请你能帮我找到什么办法来解决这个问题 – 2014-10-30 10:21:07

相关问题