2014-11-30 5 views
0

사용자가 SHIFT 키를 눌러 해당 항목에 영향을 줄 때 표시 (색상 변경, 텍스트 추가 등)를 변경하려면 특정 요소가 필요합니다.수정 자 키 누르기 트리거

모든 항목에 동일한 DataContext가있는 것은 아니므로 MainWindow의 한 DependencyProperty에 바인딩 할 수는 없다고 생각합니다.

당신이 그것을 어떻게 할 것
<DataTrigger Binding="{[ShiftPressed]"} Value="True"> 
    <Setter [change color/add text/...]/> 
</DataTrigger> 

뭔가를해야합니다? 그것은 많은 ListBoxItems가 들으면 성능에 많은 영향을 미칠까요?

답변

0

데이터 트리거를 사용하여 "IsShiftPressed"와 같은 부울 속성에 바인딩하고 DataStateBehaviour와 함께 시각적 상태 관리자를 사용하여 각 컨트롤에 대한 두 가지 상태를 전환합니다. 정상 상태, 및 시프트 된 상태를 포함한다.

그러면 다양한 컨트롤이 여러 개의 키 트리거를 구현하는 대신 단일 bool 속성 변경을 수신합니다. 그 상태가 언제 어떻게 발생하는지 더 많이 제어 할 수 있습니다.

성능이 걱정된다면 WPF가 긴 목록 시나리오에서 이런 식으로 처리하는 방법을 잘 모르겠지만 목록을 제공하는 것은 목록 상자에서 가상화되므로 걱정할 주요 성능 조회가 있어서는 안됩니다 상태 관리자를 사용합니다.

업데이트 : 질문에 이미 부울 속성이 정의되어 있다는 것을 알았습니다. 미안합니다!

관련 문제