#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 вам нужно получить эти значения и использовать их по своему усмотрению. Смотрите редактирование.