1

このテンプレートの境界線に効果を適用しました。その後、エフェクトはその中のすべての要素に適用されるため、必要以上に多くのドロップ シャドウが表示されます。効果を無効にする方法はありますか?ぼかし効果を追加したことがわかりますが、ぼやけたドロップシャドウになってしまいます:)

DataTemplate  x:Key="TestInstanceViewModelTemplate">
    <Border BorderThickness="1" BorderBrush="#FF0909B4">
        <Border.Effect>
            <DropShadowEffect/>
        </Border.Effect>
        <DockPanel>
            <DockPanel.Effect>
                <BlurEffect/>
            </DockPanel.Effect>
            <Grid DockPanel.Dock="Top">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition MinWidth="50" Width="1*" />
                    <ColumnDefinition MinWidth="50" Width="1*"/>
                </Grid.ColumnDefinitions>
                <Button Command="{Binding Path=StartCommand}" Content="Start" Grid.Column="0" Grid.Row="0" />
                <Button Command="{Binding Path=StopCommand}" Content="Stop" Grid.Column="1" Grid.Row="0"/>
            </Grid>
            <WpfTestingClient:StatusControl DockPanel.Dock="Top" HorizontalAlignment="Stretch"></WpfTestingClient:StatusControl>
        </DockPanel>
    </Border>
</DataTemplate>
4

1 に答える 1

7

最上位のコンテナーをグリッドに変更し、Border と DockPanel を同じレベルに含めて、Border を下部に配置し、ストレッチしてグリッドを埋める一方で、DockPanel を上部に配置し、その周りに 1px のマージンを追加することをお勧めします。 BorderThickness を考慮してください。この方法では、ドロップ シャドウが Border 要素にのみ適用されるだけでなく、内部で何かが変更されるたびに効果を再レンダリングする必要がないため、多くのリソースを節約できます。

于 2011-03-09T16:24:03.790 に答える