2013年01月18日

[C# WPF]Bindingを使ってみる

今回からBindingの基礎について解説していきます。
Bindingはビジネスロジックと表示処理を分離する為には非常に有効な機能です。
Bindingに慣れてしまうとC#のFormアプリケーションでの開発に戻れなくなります。
といっても過言ではないぐらいにすばらしい機能です。

では実際にサンプルを作成しながら見ていきます。

xamlコードです。

<Grid>
<TextBox Height="23" Width="70" Margin="5"
HorizontalAlignment="Left" VerticalAlignment="Top"
Text="{Binding Message}" />
<Button Content="Button" Height="23" Width="70" Margin="5,35,0,0"
HorizontalAlignment="Left" VerticalAlignment="Top"
Click="Button_Click"/>
</Grid>

HelloWorldの時と同じようにTextBoxとButtonを配置します。

ButtonのClickプロパティはボタンクリック時のイベントハンドラを設定しています。
イベントハンドラはxaml.csに実装します。

そして、赤字で示したTextBoxのTextプロパティがBindingの記述です。
この記述はTextプロパティにMessageプロパティを割り当てるという意味になります。
MessageプロパティはMainWindowクラスのプロパティで.csファイルに定義しています。

csコードです。

public partial class MainWindow : Window
{
public string Message { get; set; }

public MainWindow()
{
InitializeComponent();

this.DataContext = this;
}

private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(Message);
}
}


見て頂きたいのは赤字の部分です。
MessageプロパティはTextBoxのTextプロパティにBindするプロパティの定義です。
Bindingソースとするプロパティはpublicでなければなりません。

そして

this.DataContext = this;

これはMainWindow.xamlで使用するBindingソースを検索する基準を
自分自身(MainWindowクラスオブジェクト)にするという記述です。
上記のように指定するとxamlに以下のように記述した場合、
MessageプロパティはMainWindowクラスのメンバから検索されます。

{Binding Message}


xamlも合わせて以上のように記述する事で
TextBoxのTextプロパティにMainWindowクラスのMessageプロパティが割り当てられ、
TextBoxに入力した値がMessageプロパティに設定されるようになります。

それでは実行して動作を確認してみましょう。
1.jpg

TextBoxを編集するとTextプロパティの値(入力した文字列)が
BindingソースであるMessageプロパティに設定されます。
ボタンを押すと入力した文字列をダイアログ表示します。

このサンプルを見て気付かれたと思いますが
xaml.csコードにはデータに対する処理しか書かれておらず、
データの表示のしかた、編集のしかたはすべてxamlにのみ記述されています。
これが表示とビジネスロジックを分離するという事です。


posted by cw at 16:30| Comment(0) | Binding | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。