Передать метод нажатия кнопки в качестве параметра в коде позади?
У меня есть шаблон данных с кнопкой, которая привязывается к некоторому тексту, и обработчиком щелчков, который жестко закодирован.
<DataTemplate DataType= "{x:Type local:ContentClass} " />
< Button Content = "{Binding MyContent} "Click = "Button_Click"/>
< / DataTemplate>
public class ContentClass { public string MyContent { get; set; } public ContentClass(string content) { MyContent = content; } }Я могу отобразить кнопку с текстом "Привет" со следующим кодом:
ContentClass foo = new ContentClass("hello");Это прекрасно работает.
То, что мне нужно, чтобы быть в состоянии сделать это:
ContentClass foo = new ContentClass("hello", Method1);Затем, когда вы нажмете на кнопку,
Method1
выполняется (что будет записано в коде сзади).Из всех
ICommand
примеры, с которыми я сталкивался, рыская в интернете, ни один не может показать, как это сделать. Они рассказывают все о том, как ICommand
работает, но никто на самом деле не показывает, как подключить его, не говоря уже о том, чтобы параметризовать его в коде позади.Любая помощь будет оценена по достоинству.
Что я уже пробовал:
Я попытался реализовать
ICommand
интерфейс, RelayCommand
, прием. Примеры кода компилируются, но при нажатии кнопки ничего не происходит. Ни одна точка останова не попадает куда-либо, когда я переступаю через нее (???).
Mike Niday
Я попытался привязать свойство Name, чтобы просто использовать тот же обработчик, а затем использовать оператор case для вызова соответствующего метода на основе уникального имени (я знаю, kludgy, но эй, это может сработать), но вы не можете привязаться к свойству Name.
Mike Niday
Я решил эту проблему клуджийским способом, добавив маркер в свой класс данных, а затем отключив маркер в универсальном обработчике (DataContext), чтобы определить, какой метод вызывать. Тем не менее, я действительно хотел бы знать, как решить эту проблему большим мальчиком. :-)
Maciej Los
Ты не видел этот?