私は WPF の新機能です。スタック パネルがあります。このスタック パネルでは、コード ビハインドでテキスト ブロックを追加し、コード ビハインドでスタック パネルの背景とテキスト ブロックの前景色を設定しました。また、スタックパネルの不透明度を設定するときに、子コントロール(つまり、テキストブロック)に影響を与えるよりも不透明度を動的に設定しました
これに対する適切な解決策を教えてください。
ありがとうございました。
私は WPF の新機能です。スタック パネルがあります。このスタック パネルでは、コード ビハインドでテキスト ブロックを追加し、コード ビハインドでスタック パネルの背景とテキスト ブロックの前景色を設定しました。また、スタックパネルの不透明度を設定するときに、子コントロール(つまり、テキストブロック)に影響を与えるよりも不透明度を動的に設定しました
これに対する適切な解決策を教えてください。
ありがとうございました。
UIElement.Opacity プロパティの備考をお読みください。
不透明度は、要素ツリーの下にある親要素から子要素に適用されますが、ネストされた不透明度設定の目に見える効果は、個々の子要素のプロパティ値には示されません。たとえば、リストの不透明度が 50% (0.5) で、そのリスト項目の 1 つの不透明度が 20% (0.2) に設定されている場合、そのリスト項目の正味の可視不透明度は 10% ( 0.1) ですが、リスト アイテムの Opacity プロパティのプロパティ値は、クエリを実行しても 0.2 のままです。
子コントロールの不透明度を親より大きくすることはできません。完全に不透明なレイヤーと不透明度の低いレイヤーの 2 つのレイヤーを使用する必要があると思います。このようなもの
<Grid>
<StackPanel Opacity=".5" Background="whatever">
...
</StackPanel>
<StackPanel>
<TextBlock Text="Text shown with full Opacity" />
</StackPanel>
</Grid>
Background
プロパティを可変に設定しますBrush
(不変の like ではなくBrushes.White
)。たとえば、次を作成できますSolidColorBrush
。
var background = new SolidColorBrush(Colors.White);
panel.Background = background;
Opacity
後でプログラムでそのブラシのプロパティを変更できます。
background.Opacity = 0.5;
GradientBrush
またはImageBrush
などの他のブラシでこれを行うこともできます。
これは、Xamarin (白い透明色) で機能しました。
Color MyColor = Color.FromRgba(255,255,255,0.8);
Alpha は、コントロールの Opacity プロパティよりも優れた不透明度を与えるようです。