WPF тень - PullRequest
       20

WPF тень

30 голосов
/ 14 мая 2010

В настоящее время я делаю что-то в WPF с рамкой, содержащей сетку и другие элементы управления. Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я устанавливаю свойство Border.Effect для эффекта тени, каждый элемент управления, содержащийся в границе, теперь имеет тень. Есть ли способ установить тень только для границы, а не для каждого элемента управления, содержащегося в границе?

Вот краткий пример моего кода:

<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>

1 Ответ

41 голосов
/ 14 мая 2010

Два варианта:

Вариант 1: Добавьте элемент границы с эффектом на него как родственный элемент дерева элементов границы / прямоугольника. Примерно так:

<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>

Вариант 2: Поместите прямоугольник в качестве родственного элемента элемента границы следующим образом:

   <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>

ПРИМЕЧАНИЕ. Вам нужно будет настроить макет второго решения, чтобы прямоугольник выровнялся в нужном направлении

...