2011-01-06 2 views
0

나는 꽤 오랫동안 이것을 머리 장식 해왔다. 누군가 Expression Blend를 사용하여 텍스트 상자의 기본 FocusVisualStyle을 편집/재정의하는 방법을 설명해 주시겠습니까? 현재 모든 텍스트 상자에는 선택시 파란색 악센트가 있으며 이는 현재 응용 프로그램의 테마와 일치하지 않지만이를 무시하는 방법을 알 수 없습니다. 저는 다양한 템플릿, 이벤트 및 속성에 대해 약 10 개의 서로 다른 위치에 테두리 브러시를 설정했으며 오버 라이드하지 않을 것입니다.블렌드와 WPF를 사용하여 집중된 텍스트 상자의 테두리 스타일 바꾸기

편집 : 단추도이 작업을 수행하며 더보기 흉하게 보입니다. 나는 이와 같이 행동하는 모든 컨트롤을 통합하는 솔루션을 원합니다.

XAML을 붙여 넣는 것보다 블렌드 방향 설정이 바람직하지만이 시점에서 나는 까다 롭지 않습니다.

답변

1

실제로 나타나는 동작은 TextBox의 기본 컨트롤 템플릿 내에있는 ListBoxChrome 요소의 일부입니다. Silverlight의 TextBox가하는 BorderBrush 속성을 사용하는 더 간단한 템플릿으로 쉽게 바꿀 수 있습니다.

<ControlTemplate TargetType="{x:Type TextBox}"> 
    <Border x:Name="Bd" 
      Background="{TemplateBinding Background}" 
      BorderBrush="{TemplateBinding BorderBrush}" 
      BorderThickness="{TemplateBinding BorderThickness}" 
      CornerRadius="2"> 
     <ScrollViewer x:Name="PART_ContentHost" /> 
    </Border> 
    <ControlTemplate.Triggers> 
     <Trigger Property="IsEnabled" Value="false"> 
      <Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/> 
      <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
     </Trigger> 
    </ControlTemplate.Triggers> 
</ControlTemplate> 
+0

이 XAML로 무엇을해야합니까? 그냥 삽입 하시겠습니까? 블렌드를 사용하고 있으므로 블렌드 특정 지침이 도움이 될 것입니다 ... – qJake

+0

블렌드와는 아무런 관련이 없습니다. Blend와 같은 도구를 사용하더라도 응용 프로그램 테마와 관련된 작업을 수행하려면 컨트롤 템플릿 및 스타일을 확실하게 이해해야합니다. 당신이 가진 문제는 간단한 속성 설정으로 해결할 수있는 것이 아닙니다. 실제로 TextBox 컨트롤의 컨트롤 템플릿을 변경하여 해당 파트 중 하나를 바꿔야합니다. – Josh

+0

어쨌든 위의 내용을 응용 프로그램의 모든 TextBox에 적용하려면 App.xaml 리소스 사전에 넣어야합니다. – Josh

0

답변에 추가하려면 블렌드에서 컨트롤을 마우스 오른쪽 버튼으로 클릭하여 새 템플릿을 정의 할 수 있습니다. 이렇게하면 XAML 뷰에서 생성 된 <ControlTemplate>을 @Josh Einstein이 제공 한 것으로 바꿉니다. 경계에 SnapToDevicePixels을 추가하여 앤티 앨리어스가 아니지만 선택적입니다. 텍스트 상자의 테두리 또는 배경색을 변경하려면 템플릿을 사용하십시오. 그러나 텍스트의 전경색을 변경하려면 템플릿 대신 객체 인스턴스를 사용하십시오.