他の人がすでに示唆しているように、これを行う1つの方法ですが、ブラシにOpacityMask
設定できないため、少し難しいです。OpacityMask
ビジュアルでのみ設定できます-OpacityMask
ビジュアルごとに行われるものです。ただし、Background
のListBox
はビジュアルツリー内の個別の要素ではありません。これは、のプロパティにすぎず、ListBox
通常、テンプレートBorder
内のどこかにある要素のようなものにバインドされたテンプレートです。
一部の人々がここで提案したビットマップ効果の使用についても同じことが言えます。これらは、個々のブラシではなく、ビジュアル全体にも適用されます。
ただし、これはVisualBrush
-で処理できます。これにより、ビジュアルツリーを使用してブラシを定義できます。だから私はこれがあなたが探しているものを大まかに行うと思います:
<Setter Property="Background" TargetName="Bd">
<Setter.Value>
<VisualBrush>
<VisualBrush.Visual>
<Rectangle Width="1" Height="1">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0,0" StartPoint="1,0">
<GradientStop Offset="0" Color="Transparent"/>
<GradientStop Offset="0.05" Color="{x:Static SystemColors.HighlightColor}"/>
<GradientStop Offset="0.95" Color="{x:Static SystemColors.HighlightColor}"/>
<GradientStop Offset="1" Color="Transparent"/>
</LinearGradientBrush>
</Rectangle.Fill>
<Rectangle.OpacityMask>
<LinearGradientBrush EndPoint="0,0" StartPoint="0,1">
<GradientStop Offset="0" Color="Transparent"/>
<GradientStop Offset="0.05" Color="White"/>
<GradientStop Offset="0.95" Color="White"/>
<GradientStop Offset="1" Color="Transparent"/>
</LinearGradientBrush>
</Rectangle.OpacityMask>
</Rectangle>
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
コーナーはあなたが探しているものではないかもしれませんが、それらがどれだけ大きくなるかによって異なります。このテクニックを使用すると、特に丸く見えません。だから、あなたは効果ルートを下ることができます。あなたはこれを好むかもしれません:
<Setter Property="Background" TargetName="Bd">
<Setter.Value>
<VisualBrush Viewbox="0.1,0.1,0.8,0.8">
<VisualBrush.Visual>
<Border Width="100" Height="100" CornerRadius="10"
Background="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}">
<Border.Effect>
<BlurEffect Radius="20"/>
</Border.Effect>
</Border>
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
Effect
ではなくを使用していることに注意してくださいBitmapEffect
。を使用したオプションは少なくなりますがEffect
、ハードウェアでレンダリングするように設計されているため、通常はより適切なオプションです。