WPF Q&A

코드 줄이는 방법? 왕초보자 평점: 없음 조회: 514
안녕하세요. WPF로 버튼컨트롤을 하려고 하는데요.

버튼을 여러개 만들어 놓고 클릭하면 버튼 색이 변하게 하고 싶습니다.

심플하게 짜려면 이런식으로 짤 수 있을텐데요.
<MainWindow.xaml>
        <Button x:Name="_1" Content="1" HorizontalAlignment="Left" Margin="10,25,0,0" VerticalAlignment="Top" Width="25" Click="_1_Click" Background="White"/>
        <Button x:Name="_2" Content="2" HorizontalAlignment="Left" Margin="40,25,0,0" VerticalAlignment="Top" Width="25" Click="_2_Click" Background="White"/>
        <Button x:Name="_3" Content="3" HorizontalAlignment="Left" Margin="70,25,0,0" VerticalAlignment="Top" Width="25" Click="_3_Click" Background="White"/>
        <Button x:Name="_4" Content="4" HorizontalAlignment="Left" Margin="100,25,0,0" VerticalAlignment="Top" Width="25" Click="_4_Click" Background="White"/>


<MainWindow.xaml.cs>
        private void _1_Click(object sender, RoutedEventArgs e)
        {
            
            if (_1.Background == Brushes.White)
            {       
                    _1.Background = Brushes.PaleGreen;  
            }
            else
            {
                    _1.Background = Brushes.White;
            }
        }
 
        private void _2_Click(object sender, RoutedEventArgs e)
        {
            
            if (_2.Background == Brushes.White)
            {       
                    _2.Background = Brushes.PaleGreen;  
            }
            else
            {
                    _2.Background = Brushes.White;
            }
        }
             .
             .
             .

이런 식으로 짜면 될 것 같습니다.

하지만 저 버튼을 100~200개씩 만들어야 한다면 저런식으로 하면 굉장히 노가다 일 것 같아요.

그래서 어떤 버튼을 누르던 단지 누른버튼의 name이나 혹은 Content등
내가 누른 버튼을 식별할 수있는 개체를 받아서
한 가지 이벤트메서드에서 처리를 하고 싶습니다.
대충 예를 들자면 어떤 버튼을 누르던 _btn_Click메서드가 호출이 되고,

        private void _btn_Click(object sender, RoutedEventArgs e)
        {
            int Number = 누른버튼을 식별할수있는 필드나 속성등등..
 
            if (Number .Background == Brushes.White)
            {       
                    Number .Background = Brushes.PaleGreen;  
            }
            else
            {
                    Number .Background = Brushes.White;
            }
        }
이런식으로 구현할 수 있는 방법이 있을까요?

태그 : 버튼 컨트롤 C# WFP
작성자 정보
왕초보자
Level 13
 [EXP.11/40]

메일:  비공개
글등록 +12 132 덧글등록 +3 21
자기소개
안녕하세요.
글 공유하기 |
  tweet facebook
2018-05-03 오전 11:10:02
나도한마디
사용자
멋진남자            [2018-05-03]
Level 4
 [EXP.10/16]
버튼 정보가 Sender 에 있지 않나요?
사용자
천원            [2018-05-04]
Level 5
 [EXP.8/16]
sender as Button 으로 이벤트 발생한 버튼 객체 접근 가능합니다.

하지만 버튼 클릭순간에만 색상변경 하려는거면 xaml에서 trigger를 사용하심이 좋을듯 하고

클릭상태를 유지하는거라면 토클버튼이나 체크박스를 이용하셔서 상태값을 유지하는게 좋지 않을까요?
사용자
호산골            [2018-05-09]
Level 5
 [EXP.2/16]
AttachedProperty를 사용하여 바뀔 색상을 Xaml상에 지정하고, Click 이벤트를 한곳에서 핸들링하면 될 C# 코드량은 현저히 줄겠네요.
태그로 엮인글
[C#.NET Q&A] c# PC <-> 시리얼포트 통신에 대해 질문드립니다. [1]+1  엘리엇
[C#.NET Q&A] 서버 컴퓨터로의 파일 전송... 방법[1]  수원프로그래머
[C#.NET Q&A] winform 새 폼을 열 때 검은화면이 깜빡 거리고 사라지는 현상?[3]  Mr황
[자유게시판] 각종프로그램 개발및 앱개발 유지보수 해드립니다.  아도나
[C#.NET Q&A] [윈폼]폼과 일반스레드 분리  왕초보자
[구인&교육정보] [ 천안 ] .NET 생산업무 시스템 운영 [ 중급 ]  한국정보데이터시스
[구인&교육정보] [시청인근]카드사) C# 중/고급 개발자 모집(12/5)  인텍솔루션(주)
[C#.NET Q&A] 일정시간 컴퓨터에 마우스나 키보드 입력이 없으면 종료시키는 프로그램을 만들고싶은데요 고수님들 도와주세요ㅜㅜ[2]  초보적인실수
[C#.NET Q&A] [C# WPF] 특정 프로세스의 메모리 사용률 질문입니다. 파일첨부 pixoneerr
[WPF 자료실] WPF에서 마우스의 움직임이 시간동안 없을 경우 자동종료되는 프로그램 만드는법좀 가르쳐주세요[1] 파일첨부 bb
글리스트
코드 복사했는데 디자인이 다르네요? ( 파일, 이미지 있음 )[1]+1 파일첨부 insurang
TextBox 의 ToolTip 을 Binding 하는경우 Null 처리는 어떻게 하나요?[1]+4  비가와요
canvas에 타원을 그리는 가장 빠른방법이 궁급합니다.[2]+2  Mines
버튼 템플릿으로 들어간 객체이름을 어떻게 특정하면 되나요?[1]+1  insurang
WPF Grid 또는 DockPanel 사이즈 변경시 TextBlock Wrap하기[3]+2  한님맨
canvas에 10개의 사각형을 add 했는데 2번째 사각형을 제일 위로 보이게 하고 싶습니다.[1]+1 
WPF에서는 바탕화면 캡처가 어렵네요.[2]+2  insurang
canvas 에 add한 객체를 지우는 방법을 문의드립니다.[1]  파랑삶
자 눈금선 숫자표기 궁금합니다.[2]+2  방랑이z
WebBrowser에서 새창을 띄웠을때 세션연동[1]  넬류어드
 ★현재글->   코드 줄이는 방법?[3]  왕초보자
MouseDown 원래 반응이 없나요?[2]+2  insurang
background 설정 관련 질문드립니다.  파일첨부 EY
tabcontrol안에 treeveiw xml 데이터 바인딩 후 컨트롤 보여질때 지연문제  좋은추억
DependencyProperty 의 속성값 변경 이벤트.[1]+1  비가와요
wpf 로 앱을만들때[1]+1  엿장수
빈 이벤트 삭제  임병기
WPF프로젝트에서 gif 반복재생[2]+3  왕초보자
GridLength DependencyProperty 를 적용할 때 Default 값을 적용하려면 어떻게 해야 하...  비가와요
wpf 상용 컴포넌트 질문좀 드립니다.[1]+1  좋은추억
특정 Row 의 높이에 맞게 ListView의 Height 를 변경하고 싶습니다.  비가와요