2012-02-15 2 views
14

WPF4에서 CaretBrushes를 설정하는 데있어 몇 가지 사실을 발견했지만 실제로 캐럿 자체를 변경 한 사람이 있습니까?TextBox 캐럿 스타일링

내가하고 싶은 것은 INSERT 모드에서 OVERWRITE 캐럿을 사용하는 것입니다. 나는 hack from .Net 3.5 times을 본 적이 있지만 ... unperformant이며 실제 커서 이동 뒤에 부족

Caret의 템플릿이 있다면 그것은 좋은 것 - 즉, 전체 WPF의 생각과 일치하는 것을 ...

어떤 조언이 필요합니까?

+0

는 http://www.codeproject.com/Articles/633935/Customizing-the-Caret-of-a-WPF-TextBox –

답변

27

CaretElement는 내부 밀폐 클래스이며 데이터 템플릿을 통해 사용자 정의 할 수 없습니다. 적어도, 캐럿 브러시는 변경할 수 있습니다.

<TextBox Text="This is some random text" CaretBrush="Blue" /> 

캐럿 브러시에 선형 그래디언트를 사용하려는 경우이 작업을 수행 할 수 있습니다.

<TextBox Text="This is some random text" FontSize="20"> 
     <TextBox.CaretBrush> 
      <LinearGradientBrush StartPoint="0,0" EndPoint="1,1"> 
       <LinearGradientBrush.GradientStops> 
        <GradientStop Color="Blue" Offset="0" /> 
        <GradientStop Color="Red" Offset="1" /> 
       </LinearGradientBrush.GradientStops> 
      </LinearGradientBrush> 
     </TextBox.CaretBrush> 

는 또한 비주얼 브러쉬를 사용했지만, 캐럿 항상 작은 수직선으로 도시되어있다.

7

프레임 워크는 당신의 배경 속성을 설정하면 캐럿의 색상을 설정 배경 색상의 역을 사용하기 때문에 {X : 널을}, 당신은의 기본 블랙 캐럿으로 끝날 것이다 검정색 배경은보기가 특히 어려울 수 있습니다!

http://www.codeproject.com/Articles/34736/Changing-the-Caret-Colour-in-WPF

이 문제에 대한 간단한 해결책은 실제로 배경 속성의 값을 지정한다. 검정색 배경이 있고 흰색 캐럿이 필요한 경우 배경 속성의 값을 # 00000000으로 설정할 수 있습니다.이 값은 완전히 투명합니다 (의미가있는 경우!). 프레임 워크는 색상의 불투명도 구성 요소를 무시하는 것으로 보이므로 투명한 배경과 흰색 캐럿으로 끝납니다!

그리고 하나 더 링크 : http://blogs.msdn.com/b/llobo/archive/2007/02/08/changing-caret-color-in-textbox.aspx

+1

이/프레임 워크 3.0 승 작동보기 – stackuser83