Я пытаюсь получить доступ к тексту кнопки, когда нажимаю на нее. Все кнопки создаются шаблоном данных. Кнопки находятся внутри UniformGrid
, который находится внутри ItemsControl
:
<ItemsControl x:Name="uniformControl">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid MouseDown="Button_PreviewMouseDown">
</UniformGrid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Тогда в моем коде позади (мой Operations
класс, который содержит связывающее содержимое, не включен):
public MainWindow()
{
InitializeComponent();
uniformControl.PreviewMouseDown += new MouseButtonEventHandler(Button_PreviewMouseDown);
uniformControl.ItemsSource = Operations.operations;
}
private void Button_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
var clickedElement = e.OriginalSource;
Debug.WriteLine(clickedElement);
string keyword = (e.Source as Button).Content.ToString();
Debug.WriteLine(keyword);
}
Хотя вместо OriginalSource
, являющегося кнопкой, это либо textblock
, либо border
. Я предполагаю, что это связано с тем, что textblock
и border
являются определенной частью нажатой кнопки, поскольку PreviewMouseDown
отслеживает путь к наименьшему дочернему элементу из того, что я понимаю.
Строка, в которой я присваиваю значение keyword
, также выдает NullRefernceExcpetion
.
Я пытался использовать MouseDown
, но метод даже не запускался, когда я пытался это сделать.
Есть идеи? Спасибо за ваше время.