2013-03-01 2 views
0

Я новичок в WPF и нуждаюсь в вашей помощи в решении моей проблемы с дизайном.Border Styling применяется ко всем дочерним элементам рекурсивно

Я применил пограничный стиль для GRID ниже

<Border CornerRadius="5" BorderBrush="Gainsboro" BorderThickness="1,1,0,0" Name="border1" Margin="90,54,20,50" > 
        <Border BorderBrush="Gray" CornerRadius="5" BorderThickness="0,0,1,1" > 
         <Border.Effect> 
          <DropShadowEffect BlurRadius="10" Direction="-50" ShadowDepth="7" /> 
         </Border.Effect> 
         <Border.Child> 
          <Grid> 
           <Grid.RowDefinitions> 
            <RowDefinition Height="Auto"/> 
            <RowDefinition Height="356*" /> 
           </Grid.RowDefinitions> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="Auto" /> 
            <ColumnDefinition Width="446*" /> 
           </Grid.ColumnDefinitions> 

           <TextBox Name="TB1" Style="{StaticResource CustomTextBoxStyle}" Grid.Column="1" Margin="46,79,400,277" Grid.Row="1" /> 
           <ComboBox Height="24" Name="comboBox1" Width="110" Grid.Column="1" Margin="304,86,232,276" Grid.Row="1" /> 

          </Grid> 
         </Border.Child> 


        </Border>      
       </Border> 

Затем я поместил текстовое поле и поле со списком в сетке с пользовательским стайлингом.

Проблема заключается в том, что стиль границы родительского GRID применяется к дочернему TEXTBOX вместе со своими собственными свойствами стиля.

Не могли бы вы помочь мне в этом?

Благодаря Bharat

ответ

1

В соответствии с MSDN doucment -

Когда BitmapEffect наносят на контейнер макета, например, DockPanel или Canvas, эффект применяется к визуальному дерева элемент или визуальный, включая все его дочерние элементы.

Но есть обходной путь, как описано here и here иметь другую границу с той же позиции, но без эффекта, что бы решить эту проблему -

<Grid> 
    <Border Margin="10" BorderBrush="Red" BorderThickness="1"> 
    <Border.Effect> 
    <DropShadowEffect Color="Gray"/> 
    </Border.Effect> 
    </Border> 
    <Border Margin="10"> 
    <!-- controls --> 
    </Border> 
</Grid> 
+0

Спасибо за ваш ответ. Применение этих изменений сработало. – Jasti

Смежные вопросы