2014-10-30 146 views
0

我想在我的相應頁面橫向顯示從數據庫中6個值,例如 日期|時間|地板|專區|緯度|經度 但頁面只顯示 數據|時間|地板|區 並沒有顯示經緯度 下面是我的XAML代碼的XAML的Windows手機8

<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> 

誰能幫我改進或糾正呢?

的列表itmesource背後的代碼是在這裏下面

public partial class History : PhoneApplicationPage 
{ 





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

     InitializeComponent(); 

    } 

    protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     add.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 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); 
      }); 
     } 
    } 

    public void AddInfo() 
    { 

     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 
     })); 

    } 


} 

和最後一堂課DBhelper類保持值

public 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

什麼是ListData.ItemsSource設置爲?你可以在後面顯示代碼嗎? – bit 2014-10-30 08:33:34

+0

@bit是我按照您的要求更新了以上代碼。感謝您查看我的代碼 – 2014-10-30 08:41:48

回答

0

您正在將您的文本塊綁定到location_longitude,但我沒有看到任何位置_經度(或緯度)在你的代碼後面。

另外,你有一點點的拼寫錯誤在你LongitudeLatitude聲明

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

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

試圖將文本塊綁定爲

<TextBlock x:Name="LatTxt" Text="{Binding Latitude}" TextWrapping="Wrap" /> 
<TextBlock x:Name="LongTxt" Text="{Binding Longitude}" TextWrapping="Wrap" /> 

希望這有助於。

+1

緯度相同。屬性名稱必須與NotifyPropertyChanged的參數相同,即大寫字母「Latitude」。 – Clemens 2014-10-30 08:51:00

+0

是的,我相應地更新了代碼,我會更新句子以確保它的精確性。 – Aymeric 2014-10-30 08:52:48

+0

@America非常感謝。有效! – 2014-10-30 08:58:01