我在Microsoft / Windows Store中发布了一个UWP应用程序,我有很多重复的代码,我想简化我的代码。我有一个按钮,在我的应用程序中出现多次(总是使用相同的名称)并且其设计更改,但代码始终相同(单击事件按钮)。为避免重复代码,我是否可以编写事件代码以单击按钮一次并在我想要的任何地方使用?
答案 0 :(得分:1)
这很容易做到。使用代码和每个Button的处理程序创建一个共享方法,只需从每个按钮的事件处理程序中调用它。
示例:
您有一个包含3个按钮的页面
<Page
x:Class="App2.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Button x:Name="Button1" Click="Button1_OnClick"></Button>
<Button x:Name="Button2" Click="Button2_OnClick"></Button>
<Button x:Name="Button3" Click="Button3_OnClick"></Button>
</StackPanel>
</Page>
在代码隐藏文件(MainPage.xaml.cs)
中public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private void Button1_OnClick(object sender, RoutedEventArgs e)
{
ButtonHandlers.Handle(sender, e);
}
private void Button2_OnClick(object sender, RoutedEventArgs e)
{
ButtonHandlers.Handle(sender, e);
}
private void Button3_OnClick(object sender, RoutedEventArgs e)
{
ButtonHandlers.Handle(sender, e);
}
}
internal static class ButtonHandlers
{
public static void Handle(object sender, RoutedEventArgs routedEventArgs)
{
// This is shared!
}
}
我认为你可以得到这个想法。无论如何,你应该看看MVVM架构模式。将事件处理程序添加到按钮不是在基于XAML的应用程序(如UWP或WPF)下工作的方式:)