2013-07-02 3 views
1

Как применить изолированное хранилище к текстовым блокам в следующей программе. U может понять, что я пытаюсь сделать, увидев эти образы в этой ссылке «How to save values in database using Sqlite?« Мне нужна дата (сегодняшняя дата - которая не включена в код), время (TimeLabel.Text), темп (темп.Label.Text)), расстояние (distanceLabel.Text) должно быть в изолированном хранилище из приведенной ниже программы, чтобы опубликовать их в списке. Любые ссылки, которые могут дать мне хорошую идею хранить ценности в IsolatedStorage (короткий ответ), которые будут опубликованы в Listbox, также принимаются и оцениваются. Спасибо заранее.Как применить изолированное хранилище к значениям в Windows Phone?

//location tracker 
public partial class Mog : PhoneApplicationPage 
     { 
     // private Geo 
      // _watcher = new Geolocator(GeoPositionAccuracy.High); 
      private GeoCoordinateWatcher _watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High); 
      private MapPolyline _line; 
      private DispatcherTimer _timer = new DispatcherTimer(); 
      private long _startTime; 
    public Mog() 
      { 
       InitializeComponent(); 

      _line = new MapPolyline(); 
      _line.StrokeColor = Colors.Red; 
      _line.StrokeThickness = 5; 
      Map.MapElements.Add(_line); 

      _watcher.Start(); 

      _timer.Start(); 
      _startTime = System.Environment.TickCount; 

      _watcher.PositionChanged += Watcher_PositionChanged; 

      _timer.Interval = TimeSpan.FromSeconds(1); 
      _timer.Tick += Timer_Tick; 
     } 


private double _kilometres; 
     private double calories;  
     private long _previousPositionChangeTick; 

private void Watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e) 
     { 
      //IsolatedStorageSettings milli = IsolatedStorageSettings.ApplicationSettings; 
      var coord = new GeoCoordinate(e.Position.Location.Latitude, e.Position.Location.Longitude); 

      if (_line.Path.Count > 0) 
      { 
       var calories = caloriesLabel.Text; 

       var previousPoint = _line.Path.Last(); 
       var distance = coord.GetDistanceTo(previousPoint); 
       var millisPerKilometer = (1000.0/distance) * (System.Environment.TickCount - _previousPositionChangeTick); 
       _kilometres += distance/1000.0;    
       paceLabel.Text = TimeSpan.FromMilliseconds(millisPerKilometer).ToString(@"mm\:ss"); 
       distanceLabel.Text = string.Format("{0:f2} km", _kilometres); 
       caloriesLabel.Text = string.Format("{0:f0}", _kilometres * 65); 
       PositionHandler handler = new PositionHandler(); 
       var heading = handler.CalculateBearing(new Position(previousPoint), new Position(coord)); 
       Map.SetView(coord, Map.ZoomLevel, heading, MapAnimationKind.Parabolic); 
      } 
else 
     { 
     Map.Center = coord; 
     } 

     _line.Path.Add(coord); 
     _previousPositionChangeTick = System.Environment.TickCount; 
    } 
} 
+0

Так что вы хотите, чтобы значения, хранящиеся в IsoStorage или Sqlite? –

+0

@Shawn Kendrot может помочь вам разместить эти значения в IsolatedStorage? –

+0

вы хотите сохранить весь список или только последние значения? –

ответ

0

Один из лучших способов хранения таких коллекций - сериализация коллекции в json и сохранение файла. Вы можете использовать Json.Net для этого. Вам нужно будет создать коллекцию объектов для хранения значений.

public class RunMarker 
{ 
    public double Kilometers { get; set; } 
    public TimeSpan Pace { get; set; } 
    public double Calories { get; set; } 
} 

При изменении позиции вы должны установить значения для этого и добавить их в коллекцию.

private void Watcher_PositionChanged(object sender, GeoPositionChangedEventArgs<GeoCoordinate> e) 
{ 
    // add actual values 
    _markers.Add(new RunMarker { Kilometers = 0, Pace = TimeSpan.FromSeconds(1), Calories = 50 }); 
} 

Затем, когда вы хотите, чтобы сохранить его сериализации в Json и сохранить файл в IsolatedStorage

const string MarkerFileName = "RunMarker.json"; 

var storage = IsolatedStorageFile.GetUserStoreForApplication(); 
if (storage.FileExists(MarkerFileName)) storage.DeleteFile(MarkerFileName); 

using (var fileStream = storage.CreateFile(MarkerFileName)) 
{ 
    //Write the data 
    using (var isoFileWriter = new StreamWriter(fileStream)) 
    { 
     var json = JsonConvert.SerializeObject(_markers); 
     isoFileWriter.WriteLine(json); 
    } 
} 

Надежда, что помогает

Смежные вопросы