Как передать переменную на нажатие кнопки? - PullRequest
0 голосов
/ 23 сентября 2011

В настоящее время я использую этот код для отключения нескольких кнопок на основе XML-файла.У меня есть событие onclick для кнопок.Но я хотел бы передать переменную Name от каждой кнопки на другую страницу.

Я настроил ее так, как я думал, что это будет работать, но значение не передается, и сообщениеполе не показывает номер от каждой остановки.Тем не менее, когда я устанавливаю содержимое кнопки в качестве root. Имя отображается на кнопке в порядке.

void busStops_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    if (e.Error != null)
        return;

    var busStopInfo = XDocument.Load("Content/BusStops2.xml");

    var Transitresults = from root in busStopInfo.Descendants("Placemark")
                         let StoplocationE1 = root.Element("Point").Element("coordinates")
                         let nameE1 = root.Element("name")

                         select new TransitVariables

                             (StoplocationE1 == null ? null : StoplocationE1.Value,
                                      nameE1 == null ? null : nameE1.Value);

    foreach (var root in Transitresults)
    {
        var accentBrush = (Brush)Application.Current.Resources["PhoneAccentBrush"];

        var pin = new Pushpin
        {
            Location = new GeoCoordinate
                {
                    Latitude = root.Lat,
                    Longitude = root.Lon
                },

            Background = accentBrush,
            Content = root.Name,
            Tag = root,             

        };

        pin.MouseLeftButtonUp += BusStop_MouseLeftButtonUp;

        BusStopLayer.AddChild(pin, pin.Location);

    }
}

void BusStop_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{       
    var bNumb = ((FrameworkElement)sender);
    if (bNumb != null)
    {
        // Here is would like to pass the Name element from var transitresults to another page. 
         // The element Name is different for each pushpin and is parses from the XML     
    }
}

    // Add properties to your class
    public class TransitVariables
    {
        // Add a constructor:
        public TransitVariables(string stopLocation, string name)
        {
            this.StopLocation = stopLocation;
            this.name = name;
            if (!string.IsNullOrEmpty(StopLocation))
            {
                var items = stopLocation.Split(',');
                this.Lon = double.Parse(items[0]);
                this.Lat = double.Parse(items[1]);
                this.Alt = double.Parse(items[2]);


            }
        }

        public string StopLocation { get; set; }
        public string name { get; set; }
        public double Lat { get; set; }
        public double Lon { get; set; }
        public double Alt { get; set; }



     }

Ответы [ 2 ]

0 голосов
/ 24 сентября 2011

На всякий случай, если кому-то интересно. Я решил это и решил мою проблему. Ключ правильно настраивал отправителя и тег.

public void BusStop_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{

    var item = (sender as Pushpin).Tag as TransitVariables;

    if (item != null)
    {
        string id = item.name;

       NavigationService.Navigate(new Uri("/DepBoard.xaml?ListingId=" + id, UriKind.Relative));
       MessageBox.Show("Bus Stop Number " + id);

    }
}
0 голосов
/ 23 сентября 2011

Вы можете ссылаться на свойство Tag Pushpin внутри вашего обработчика:

void BusStop_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{       
    var bNumb = ((FrameworkElement)sender);
    if (bNumb != null)
    {
        //bNumb is of type Pushpin
        //bNumb.Tag should have your id in it, I assume it's going to be an XElement object
        string id = "Bus Number Should go here" ;
        NavigationService.Navigate(new Uri("/TestPage.xaml?stopNumber=" + id, UriKind.Relative));
        MessageBox.Show("Stop Number" + id);           
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...