Тень 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>

person Petezah    schedule 14.05.2010    source источник


Ответы (1)


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

Вариант 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>

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

person Brad Cunningham    schedule 14.05.2010
comment
Если вы добавили какое-то другое содержимое (вместо прямоугольника) внутри панели «Сетка», установите свойство «Фон» панели «Сетка», чтобы все содержимое не затенялось. Например, '‹Фон сетки = Белый› ‹Эффект сетки› ...... ‹/Grid.Effect› ‹TextBlock Text = Test .... Grid.Row = 1 /› .... ‹/ Grid ›' - person Suriya; 13.03.2014