WPF 트리거(Trigger), 데이터트리거(DataTrigger), 멀티데이터트리거(MultiDataTrigger)
n DataTrigger 클래스는 이전의 프로퍼티 트리거의 Property를 바인딩(Binding)으로 대신하는 것을 제외하고는 Trigger와 유사한데 바인딩은 다른 엘리먼트를 참조한다.
n DataTrigger는 바인딩 되는 값이 특정 값을 가질 때 프로퍼티를 설정할 수 있게 해준다.
n <DataTrigger> 요소로 표시하며 트리거는 의존속성이 아닌 속성에 사용된다.
n Model View ViewModel (M-V-VM) 디자인 패턴을 사용하여 데이터 바인딩을 사용하는 경우 이상적이다.
n CheckBox와 TextBlock 컨트롤을 만드는데 최초 화면을 로드할 때는 TextBlock이 화면에 나타나지만 Checkbox를 클릭하면 사라지는 예제이다. 물론 다시 Checkbox를 클릭하면 보이게 된다.
n 일반적으로 DialogBox의 경우 특정조건을 만족할 때 컨트롤을 활성화 하는 경우가 많이 있으므로 활용하면 좋을 것이다.
n 이번에는 Slider 컨트롤과 ProgressBar, TextBox 컨트롤을 만들어 Slider 컨트롤을 움지이면 ProgressBar도 같이 움직이고, TextBox에는 현재의 Value 값이 표시되도록 하자.
n 데이터 바인딩으로 ProgressBar와 TextBox에는 값이 바인딩 되어 같이 따라서 변하는데 Data Trigger를 이용하여 스크롤바의 끝에 오면 ProgressBar의 전경색(Foreground)를 빨강으로 변경하는 예제를 작성해 보자.
[MainWindow.xaml]
[MainWindow.xaml.cs]
n 실행화면
n MultiDataTrigger와 DataTrigger의 관계는 MultiTrigger와 Trigger의 관계와 같은데 MultiDataTrigger는 하나 이상의 Condition 엘리먼트를 참조하며 Condition 엘리먼트에 Property, Binding, Value 속성을 정의한다. 아래 예제는 두 CheckBox 컨트롤이 체크 되었을 때 버튼을 활성화 시키는 예문이다.
n 이번 예제는 ListBox 컨트롤에 사원들을 출력하는데 DataTrigger를 사용하여 특정 부서 사원들을 다르게 표시하고 MultiDataTrigger를 이용하여 사번과 이름이 지정된 값인 경우 배경색을 다르게 표시하는 예제이다.
n 실행화면
n [Emp.cs]
n [MainWindow.xaml]
댓글 없음:
댓글 쓰기