void GetThingsCompleted(object sender, HealthVaultResponseEventArgs e)
        {
            if (e.ErrorText == null)
            {
                XElement responseNode = XElement.Parse(e.ResponseXml);
                // using LINQ to get the latest reading of blood pressure state
                var readings = (from thingNode in responseNode.Descendants("thing")
                                orderby Convert.ToDateTime(thingNode.Element("eff-date").Value) ascending
                                select thingNode).ToList();

                Deployment.Current.Dispatcher.BeginInvoke(() =>
                {
                    BloodPressureModel bloodPressureState = new BloodPressureModel();
                    foreach (var item in readings)
                    {
                        bloodPressureState.Parse(item);
                        _data.Add(new GraphItem
                                     {
                                         Name = bloodPressureState.When.ToShortDateString(),
                                         Value = bloodPressureState.Systolic.ToString()
                                     });
                    }

                    progressOverlay.Hide();
                });
            }
            else
            {
                Dispatcher.BeginInvoke(() =>
                {
                    MessageBox.Show(e.ErrorText);
                });
            }
        }
        void SaveApplicationBarIconButton_Click(object sender, EventArgs e)
        {
            if (Validate() == false)
                return;

            string formattedTime = "";

            if (timeControl.Value.HasValue)
            {
                var timeSpan = TimeSpan.Parse(timeControl.Value.ToString());
                var hours = (Int32)timeSpan.Hours;
                var minutes = (Int32)timeSpan.Minutes;
                var amPmDesignator = "AM";
                if (hours == 0)
                    hours = 12;
                else if (hours == 12)
                    amPmDesignator = "PM";
                else if (hours > 12)
                {
                    hours -= 12;
                    amPmDesignator = "PM";
                }

                formattedTime = String.Format("{0}:{1:00} {2}", hours, minutes, amPmDesignator);
            }
            var dateTime = txtWhen.Text + " " + formattedTime;

            BloodPressureModel model = new BloodPressureModel();
            model.Systolic = int.Parse(txtSystolic.Text);
            model.Diastolic = int.Parse(txtdiastolic.Text);
            model.Pulse = int.Parse(txtPulse.Text);
            model.When = DateTime.Parse(dateTime);
            if (!string.IsNullOrEmpty(txtNote.Text))
            {
                model.Note = txtNote.Text.Trim();
            }
            HealthVaultMethods.PutThings(model, PutThingsCompleted);
            SetProgressBarVisibility(true);
        }
        void GetThingsCompleted(object sender, HealthVaultResponseEventArgs e)
        {
            SetProgressBarVisibility(false);

            if (e.ErrorText == null)
            {
                XElement responseNode = XElement.Parse(e.ResponseXml);
                // using LINQ to get the latest reading of blood pressure state
                XElement latestReading = (from thingNode in responseNode.Descendants("thing")
                                          orderby Convert.ToDateTime(thingNode.Element("eff-date").Value) descending
                                          select thingNode).FirstOrDefault<XElement>();

                if (latestReading != null)
                {
                    BloodPressureModel bloodPressureState = new BloodPressureModel();
                    bloodPressureState.Parse(latestReading);

                    Deployment.Current.Dispatcher.BeginInvoke(() =>
                    {
                        txtLastUpdated.Text = string.Format("When - {0}, Systolic - {1}, Diastolic - {2}",
                                                            bloodPressureState.When.ToString("MMM dd, yyyy"),
                                                            bloodPressureState.Systolic,
                                                            bloodPressureState.Diastolic);
                    });
                }
                else
                {
                    Deployment.Current.Dispatcher.BeginInvoke(() =>
                    {
                        txtLastUpdated.Text = "No readings! Time to track blood pressure.";
                    });
                }
            }
        }