Мой вопрос очень похож на это: ( Связывание событий с кнопками в ItemsControl ), но я не нашел там решения.У меня есть ItemsControl и внутри его DataTemplate, у меня есть другой ItemsControl.Элементы во внешнем элементе управления содержат классы, которые имеют некоторые свойства, и одно из свойств является коллекцией.Внутренний источник ItemsControl связан с этой коллекцией, а внутри внутреннего элемента управления DataTemplate есть кнопка.
Моя проблема заключается в том, что когда я подключаю событие для кнопки (.. Click = "dummyfunc") ипри попытке запустить проект я получаю необработанное исключение XamlParseException (4004) и говорит, что «не удалось присвоить свойству System.Windows.Controls.Primitives.ButtonBase.Click» я объявил свой обработчик событий в CodeBehind страницы, на которойвнешний ItemsControl находится в Xaml.И это прекрасно работает для кнопок, размещенных во внешних элементах управления DataTemplate.Но в шаблоне внутренних элементов управления я просто не могу подключить какие-либо события.
Одно работает:
<HyperlinkButton Content="x">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<ei:CallMethodAction MethodName="DeleteMe" TargetObject="{Binding}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</HyperlinkButton>
Но это вызывает только метод (DeleteMe), который реализован в элементе Iупомянутое выше, имеет некоторые свойства и коллекцию.
Но вместо этого мне нужно обработать события во внутреннем элементе управления обычным методом:
public void dummyfunc(object sender, RoutedEventArgs e){...}
(так что я могуполучить кнопку, которая запустила событие, например:
sender as HyperinkButton
или
e.OriginalSource as HyperlinkButton
Я полагаю, проблема в том, что событие не всплыло, и я получаю исключение синтаксического анализа, потому что анализаторне могу найти объявление обработчика события в фактической области видимости, которая, очевидно, не является CodeBehind для внутреннего контроля: (
Причина, по которой мне это нужно, заключается в том, что я хотел бы сделать некоторую пользовательскую логику пользовательского интерфейса в коде, ивызывать логику DeleteMe как-то только после этого.
Спасибо, Балинт