Я работаю над проектом C # WPF. У меня есть несколько кнопок, которые я хочу сделать по сути одно и то же, но опубликовать результаты обратно в разные текстовые поля. Аналогично фрагменту кода xaml ниже:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<TextBox x:Name="ATextbox"/>
<TextBox x:Name="BTextbox"/>
<TextBox x:Name="CTextbox"/>
</StackPanel>
<StackPanel Grid.Column="1">
<Button x:Name="AButton" Click="Button_Click" Content="Foo" Grid.Column="1"/>
<Button x:Name="BButton" Click="Button_Click" Content="Foo" Grid.Column="1"/>
<Button x:Name="CButton" Click="Button_Click" Content="Foo" Grid.Column="1"/>
</StackPanel>
</Grid>
Как вы можете видеть, мне бы очень хотелось иметь один метод "щелчка" для обработки всех трех кнопок. Я бы хотел, чтобы C # выглядел примерно так:
private void Button_Click(object sender, EventArgs e)
{
//Get the name of the button clicked
DependencyObject dpsender = sender as DependencyObject;
string name = dpsender.GetValue(FrameworkElement.NameProperty) as string;
string subName = name.Substring(0, 1);
string tbName = subName + "Textbox";
string text = "Calculated text";
tbName.Text = text;
}
По сути, я получаю название нажатой кнопки, беру префикс (A, B или C), затем объединяю префикс и «Textbox», чтобы получить имя текстового поля, в которое я хочу поместить данные.
Последняя строка, очевидно, не работает, потому что tbName является строкой, которая не имеет свойства "Text". Однако я знаю, что во время выполнения имя объекта Textbox будет содержаться в переменной tbName. Есть ли способ достичь того, что я пытаюсь сделать? Я знаю, что я мог бы создать отдельные методы для каждой кнопки, но я бы предпочел этого избежать, если это возможно.
Спасибо