Как узнать, какая кнопка была нажата, когда у вас есть общее событие c по нажатию кнопки? - PullRequest
0 голосов
/ 19 марта 2020

Я не смог придумать правильную формулировку для этого вопроса, поэтому извиняюсь, если это сбивает с толку.

Я пишу программу, которая даст пользователю возможность отправлять шестнадцатеричные команды через последовательный номер для числа пользовательских типов объектов. У меня есть 8 кнопок на странице меню XAML, каждая из которых представляет каждый объект, и у меня есть событие C# buttonclick, которое делает свое дело, когда нажимается одна из кнопок, но мне нужно знать, какая кнопка нажата без необходимости писать метод каждой отдельной кнопки. Это связано с тем, что у пользователя есть возможность динамически создавать дополнительные кнопки.

Как узнать событие нажатия кнопки, какая из кнопок (1-8 и c) была нажата?

Ответы [ 2 ]

3 голосов
/ 19 марта 2020
 <Button Content="Button!" Click="OnButtonClick" Command="{Binding WhateverCommand}" />

 private void OnButtonClick(object sender, RoutedEventArgs e)
 {
     Button b = e.Source as Button;  //Here you can get which button is clicked
 }
0 голосов
/ 19 марта 2020

Ответ от Дэвида - одно из возможных решений. Но я не уверен, что ты делаешь тогда? Что должно произойти потом? Это зависит от названия кнопки (содержимого) или чего-то еще?

Не зная вашей конкретной проблемы, я бы все же предпочел решение на основе шаблонов MVVM.

Я бы сделал ObservableCollection SomeActionViewModel, который имеет свойство ICommand и связал бы это свойство в XAML-Template Command={Binding MyCommand}. Я хотел бы связать ObservableCollection с некоторым ItemsControl и шаблонировать его для отображения кнопок

Вот аналогичная проблема с примером MVVM https://social.msdn.microsoft.com/Forums/en-US/2cf2757c-e2a1-4b93-b130-6d900b1359ea/how-to-bind-a-different-command-to-each-dynamic-button-in-c?forum=wpf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...