Window Phone 7 C # передает параметры в routedeventhandler

#c# #windows-phone-7

#c# #windows-phone-7

Вопрос:

Я пытаюсь передать параметры функции, которая используется в RoutedEventHandler

 Button start = new Button();
start.Click  = new RoutedEventHandler(playSelectedAlarm_Click);

private void playSelectedAlarm_Click(object sender, EventArgs e)
{
    NavigationService.Navigate(new Uri("/AlarmPicker.xaml", UriKind.Relative));
}
  

как мне это сделать? Или есть способ получше?

Ответ №1:

Вы могли бы добавить свои параметры в свойство Tag кнопки. Затем извлеките их в вашем обработчике событий:

 Button start = new Button();
start.Tag = new string[] { "param1", "param2" };
start.Click  = new RoutedEventHandler(playSelectedAlarm_Click);

private void playSelectedAlarm_Click(object sender, EventArgs e)
{        
    //extract the parameters and cast to a `string[]`
    var myParameters = (string[])((Button)sender).Tag;
    string p1 = myParameters[0]; //value is "param1"
    string p2 = myParameters[1]; //value is "param2"


    NavigationService.Navigate(new Uri("/AlarmPicker.xaml", UriKind.Relative));
}
  

Tag Свойство ожидает object тип, поэтому вы можете ввести массив параметров, коллекцию, строку и т.д..

Ответ №2:

Измените свой :

 NavigationService.Navigate(new Uri("/AlarmPicker.xaml", UriKind.Relative));
  

Для

 var uri = "/AlarmPicker.xaml?idx="   url   "amp;title="   title);
NavigationService.Navigate(new Uri(uri, UriKind.Relative));
  

После этого в вашем AlarmPicker.xaml.cs добавьте это:

 out string m_Link = string.empty;
out string m_Title = string.empty;
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);

    NavigationContext.QueryString.TryGetValue("idx", out m_Link);
    NavigationContext.QueryString.TryGetValue("title", out m_Title);

    Console.Writeline("IDX: "   m_link);
    Console.Writeline("TITLE: "   m_Title);
}
  

Он вызывается при загрузке AlarmPicker.xaml!
Он используется для получения передаваемых значений, таких как строка запроса.

надеюсь, это поможет

Комментарии:

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

2. Вы можете передавать значения, используя синтаксис «?» и «amp;», like и url. В вашем классе receiver вам нужно получить эти значения и использовать их по своему усмотрению. Смотрите редактирование.