В качестве альтернативы вы можете использовать команду вместо события. Если вы привяжете свою кнопку к команде и передадите вместе с ней параметр команды, вы сможете получить элемент, связанный с этой кнопкой. Пример кода:
<!-- This is the button-->
<Button
Grid.Column="2"
Content="{Binding PercentMapped}"
Command="SolutionNamespace:CommandClass.ButtonClickedCommand"
CommandParameter="{Binding}" />
Я не уверен, насколько вы знакомы с командным WPF, но вы заметите, что CommandParameter привязывается к контексту без имени пути, то есть он связывается с необходимыми WorkItemTypeMappings.
Пример кода команды:
public static SimpleCommand ButtonClickedCommand { get; set; }
static CommandClass()
{
ButtonClickedCommand = new SimpleCommand
{
ExecuteDelegate =
x=> ButtonClicked(x as WorkItemTypeMappings)
};
}
public static ButtonClicked(WorkItemTypeMappings mappings)
{
if(mappings != null) MessageBox.Show(mapping.PercentMapped)
}
Вы заметите, что ButtonClickedCommand является статическим, это необходимо, потому что кнопка не может получить доступ к команде из текущего контекста привязки.
SimpleCommand
- это просто упрощенная реализация ICommand, можете Google эту, если вы не уверены. Я надеюсь, что это не излишняя проблема, но вы не ошибетесь с командами WPF.
Удачи.