20

テキストブロックを構成するいくつかの方法を示すこの例をMSDNで見つけました。

それの多くは私にとってはうまくいくようですが、この部分は失敗します:

textBlock.Background = Brushes.AntiqueWhite;

「背景」の部分は赤で強調表示され、VisualStudioには「Windows.UI.Xaml.Controls.TextBlockには背景の定義が含まれていません」と表示されます。

私は困惑しています。

これは最近の変更ですか?または、これは後で削除されましたか?

4

5 に答える 5

38

私が正しく覚えているなら、WinRTはSilverlightに多く基づいていますが、WPFTextBlockから派生しており、WPFとは異なり、独自FrameworkElementのプロパティはありません。Background

回避策は、コンテナとして機能する追加の要素を使用して同じ効果を提供し、BorderまたはなどGridを使用して背景を提供することです。Background

<Border Background="AntiqueWhite">
  <TextBlock/>
</Border>

または、サイズを直接設定したい場合を除いて、セルなどに含まれている場合は、同じものを提供するためのRectangle背後にある可能性があります。TextBlockGridRectangle

<Rectangle Fill="AntiqueWhite"/>
<TextBlock/>

残念ながら、これが現在の唯一の選択肢だと思います。お役に立てれば。

于 2013-03-14T03:16:31.900 に答える
1

これにより、背景がアンティークホワイトに設定されます。さらに、グリッドの高さと幅はTextBlockの高さと幅にバインドされているため、グリッドのサイズを手動で設定する必要はありません。

        <Grid Background="AntiqueWhite" Height="{Binding ActualHeight , ElementName=textBlock1}" Width="{Binding ActualHeight , ElementName=textBlock1}">
         <TextBlock x:Name="textBlock1" Text="Text" />
        </Grid>
于 2015-09-01T09:23:36.303 に答える
1

TextBlockの背景色を設定するには

TextblockName.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FF202B49"));
于 2019-12-19T09:44:46.337 に答える
0

UWPでは、多くのコントロールが単純化されており(おそらく、メモリフットプリントを削減するため)、WPFの兄弟に特有の特定のプロパティがありません。

問題のUWP要素のようにプロパティを設定する代わりに.Background(一部の回答ですでに述べたように)、<Grid></Grid>要素内にネストして配置できますが、割り当てるプロパティを複数の子要素間で共有する場合を除いて、これはお勧めしません。背景(またはUWPコントロールにない他のプロパティ)をまたは同様のものに適用する場合は、要素でラップする必要があります。これは、単一のカスタマイズのみを行う場合に推奨されるアプローチです。要素であり、レイアウト計算とメモリオーバーヘッドの両方の観点から、でラップするよりもはるかに軽いアプローチです。GridTextBlock<Border></Border><Grid />

于 2019-05-18T00:45:33.377 に答える
-1

また、動的な変更には次のコードを使用できます。(WPFのみ)

textBlock.Background = new SolidColorBrush(Colors.AntiqueWhite);
于 2014-04-23T06:57:19.110 に答える