我是WPF/XAML的新手,所以请忍受noob问题.
我设计了一个控制面板,最终将作为我的网站的后端,并刚刚使用TabControl元素完成了选项卡中所有按钮的布局.(这是使用Visual Studio"窗口"表单设计的.
我的问题是,是否可以在xaml.cs文件中创建一个函数来动态处理我所有按钮元素的特定事件?例如...
我有30多个按钮,不想在c#代码中使用30个不同的Click ="btnCustomers_click"+各自的功能.我想要的是说一个功能,允许我点击任何按钮,然后根据选择的按钮打开一个新窗口.
下面的代码是我目前的设计,但是对于30多个按钮,它们将有很多功能并且它将是杂乱的,因此我希望有一个功能控制哪个窗口打开,这取决于点击了哪个按钮.
private void btnMerchants_click(object sender, RoutedEventArgs e)
{
var newWindow = new frmMerchants();
newWindow.Show();
}
Run Code Online (Sandbox Code Playgroud)
提前感谢任何建议!! :)
你可以使用一种风格:
<Style TargetType="{x:Type Button}">
<EventSetter Event="Click" Handler="btnMerchants_click"/>
</Style>
Run Code Online (Sandbox Code Playgroud)
如果你在没有x:Key
它的地方的资源中设置它将适用于所有按钮.
例如,如果您有一个网格,并且您希望某个样式应用于其中的所有按钮,您可以像这样定义它:
<Grid>
<Grid.Resources>
<Style TargetType="{x:Type Button}">
<EventSetter Event="Click" Handler="Button_Click"/>
</Style>
</Grid.Resources>
<Grid.Children>
<!-- Buttons and stuff -->
</Grid.Children>
</Grid>
Run Code Online (Sandbox Code Playgroud)
如果您只想将其应用于某些按钮,请设置x:Key
并引用该样式:
<Grid>
<Grid.Resources>
<Style x:Key="AttachClickHandlerStyle" TargetType="{x:Type Button}">
<EventSetter Event="Click" Handler="Button_Click"/>
</Style>
</Grid.Resources>
<Grid.Children>
<Button Content="Click me!" Style="{StaticResource AttachClickHandlerStyle}"/>
<Button Content="Click me, too!" Style="{StaticResource AttachClickHandlerStyle}"/>
<Button Content="Something different." Click="SomeOtherButton_Click"/>
</Grid.Children>
</Grid>
Run Code Online (Sandbox Code Playgroud)
通常,您应该将多次出现的属性重构为样式以防止重复代码.
此外,由于您是初学者,以下文章可能会引起关注: