WisdomSoft - for your serial experiences.

2.5 コントロール

WPF において全てのコントロールの基底クラスとなる Control クラスの紹介します。また、Control クラスの機能を利用しコントロールの背景色を変更します。

2.5.1 背景

ユーザーと何らかの対話を行うコントロールは、System.Windows.Controls.Control クラスをルートとするクラスで表されています。ContentControl クラスもまた、Control を継承するコントロールの一種です。

System.Windows.Controls.Control クラス
System.Object
   System.Windows.Threading.DispatcherObject
     System.Windows.DependencyObject
       System.Windows.Media.Visual
         System.Windows.UIElement
           System.Windows.FrameworkElement
            System.Windows.Controls.Control
public class Control : FrameworkElement

通常、コントロールの役割は単純にコンテンツを表示するだけではなく、ユーザーと何らかの対話を行います。こうした点において、単純な図形やイメージなどのコンテンツとは性質が異なります。コントロールは、コンテンツを表示すると同時に、ユーザーから何らかの入力を受けることで、ユーザーと対話することが目的です。ボタンやラベルなど、一般的なコントロールは全て Control クラスから派生しています。

Control クラスには、コントロールの背景を塗りつぶすための Background プロパティが用意されています。

Control クラス Background プロパティ
[BindableAttribute(true)]
public Brush Background { get; set; }

Background プロパティには、固定色を設定するのではなく Brush オブジェクトを設定します。Brush オブジェクトは、領域の内部を塗りつぶすための論理ブラシを現すオブジェクトで、GDI や GDI+ の論理ブラシと役割は同じです。ブラシの詳細は第4章で解説するので、この場ではオブジェクトの取得方法だけ説明します。

Brush オブジェクトは、新たにインスタンス化することもできますが、1色で領域を塗りつぶす単純なブラシであれば System.Windows.Media.Brushed クラスから取得することができます。

System.Windows.Media.Brushed クラス
public sealed class Brushes

Brushed クラスは、固定色の Brush オブジェクトを提供する読み取り専用プロパティを数多く持ちます。Brushed クラスの役割は、基本的な Brush オブジェクトを静的プロパティで提供するだけで、Brushed クラスそのものをインスタンス化して利用することはありません。

例えば、領域を赤く塗りつぶすブラシは Brushed クラスの Red プロパティから取得することができます。同様に、各プロパティは対応する色の名前で名付けられています。青なら Blue プロパティ、緑なら Green プロパティとなります。

Brushes クラス Red プロパティ
public static SolidColorBrush Red { get; }

SolidColorBrush 型は、Brush クラスの派生クラスです。このクラスの詳細は後ほど解説するとして、まずは Brushed クラスのプロパティから Brush オブジェクトを取得し、Background プロパティに設定してみましょう。Window クラスは Control クラスを継承しているので、Window オブジェクトの Background プロパティを変更することで、ウィンドウの背景色を変更することができます。

コード1
using System;
using System.Windows;
using System.Windows.Media;

class Test {
	[STAThread]
	public static void Main() {
		Window wnd = new Window();
		wnd.Background = Brushes.Red;

		Application app = new Application();
		app.Run(wnd);
	}
}
実行結果
コード1 実行結果

コード1では、Brushed クラスの Red プロパティから返されるブラシを設定しています。このブラシは赤色の固定色で領域を塗りつぶすため、ウィンドウの背景は赤く染められます。

本来、コントロールの背景は OS の設定やデフォルトの設定に依存するべき問題であり、プログラムから積極的に変更する利用は滅多にありません。しかし、レイアウト上の都合から、特定の色に固定したい場合は Background プロパティで設定する意ことができます。