WPF and Silverlight 2
今回使用するWPFクラスライブラリとXAML
XAML | WPFクラス |
<Application>要素 | System.Windows名前空間のApplicationクラス |
<Window>要素 | System.Windows名前空間のWindowクラス |
<Button>要素 | System.Windows.Controls名前空間のButtonクラス |
ボタンの追加
前回のHelloWorldプログラムにボタンを追加
<Button Width="100" Height="50" > Click %lt;/Button>
<Window>の子要素は自動的にセンタリングされるらしい
なおかつ<Window>要素は1つの子要素しか持つことができない。
イベントハンドラの追加 *.xaml
GUIとロジックの依存関係を薄める為に、イベントやそれに関係するロジックは
C#やVBで記述する。
XAML側のメソッドの追加
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="HelloWorldWindow" Title="My First XAML" Width="320" Height="240" > <Button Width="100" Height="50" Click="HelloWorldWindow_Click"> Click Me! </Button> </Window>
<Button>要素のClick属性にボタンがクリックされた時に呼び出されるメソッドの
名前を記述する。
XAMLによるウィンドウの記述から暗黙的に作成されるクラスの名前を指定するために、<Window>要素に
対して[x:Class属性]でクラス名を指定する。
x:Class属性のxとはなんぞや?
xはプリフィックスである。リファレンス・マニュアルなどもxを付ける決まりになっている。
例えば、要素名の[Windows]や[Button]その属性名の[Width]や[Height]の名前空間は
<Window>要素のxmlns属性で指定されている
http://schemas.microsoft.com/winfx/2006/xaml/presentation
これはWPF名前空間と呼ばれ、名前空間に属する要素や属性はWPFのクラス・ライブラリの項目と対応付けられる
この時、規定名前空間以外の異なる名前空間の要素や属性を記述するには、プリフィックスが必要になる。
前例としてxを出したが実際にはなんでも良い。
例えば、x:Class="HelloWorldWindow"とあったがこれを
xaml:Class="HelloWorldWindow"やxamlclass:Class~と記述しても動作上では問題がない。
コードビハインド・ファイルによるイベント・ハンドラ *.cs
win.xaml.cs
using System.Windows; public partial class HelloWorldWindow : Window { void HelloWorldWindow_Click(object sender, RoutedEventArgs e) { MessageBox.Show("クリック"); } }部分クラス partialキーワードを使えば、本来はHelloWorldWindowクラス内に存在しなければならない
HelloWorldWindow_Clickメソッドを外部から追加できる。
この外部から追加したメソッドは、<Button Width="100" Height="50" Click="HelloWorldWindow_Click">
プロジェクトファイルの修正 *.proj
プロジェクトファイル内の<ItemGroup>に<Compile Include="win.xaml.cs" />を追加する。
<ItemGroup> <ApplicationDefinition Include="app.xaml" /> <Page Include="win.xaml" /> <Compile Include="win.xaml.cs" />これでコンパイルする。
0 件のコメント:
コメントを投稿