コントロールに変数名を付ける
コードビハインドからアクセスできるように、XAML側でコントロールに変数名を付けます。変数名はx:Name属性で指定します。次のコードのようにTextBlockコントロールに変数名を付けてみましょう。なお、コントロールはただのName属性も持っています。紛らわしいのですが、変数名はx:名前空間プレフィックスが付いたx:Nameの方です。
<Grid> <TextBlock x:Name="Text1" FontSize="64">Hello, WPF !</TextBlock> </Grid>
これでビルドすると、コードビハインドのクラスにText1という名前のメンバー変数が自動的に生成されます。このメンバー変数が記述される場所はビルド時に自動生成されるファイルで、ソリューションエクスプローラーの既定では表示されません。気になる人は、「MainWindow.xaml.cs」ファイルの中でInitializeComponentメソッドを呼び出しているところにカーソルを置いて、[F12]キーを押してその定義場所を表示させてみてください。そうすると表示される「MainWindow.g.i.cs」ファイルの中にメンバー変数の宣言があります。
コードビハインドからコントロールのプロパティを変更する
TextBlockの文字色と表示位置を、コードビハインドから変更してみましょう。
ウィンドウが初めて表示されるときにコントロールを操作できるタイミングはいくつかありますが、ここでは「MainWindow.xaml.cs」ファイルのコンストラクターの最後で行ってみましょう。TextBlockの文字色と表示位置の変更は、次のコードの太字の部分のようになります。
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); // TextBlockの前景色(=文字色)と、水平/垂直位置 Text1.Foreground = new SolidColorBrush(Color.FromRgb(0x00, 0xA2, 0xE8)); Text1.HorizontalAlignment = HorizontalAlignment.Center; Text1.VerticalAlignment = VerticalAlignment.Center; } }
コードの細かい説明は省略しますが、コントロールのプロパティの型に合わせたオブジェクトをこのようにセットする必要があります。
なお、変数名を付けなくてもコードビハインドから簡単にアクセスできるコントロールが1つだけあります。それは自分自身、つまり、ウィンドウそのものです。XAMLではWindowコントロールとして表現されています。例えば、次のコードのようにしてウィンドウのタイトルを変更できます。
// ウィンドウのタイトルを変更(この行もコンストラクターの末尾に追加する) this.Title += " - .NET CoreでWPF";
ここまででデバッグ実行してみると、次の画像のようになります。
ただし、このようにウィンドウが表示されている間はずっと同じで変化しないコントロールのプロパティを、コードビハインドから設定するのは得策ではありません。次のボタンを追加する例を見ていただければ、それが分かります。コードビハインドからコントロールのプロパティを変更するのは、動的に変化する場合だけにしたほうが良いです。