Создайте один обработчик событий Click
и назначьте его всем трем кнопкам. Затем передайте имя нажатой кнопки в качестве параметра на страницу №2.
Обработчик кликов выглядит так:
private void button_Click(object sender, RoutedEventArgs e)
{
// get button name from sender - this can be button #1, #2 or #3
string buttonName = ((Button)sender).Name;
// craft Uri string so that it contains buttonName
NavigationService.Navigate(new Uri("/Page2.xaml?buttonName=" + buttonName, UriKind.Relative));
}
Назначьте этот обработчик событию Click всех трех кнопок. Вы можете использовать окно свойств Visual Studio, чтобы сделать это. Посмотрите на код, как обработчик динамически получает имя кнопки из ее sender
и добавляет его в строку Uri в качестве параметра buttonName
.
Когда пользователь нажимает любую из кнопок, вызывается обработчик и переходит на Page2.xaml
. Предположим, мы хотим получить доступ к buttonName
прямо при открытии страницы. Для этого вы переопределяете метод OnNavigatedTo
:
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
if (NavigationContext.QueryString.ContainsKey("buttonName"))
MessageBox.Show("The user pressed button " + NavigationContext.QueryString["buttonName"]);
}
Переданный параметр доступен через словарь QueryString
. Код проверяет, существует ли запись buttonName
. Если это так, он отображает окно сообщения.
Конечно, вы можете получить buttonName
в любое время, нет необходимости переопределять OnNavigatedTo
. Возможно, вы прочитаете это позже, когда сохраните данные в изолированном хранилище.