1

スタイルのないウィンドウを作成し、カスタム ボーダーを追加しました。影を落とすにはウィンドウが必要です。

<Border BorderBrush="#000000 "           
                    BorderThickness="1,0,1,1" Width="400" 
                            Height="400" 
                            VerticalAlignment="Stretch" HorizontalAlignment="Stretch"
                    CornerRadius="10, 10, 0, 0"
                    Background="Black">
                        <Border.Effect>
                            <DropShadowEffect Color="Black" Direction="320" 
                                    ShadowDepth="5" Opacity="1" BlurRadius="5" />
                        </Border.Effect></Border>

しかし、幅と高さを次のように設定すると、影が消えます。

Width="{Binding RelativeSource={RelativeSource FindAncestor, 
                    AncestorType={x:Type Window}}, Path=Width}" 

解決策を見つけてください。ありがとう

4

3 に答える 3

1

ソリューションの全範囲を把握していないため、境界線はウィンドウのスタイルに割り当てられたControlTemplate内にあると想定する必要があります。DropShadowEffectをルートウィンドウに適用する場合は、パディングする必要があります。そうしないと、表示されません。Padding = "10"をBorderに適用すると、表示されるはずです。

于 2012-05-11T14:14:00.730 に答える
0

ルート ビジュアルにエフェクトを適用しないでください。この場合、それらはビジュアル ツリーの下のすべての子に適用され、パフォーマンスを低下させる原因となります。次のパターンを使用します。

<Grid x:Name="RootWindowGrid">
   <Border x:Name="BorderWithEffect" Margin="5">
      <Border.Effect>
         <DropShadowEffect Color="Black" Direction="320" ShadowDepth="5" Opacity="1" BlurRadius="5" />
       </Border.Effect>
   </Border>

   <Border x:Name="RootBorder_ForAll_Another_Window_Visuals" Margin="5"/>
</Grid>

マージンは効果の強さに依存します。

于 2012-05-11T14:52:50.353 に答える
0

Windows の寸法に影の X & Y の厚さを追加してみてください

于 2012-05-11T13:54:47.567 に答える