2017-12-06 8 views
-1

Microsoft/Windows Store에 UWP 앱이 게시되어 있고 반복 된 코드가 많아 코드를 단순화하고 싶습니다. 내 응용 프로그램 (항상 동일한 이름)과 디자인 변경 사항에 여러 번 나타나는 버튼이 있지만 코드는 항상 동일합니다 (이벤트 버튼을 클릭하십시오). 코드 중복을 피하기 위해 버튼을 한 번 클릭하고 원하는 곳에서 사용할 수 있도록 이벤트 코드를 작성할 수 있습니까?UWP 앱 (C#) - 동일한 코드 클릭 이벤트 버튼

+1

코드없이 질문에 어떻게 대답해야한다고 생각합니까? – Sefe

+1

물론, 코드를 일종의 서비스 클래스에 넣고 호출하면됩니다. 나는 그 질문을 오해하고 있는가? – amnesia

답변

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 아키텍처 패턴을 살펴 봐야합니다. 단추에 이벤트 처리기를 추가하는 것은 UWP 또는 WPF와 같은 XAML 기반 응용 프로그램에서 작동하는 방법이 아닙니다.

+0

이 경우 모든 버튼이 동일하게 나타 납니까? –

+0

그들은 물론 동일합니다. 논리는 각 단추의 처리기 안에 코드를 복사하는 대신 Handle 메서드 안에 있습니다. 목표는 코드를 읽고 이해하기 쉽도록하면서 중복을 줄이는 것입니다. – SuperJMN