Соответствие размерам сложенных предметов в WPF - PullRequest
1 голос
/ 15 сентября 2011

У меня есть следующее Grid.

 <Grid DockPanel.Dock="Bottom">
     <Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch" CornerRadius="4" Background="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}">
         <Border.RenderTransform>
             <TranslateTransform X="2" Y="2" />
         </Border.RenderTransform>
         <Border.BitmapEffect>
             <BlurBitmapEffect Radius="4" />
         </Border.BitmapEffect>
     </Border>
     <Grid Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}">
         <Image Source="{Binding Image}"></Image>
     </Grid>
 </Grid>

Это выглядит так.

Sample

Обратите внимание, что первый горизонтальный, а другой вертикальный.

Как мне указать Border того же размера, что и внутренний Grid? Это так, чтобы я мог соответствовать тени.

Ответы [ 2 ]

1 голос
/ 15 сентября 2011

Я бы попробовал следующее:

<Grid DockPanel.Dock="Bottom">
     <Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch" CornerRadius="4" Background="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}"
Width="{Binding ElementName=G, Path=ActualWidth}"
Height="{Binding ElementName=G, Path=ActualHeight}"
     >
         <Border.RenderTransform>
             <TranslateTransform X="2" Y="2" />
         </Border.RenderTransform>
         <Border.BitmapEffect>
             <BlurBitmapEffect Radius="4" />
         </Border.BitmapEffect>
     </Border>
     <Grid x:Name="G" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}">
         <Image Source="{Binding Image}"></Image>
     </Grid>
 </Grid>

Приветствия

1 голос
/ 15 сентября 2011

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

Если ваша внешняя сетка имеет заданный размер независимо от того, что и ваше внутреннее изображение имеет переменный размер, вы можете рассмотреть возможность перемещения вашей границы во внутреннюю сетку и установки ее горизонтального / вертикального выравнивания по центру, чтобы она не растянуть, чтобы заполнить его содержимое

<Grid DockPanel.Dock="Bottom">
     <Grid HorizontalAlignment="Center" VerticalAlignment="Center" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}">

          <Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch" CornerRadius="4" Background="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}">
              <Border.RenderTransform>
                  <TranslateTransform X="2" Y="2" />
              </Border.RenderTransform>
              <Border.BitmapEffect>
                  <BlurBitmapEffect Radius="4" />
              </Border.BitmapEffect>
          </Border>

         <Image Source="{Binding Image}" Height="150" Width="150"></Image>
     </Grid>
 </Grid>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...