私はこれを見つけました 例 テキストブロックを構成するいくつかの方法を示すMSDNで:
それの多くは私にとってはうまくいくようですが、この部分は失敗します:
textBlock.Background = Brushes.AntiqueWhite;
「背景」の部分は赤で強調表示され、VisualStudioには「Windows.UI.Xaml.Controls.TextBlockには背景の定義が含まれていません」と表示されます。
困惑しています。
これは最近の変更ですか?それとも、これは後で削除されましたか?
WinRTはSilverlightに大きく基づいていることを覚えていますが、TextBlock
はFrameworkElement
から派生しており、WPFとは異なり、独自のBackground
プロパティはありません。
回避策は、コンテナとして機能する追加の要素で同じ効果を提供し、Border
またはGrid
とBackground
などを使用して背景を提供することです。
<Border Background="AntiqueWhite">
<TextBlock/>
</Border>
または、Rectangle
の後ろにTextBlock
が含まれている場合は、Grid
セルなどに含まれている場合は、同じものを提供します。ただし、Rectangle
直接;
<Rectangle Fill="AntiqueWhite"/>
<TextBlock/>
残念ながら、これが現在の唯一の選択肢だと思います。お役に立てれば。
これにより、背景がアンティークホワイトに設定されます。さらに、グリッドの高さと幅はTextBlockの高さと幅にバインドされているため、グリッドのサイズを手動で設定する必要はありません。
<Grid Background="AntiqueWhite" Height="{Binding ActualHeight , ElementName=textBlock1}" Width="{Binding ActualHeight , ElementName=textBlock1}">
<TextBlock x:Name="textBlock1" Text="Text" />
</Grid>
UWPでは、多くのコントロールが単純化されており(おそらく、メモリフットプリントを削減するため)、WPFの兄弟に特有の特定のプロパティがありません。
問題のUWP要素に.Background
のようなプロパティを設定する代わりに(いくつかの回答がすでに述べているように)、<Grid></Grid>
要素内にネストして配置できますが、それはnot推奨されます。 Grid
に割り当てているプロパティを複数の子要素間で共有する必要があります。背景(またはUWPコントロールにない他のプロパティ)をTextBlock
などに適用する場合は、それを<Border></Border>
要素でラップすることをお勧めします。単一の要素をカスタマイズしようとしているだけの場合のアプローチであり、レイアウトの計算とメモリオーバーヘッドの両方の観点から、<Grid />
でラップするよりもはるかに軽いアプローチです。
TextBlockの背景色を設定するには
TextblockName.Background = (SolidColorBrush)(new BrushConverter().ConvertFrom("#FF202B49"));