2012-02-28 54 views
3

我知道我想要做的事情可能很容易,很明顯,但我無法解決。我有一個兩行的網格,最上面一行有一個填充行的邊框元素(固定高度爲30)。第二行(固定高度爲100)當前包含一個空白的DockPanel,其背景爲白色(這將包含動態控件的ContentControl)。重疊投影效果

我在第一行邊框添加了陰影效果,方向爲270,將陰影放在邊界下方。由於沒有足夠的空間來容納陰影,所以這並不令人驚訝。我想要的是陰影從行中溢出並覆蓋下面一行中的DockPanel。

我通過使用包含白色背景的網格來實現此目的,然後向邊框元素添加底部邊距以適應陰影。雖然這看起來不錯,但它並不是我想要實現的。

對於沒有代碼示例的道歉,我不得不離開工作,但這仍然困擾着我。

在此先感謝。

保羅

回答

4

由於Grid是一個Panel,它繼承了Panel.ZInd前附屬財產。可以使用這個屬性從字面上設置Z-index,而不是像Phil在他的例子中那樣從XAML順序中推斷它。

非工作實施例可以被固定了一對附加屬性的:

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition/> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 
    <Border Background="PaleGreen" BorderBrush="DarkGreen" BorderThickness="5" Panel.ZIndex="2"> 
     <Border.Effect> 
      <DropShadowEffect/> 
     </Border.Effect> 
    </Border> 
    <DockPanel Grid.Row="1" Background="White" Panel.ZIndex="1"/> 
</Grid> 

兩種方法都做同樣的事情,但Panel.ZIndex可以用於格式化顧慮,或改變Z-是有幫助索引編程。

+0

謝謝你的簡單而有效的答案!我知道這很簡單,並不認爲這會很簡單:0)。 – 2012-02-29 08:47:24

5

把DockPanel中邊境之前,這樣的邊境是在z順序更高

這工作

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition/> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 
    <DockPanel Grid.Row="1" Background="White" /> 
    <Border Background="PaleGreen" BorderBrush="DarkGreen" BorderThickness="5"> 
     <Border.Effect> 
      <DropShadowEffect/> 
     </Border.Effect> 
    </Border> 
</Grid> 

但這裏的碼頭面板重疊和模糊的陰影

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition/> 
     <RowDefinition/> 
    </Grid.RowDefinitions> 
    <Border Background="PaleGreen" BorderBrush="DarkGreen" BorderThickness="5"> 
     <Border.Effect> 
      <DropShadowEffect/> 
     </Border.Effect> 
    </Border> 
    <DockPanel Grid.Row="1" Background="White" /> 
</Grid> 
+0

+1這工作,真的很明顯,簡單的解決方案謝謝。即使它基本上和Ianschol的答案一樣,我覺得我稍微喜歡他的答案,但這意味着我的標記是按自然順序定義的。如果我能接受這兩個答案,我會的。非常感謝您的幫助。 – 2012-02-29 08:46:01