프로그램 개발/C#

[wpf] Button 안의 Button 클릭 이벤트

(ㅇㅅㅎ) 2021. 1. 3. 02:26
728x90
반응형

최종 목표

 

버튼 안에 버튼을 집어넣을 경우가 가끔 있습니다.

 

그럴 경우 다음과 같이 Button의 Content를 Grid나 StackPanel 등으로 감싼 뒤 내부에 Button을 넣어주면 됩니다.

 

이벤트 또한 외부 버튼과 똑같이 사용이 가능합니다.

xaml
<Button Name="Btn1" Width="200" Height="200" Click="Button_Click">
    <Button.Content>
        <Grid Width="200" Height="200">
            <Label Content="버튼 1" HorizontalAlignment="Center" VerticalAlignment="Center"/>
            <Button Name="Btn2" Width="50" Height="50" Click="Button_Click"
                       Content="버튼 2" Margin="10" 
                       HorizontalAlignment="Right" VerticalAlignment="Top"/>
        </Grid>
    </Button.Content>
</Button>
c#
private void Button_Click(object sender, RoutedEventArgs e){
    Button b = sender as Button;
    if(b == Btn1){
        MessageBox.Show("버튼 1 클릭");
    }else if(b == Btn2){
        MessageBox.Show("버튼 2 클릭");
    }
}

 

위와 같이 설정할 경우 내부 버튼의 이벤트를 동작시키면 외부 버튼의 이벤트도 같이 동작됩니다.

 

 

이럴 경우 e.Handled를 사용하여 내부 버튼 이벤트를 실행 후 이벤트를 끝내버립니다.

c#
private void Button_Click(object sender, RoutedEventArgs e){
    Button b = sender as Button;
    if(b == Btn1){
        MessageBox.Show("버튼 1 클릭");
    }else if(b == Btn2){
        MessageBox.Show("버튼 2 클릭");
        e.Handled = true;
    }
}

최종 목표

 

반응형