ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터 바인딩 (4)
    .NetFramWork/WPF 2022. 6. 28. 18:14

    WPF 바인딩 시스템핵심 기능 중 하나가 형식 변환이며 형식 변환기를 사용하여 서로 다른 속성끼리의 바인딩이 가능하도록 한다.

     

    호환 가능한 형식 변환은 WPF 바인딩에서 자동으로 변환 형식 변환되지만 자동 형식 변환이 불가능한 형식은 직접 형식 변환기를 작성할 수 있다.

     

    만약 전화번호 Person 객체에 성별을 구분하는 속성 Male 을 정의하고 남자면 true, 여자면 false 값을 갖도록 한다면,
    UI 에서 RadioButton 을 사용하여 남, 여를 구분할 수 있다.

     

    Person 객체의 속성 Male 을 보고 남, 여를 UI RadioButton 에 나타내므로 여기서 남자에 해당하는 RadioButton 이 true 라면 여자에 해당하는 RadioButton 은 false 가 되어야하며 반대로 여자에 해당하는 RadioButton 이 true 라면 남자에 해당하는 RadioButton 은 false 가 되어야한다.

     

    여성을 표시하기 위한 UI 의 RadioButton 은 Person 속성의 Male 과 항상 역으로 매핑되어 나타내야 한다.

    반대로 UI 의 여성에 해당하는 RadioButton 이 클릭되면 Person 속성의 Male 이 false 가 되어야한다.


    WPF 바인딩 시스템의 형식 변환기를 이용하는 예제

    위 결과는 Male 속성이 남성일 때의 RadioButton UI 를 나타낸 것이며,

    아래 결과는 Clear 버튼을 클릭했을 때(Male 속성이 null)일 때의 결과다.

     

    여성에 해당하는 RadioButton 은 Male 속성과 반대로 형식 변환을 통해 바인딩된다.

    Person 객체가 남, 여를 구분하지 않는다면 Male 속성은 null 로 어떤 Radio 버튼도 선택되지 않게 된다.

     

     

    Window 요소의 리소스로 person 키를 사용하는 Person 객체를 생성하고 Male 속성을 True 로 설정한다.

    또 리소스에서 maleConverter 키를 사용하는 MaleToFemaleConverter 를 생성하도록 한다.

     

    남, 여에 해당하는 두 RadioButton 을 정의하고 남자는 IsChecked 속성이 Person 객체의 Male 과 바인딩되고

    여자는 IsChecked 속성이 Person 객체의 Male 과 리소스에 정의된 maleConverter 인 MaleToFemaleConverter 객체를

    사용한 형식 변환으로 바인딩된다.

     

     

    형식 변환의 핵심 코드로

    여성에 해당하는 RadioButton 이 Person 의 Male 속성과 바인딩 하기 위해 IValueConverter 를 상속받은 클래스 MaleToFemaleConverter 를 정의하고

     

    Converter() 메소드를 통해 데이터 속성(Male)을 UI 에 적용될 형식으로 변환하며 ConverterBack() 메소드를 통해 반대로 UI 에서 데이터 속성(Male)로 적용될 형식 변환을 정의한다.

     

     

    '.NetFramWork > WPF' 카테고리의 다른 글

    데이터 바인딩 (3)  (0) 2022.06.27
    데이터 바인딩 (2)  (0) 2022.06.27
    데이터 바인딩(1)  (0) 2022.06.27
    버블링 과 터널링 (라우트된 이벤트)  (0) 2022.06.24
    레이아웃 <Grid>  (0) 2022.06.23

    댓글

Designed by Tistory.