2010-05-14 14 views
23

Obecnie robię coś w WPF, który ma ramkę zawierającą siatkę i inne elementy sterujące. Problem, z którym się borykam, polega na tym, że za każdym razem, gdy ustawiam właściwość Border.Effect na efekt cienia, każda kontrolka znajdująca się na granicy ma teraz cień. Czy istnieje sposób, aby ustawić cień tylko do granicy, a nie do każdej kontroli zawartej w granicach?Cień roboczy WPF

Oto krótki przykład z mojego kodu:

<Grid> 
<Border Margin="68,67,60,67" BorderBrush="Black" BorderThickness="1" CornerRadius="10"> 
    <Border.Effect> 
    <DropShadowEffect/> 
    </Border.Effect> 
    <Rectangle Fill="White" Stroke="Black" Margin="37,89,118,98" /> 
</Border> 
</Grid> 

Odpowiedz

34

dwie możliwości:

Opcja 1: Dodawanie elementu granicy ze skutkiem na nim jako rodzeństwa elementu drzewa granicy/prostokąta mieć. Coś takiego:

<Grid> 
    <Border Margin="68,67,60,67" 
      BorderBrush="Black" 
      BorderThickness="1" 
      CornerRadius="10"> 
     <Border.Effect> 
      <DropShadowEffect /> 
     </Border.Effect> 
    </Border> 
    <Border Margin="68,67,60,67" 
      BorderBrush="Black" 
      BorderThickness="1" 
      CornerRadius="10"> 

     <Rectangle Fill="White" 
        Stroke="Black" 
        Margin="37,89,118,98"> 
     </Rectangle> 
    </Border> 

</Grid> 

Opcja 2: Put prostokąt jako rodzeństwo elementu granicznego jak to:

<Grid> 
    <Border Margin="68,67,60,67" 
      BorderBrush="Black" 
      BorderThickness="1" 
      CornerRadius="10"> 
     <Border.Effect> 
      <DropShadowEffect /> 
     </Border.Effect> 
    </Border> 
    <Rectangle Fill="White" 
       Stroke="Black" 
       Margin="37,89,118,98"> 
    </Rectangle> 

</Grid> 

UWAGA: Będziesz musiał dostosować układ na drugim rozwiązaniem, aby linia prostokąta tam, gdzie chcesz,

+2

Po dodaniu innej zawartości (zamiast prostokąta) wewnątrz panelu Grid, ustaw właściwość Tło w panelu Grid, aby cała cienie nie padały. Na przykład, „ ...... .... " – Suriya