2011-09-15 53 views
1

我有以下Grid匹配WPF中的堆疊物品尺寸

<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的尺寸相同?這樣我就可以匹配陰影。

回答

1

我會嘗試如下:

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

乾杯

+0

謝謝。除了我必須綁定到'Image'以外,這很有效。 –

+0

你知道爲什麼如果我在網格上有whitebackground,它會剪切影子的右側? –

+0

可能因爲網格和邊框具有相同的確切寬度。無論如何,我不確定這是否意味着效果。你可以發佈快照嗎? –

1

您發佈的代碼對我來說工作正常,邊框尺寸與內部網格的尺寸相匹配,因爲它們都被拉伸以適合外部網格的尺寸。

如果您的外部網格無論如何都是設置的大小,並且您的內部圖像是可變大小,您可能需要考慮將邊框移動到內部網格並將其設置爲水平/垂直對齊到中心,牛逼拉伸以填補它的內容

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

正在應用的模糊。我不希望模糊的'圖像'。 –

+0

@Daniel你不能設置一個'Margin'來將圖像邊界偏移一點嗎? – Rachel

+0

@Daniel Nevermind,我明白你的意思了。您發佈的代碼對我來說工作正常,邊框尺寸與內部網格的尺寸相匹配,因爲它們都被拉伸以符合外部網格的尺寸。如果您的外部網格無論如何都是設置的大小,您可能需要考慮嵌套另一個網格,該網格允許根據其子內容(設置水平/垂直對齊到中心)在內部和外部網格之間嵌套。 – Rachel