7

私は WPF の新機能です。スタック パネルがあります。このスタック パネルでは、コード ビハインドでテキスト ブロックを追加し、コード ビハインドでスタック パネルの背景とテキスト ブロックの前景色を設定しました。また、スタックパネルの不透明度を設定するときに、子コントロール(つまり、テキストブロック)に影響を与えるよりも不透明度を動的に設定しました

これに対する適切な解決策を教えてください。

ありがとうございました。

4

4 に答える 4

1

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>
于 2013-08-01T12:29:07.853 に答える
1

Backgroundプロパティを可変に設定しますBrush(不変の like ではなくBrushes.White)。たとえば、次を作成できますSolidColorBrush

var background = new SolidColorBrush(Colors.White);
panel.Background = background;

Opacity後でプログラムでそのブラシのプロパティを変更できます。

background.Opacity = 0.5;

GradientBrushまたはImageBrushなどの他のブラシでこれを行うこともできます。

于 2013-08-01T12:33:08.010 に答える
0

これは、Xamarin (白い透明色) で機能しました。

Color MyColor = Color.FromRgba(255,255,255,0.8);

Alpha は、コントロールの Opacity プロパティよりも優れた不透明度を与えるようです。

于 2016-07-13T08:36:00.537 に答える