많은 스크린이있는 WPF 응용 프로그램에서 작업 할 때마다 모든 컨트롤에 많은 컨트롤이 있습니다. 어떤 컨트롤에 포커스가 있는지 판단하기가 쉽지 않습니다.포커스를 얻었을 때 WPF 컨트롤을 강조 표시합니다.
그래서 현재 포커스가있는 컨트롤을 강조하고 싶습니다. 텍스트 상자, 버튼, 콤보 박스, 목록 상자 또는 그리드 일 수 있습니다.
스타일과 트리거를 사용하여이 작업을 수행하는 것이 더 좋을 것입니다.
감사합니다.
많은 스크린이있는 WPF 응용 프로그램에서 작업 할 때마다 모든 컨트롤에 많은 컨트롤이 있습니다. 어떤 컨트롤에 포커스가 있는지 판단하기가 쉽지 않습니다.포커스를 얻었을 때 WPF 컨트롤을 강조 표시합니다.
그래서 현재 포커스가있는 컨트롤을 강조하고 싶습니다. 텍스트 상자, 버튼, 콤보 박스, 목록 상자 또는 그리드 일 수 있습니다.
스타일과 트리거를 사용하여이 작업을 수행하는 것이 더 좋을 것입니다.
감사합니다.
올바른 이벤트에 트리거를 사용해야합니다. 귀하의 경우에는 IsFocused
입니다. 간단한 예 : (예를 들어, TargetType="{x:Type TextBox}"
를 사용)를 특정 제어 유형이 스타일을 적용 할 경우
<Trigger Property="IsFocused" Value="true">
<Setter Property="BorderBrush" Value="Red" />
<Setter Property="BorderThickness" Value="1" />
</Trigger>
당신은 Style
태그를 사용해야합니다.
당신이 트리거의 같은 종류의 단지 BasedOn
속성의 도움으로 사용자 정의 스타일을 상속보다 기본 스타일을 사용하는 것이 좋습니다보다 유형의 응용 프로그램에서 모든 컨트롤을 적용 할 경우 <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource BaseFocusStyle}">
이렇게하는 방법에 대한 좋은 예는 "How to make Style.Triggers trigger a different named style to be applied"입니다.
이 동작을 위해 adorner을 시도해 볼 수도 있습니다.
http://uiannotations.codeplex.com/wikipage?title=Adorners&referringTitle=Documentation
- 경우에 당신이 다음 코드 플렉스에이 구현에서 봐 3'rd 파티 오픈 소스 라이브러리를 사용하는 열려있는, 당신은 또한 자신의 adorner을 구현하는 방법에 대한 아이디어를 얻을 수있는 코드를 통해 갈 수 있습니다다른 솔루션에 대한 자세한 내용을 갖는 또 다른 비슷한 질문 - Reusable way to put a bright red box around whatever element currently has focus?
을