Подтвердить что ты не робот

Отбрасывание WPF

В настоящее время я делаю что-то в 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>
4b9b3361

Ответ 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>

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