2017-12-06 11 views
-1

私はMicrosoft/Windows Storeで公開されたUWPアプリを持っています。私は多くの繰り返しコードを持っています。アプリケーションに何度も表示されるボタン(常に同じ名前)とデザインの変更がありますが、コードは常に同じです(イベントボタンをクリックします)。重複するコードを避けるために、ボタンを一度クリックしてどこでも使用できるイベントコードを記述できますか?UWP app(C#) - 同じコードクリックイベントボタン

+1

コードなしで質問にどのように答えるべきだと思いますか? – Sefe

+1

確かに、コードを何らかのサービスクラスに入れて、それを呼び出します。私はその質問を誤解していますか? – amnesia

答えて

1

これは本当に簡単です。コードで共有メソッドを作成し、各ボタンのハンドラで、各ボタンのイベントハンドラから呼び出すだけです。

例:

あなたは私はあなたが得ることができると思う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のアーキテクチャーパターンを見てください。ボタンへのイベントハンドラの追加は、UWPやWPFなどのXAMLベースのアプリケーションでは機能しません:)

+0

この場合、すべてのボタンは同じですか? –

+0

彼らはもちろん、同じことをします。ロジックは、各ボタンのハンドラ内にコードをコピーする代わりに、Handleメソッドの内部にあります。目標は、コードを読みやすく理解しやすくするために、重複を減らすことです。 – SuperJMN

関連する問題