Page List

2015년 9월 18일 금요일

[WPF] DataStoreChangedTrigger & Conditions

DataStoreChangedTrigger는 데이터 저장소의 속성 값이 변경되면, 설정이 작동합니다.
Conditions는 지정할 수 있는 조건입니다.



Behaviour 속성에 있는 Trigger 와 Conditions입니다.
이전에 사용하셨던 파일 사용하시면 되겠죠?




트리거부터 시작하겠습니다.
기본이 EvetTrigger로 설정되어 있습니다.
새로 만들기를 클릭하면, 다른 형식의 트리거를 만나보실 수 있습니다.
하나씩 사용해보겠습니다.




DataStoreChangedTrigger
데이터 저장소의 속성 값이 변경되면, 설정이 작동합니다.
- 트리거 타입이 변경되면서, 세부속성도 바뀌었습니다.
- 새 속성 만들기를 이용해, DataStore를 만들 수 있습니다.




더 간단히 보여드리고자, 텍스트박스를 추가하였고,
DataStoreChangedTrigger 속성을 요소에 바인딩으로 TextBox의 Text를 지정하면 끝입니다.
실행하시고 TextBox 글자 바꾸는 순간 State동작 되실겁니다.

정의대로 바인딩 된 데이터의 값이 변경되는 순간 작동하네요~




Conditions
이제 조건을 보도록 하겠습니다.
접혀 있던 조건을 펼치고 조건 추가하면 오른쪽과 같은 모습이 나옵니다.
콤보박스 아이템들도 보이실텐데요.
[모두, 또는] : 조건 목록 일치여부
[데이터 저장소, 값] : 기본은 값이며, DataStore로 작업하신분은 데이터저장소 선택
[두 값 비교]
Equal : 같다
NotEqual : 같지 않다
LessThan : 작다
LessThanOrEqual : 작거나 같다.
GreaterThan : 크다
GreaterThanOrEqual : 크거나 같다




이제 조건을 달아보겠습니다.
LeftOperand(위)에 요소바인딩으로 textBox의 Text를 지정하였고,
RightOperand(아래)에 "UC"로 지정 하였습니다.

실행해보시면, 바인딩된 현재의 값(TextBox)에서 변경되는 순간
State가 동작이 되어야 하는데, 값이 "UC"로 돼야만 State가 동작되시죠?
아주 잘 되신겁니다.



그럼
조건을 하나 더 추가했습니다.
LeftOperand(위)에 요소바인딩으로 button의 Content를 지정하였고,
RightOperand(아래)에 "Button1"로 지정 하였습니다.

실행해보시면, "UC"로 바꿔도 State가 동작을 안합니다.
당연히 값이 다르니까 안되겠죠.


그래서, 조건 목록 일치여부를 "또는"(ForwardChaining="Or")으로 바꿔주고
실행해보시면 잘 됩니다.
조건 중 하나만 일치해도 실행이 되는 것이니까요~


ps. 2013버전은 둘다 "모두"라고 나올겁니다. 아래에 모두가 "또는"이라고 생각하시면 됩니다.
캡쳐는 이해를 돕고자 포샵처리 한겁니다.


예를, GotoStateAction으로 보여드렸지만, 다른 많은 비헤이비어들로도 가능하며
이렇게 트리거와, 조건을 이용하면 많은 부분을 제어할 수 있겠죠.





0 개의 댓글:

댓글 쓰기