2012-11-06 1 views
0

그림자 드롭 :모서리가 둥근 텍스트 상자와 내가 같은 텍스트 상자를 복제하기 위해 노력하고있어

텍스트 상자 외부의 배경이 부모 컨테이너에 의해 처리됩니다

Textbox with drop shadow

.

  • 라운딩 모서리 외부 그림자에 추가 상단과 오른쪽
  • 에 내부 그림자를 추가
  • : 제가 알기로

    4 개 항목은 내가 알아서 할 필요가있다 왼쪽 및 아래쪽면

  • 그림자 효과를 상속 한 텍스트 상자의 텍스트 방지.

나는 WPF rounded corner textboxhttp://www.codeproject.com/Articles/225076/Creating-Inner-Shadows-for-WPF-and-Silverlight에서 코드를 차용했지만 난 그냥이 작업을 수행하는 WPF에 대한 충분한 이해를 가지고 있지 않습니다. 현재

코드 :

CurrentCode

문제가 그림자가 위쪽 및 오른쪽 라운딩 벗어난 점이다;

<Window x:Class="Test.TestWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="Window1" Height="300" Width="300"> 
<Window.Resources> 
    <ControlTemplate x:Key="TextBoxBaseControlTemplate" TargetType="{x:Type TextBoxBase}"> 
     <Border Background="{TemplateBinding Background}" 
      x:Name="Bd" BorderBrush="Black" 
      BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="8" 
       ClipToBounds="True"> 
      <Border Background="Transparent" BorderBrush="Black" BorderThickness="0,10,10,0" Margin="0,-11,-11,0"> 
       <Border.Effect> 
        <DropShadowEffect ShadowDepth="0" BlurRadius="8"/> 
       </Border.Effect> 
       <ScrollViewer x:Name="PART_ContentHost"/> 
      </Border> 
     </Border> 
     <ControlTemplate.Triggers> 
      <Trigger Property="IsEnabled" Value="False"> 
       <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" TargetName="Bd"/> 
       <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/> 
      </Trigger> 
      <Trigger Property="Width" Value="Auto"> 
       <Setter Property="MinWidth" Value="100"/> 
      </Trigger> 
      <Trigger Property="Height" Value="Auto"> 
       <Setter Property="MinHeight" Value="20"/> 
      </Trigger> 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 
</Window.Resources> 
<Grid> 
    <TextBox Template="{StaticResource TextBoxBaseControlTemplate}" Height="25" Margin="5"> 
     Text 
    </TextBox> 
</Grid> 
</Window> 

이것으로 렌더링 텍스트가 음영 처리됩니다. 그림자 왼쪽에 & 하단에 그림자를 추가하는 방법을 알아 냈습니다. 나는의 경계선에서

CornerRadius="8" 

을 제거하면

는 내가 안쪽에 그림자와 사각형을 얻는다.

나는 이것을 해결하는 방법에 대한 모든 조언을 제공합니다.

+0

저는 솔직히 말하면 당신이 묘사 한 텍스트 상자는 추악합니다. 꽤 아니야. 나는 방금 그것이 필요하다고 느꼈다. – Dai

+0

두 번째 테두리에 모서리 반경을 추가하여 위쪽과 오른쪽에 그림자를 고정해야합니다. –

+0

@Dai, 왜 내가 싫어하는지 물어봐도 될까요? 상자 바깥 쪽은 부모 컨테이너의 배경입니다. 선형 그래디언트가 될 것입니다. – andrew

답변

0

DropShadowEffect이있는 BorderBackground을 넣으십시오. 그렇지 않으면 포함 된 모든 요소에 드롭 섀도우가 표시됩니다. 또한 DropShadowEffectDirection 속성을 가지고 놀아 서로 다른 각도에서 그림자를 얻으십시오.

+1

이것은 어떤 이유로 경계 자체를 제거합니다. 나는 계속 실험 할거야. – andrew

관련 문제