Wie kann ich einen Effekt anwenden, um eine Grenze, aber nicht dessen Inhalt in WPF?
Ich habe eine WPF-Anwendung, die über eine 3rd-party-Daten-grid mit einem Rahmen herum. Ich habe die DropShadowEffect
zu setzen, einen Schatten hinter der Grenze, aber dies scheint Auswirkungen auf die Leistung etwas (nicht so viel wie ein BitmapEffect
, aber immer noch spürbar) und macht die font-rendering-fuzzy. Gibt es eine Möglichkeit, irgendwie den Effekt anwenden, um die Grenze, aber nicht sein Inhalt?
Ich habe versucht den Effekt auf den Inhalt zu {x:Null}
, aber das hat nicht geholfen.
Hier ist eine Beispiel-app, die ich kam mit. Es setzt einen Schatten hinter der Grenze, aber es stellt auch ein Schatten hinter jeder Textzeile. Ich will die Schatten hinter der Grenze, aber nicht den text.
<Window x:Class="WpfEffectTest.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<Border BorderBrush="Black" BorderThickness="10" CornerRadius="5" Margin="25">
<Border.Effect>
<DropShadowEffect BlurRadius="10" ShadowDepth="5" />
</Border.Effect>
<StackPanel>
<TextBlock>This is some text</TextBlock>
<TextBlock>This is some text</TextBlock>
<TextBlock>This is some text</TextBlock>
<TextBlock>This is some text</TextBlock>
<TextBlock>This is some text</TextBlock>
<TextBlock>This is some text</TextBlock>
</StackPanel>
</Border>
</Grid>
</Window>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den link von gcores hatte die Antwort, die an die Grenze und deren Inhalt in das gleiche raster, so dass die Inhalte überlagern die Grenze.
Einem einfachen (hack?) Lösung: Sie tun
Diese lösen sollte der text mit Schlagschatten problem (Nicht sicher über das performance-problem wäre).
Das problem ist, dass WPF-wendet Effekte auf das set-element und alle seine Kinder in der visuellen Struktur.
Dieser link erklärt es besser:
DropShadowEffect performance-Problem
Versuchen Sie folgenden block (oder ähnlich) für alle Textblöcke: