2012年12月19日

WPFサンプル:単一データのバインディング

   このエントリーをはてなブックマークに追加 Clip to Evernote
C#のオブジェクトのプロパティと、WPFのコントロールのプロパティをバインドする
基本的な方法を示します。

WPFSingleValueBinding

このサンプルでは、C#のコードで、MainWindowのDataContext に MyDataの
オブジェクトを代入することで、TextBlock, CheckBox と連動させています。


FontSize="{Binding Size}"

の Size は、MyDataクラスのプロパティ名です。



以下は、MyDataクラスのインスタンス生成もXAMLで記述した例です。
こちらのサンプルでは、コードビハインド側には、何もコードを追加していません。
Wondows.Resourceタグで、myObjectという名前で、MyDataクラスのインスタンスを生成し、
Windows.DataContextに結びつけています。



ちなみに、XAMLは次のように書けます。
こちらの方が一般的ですね。



この記事へのコメント
記事掲載ありがとうございます。
C#の勉強中のものです。
当方の環境では、この記事、コンパイルエラーとなってしまいました。
そこで、
試しに、xamlの上部のところの
xlmns:my= の行を、Titleの前に書くと、コンパイルエラーになりませんでした。
環境の設定セッテイング等により、掲載の記事のままでも動作するのでしょうか。お教えください。
当方の環境 win8.1 64bit MVS Express 2013 Desktop


×
…略…
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
xmlns:my="clr-namespace:WpfSample.Binding01"
…略…


…略…
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:WpfSample.Binding01"
Title="MainWindow" Height="350" Width="525"
…略…

以上
Posted by エンバー at 2014年08月31日 16:01
こちらこそお読みいただきありがとうございます。
僕の環境だとどちらもビルドできますが、なぜでしょう?
まあ、名前空間の宣言がまとまっていたほうが良いと思うので、Titleの上に移動したほうが良いですね。
僕も他の記事では、Titleの上に記述しているものが多いです。
XAMLの全体と具体的にどんなエラーメッセージが出ているのかが分かれば、もう少しお役に立てるかもしれません。
Posted by Gushwell at 2014年09月01日 12:26
Gushwell様 回答ありがとうございます。
そちらでは、動作するというのでもう一度見直しました。

で原因がわかりました。まことにお恥ずかしい話ですが、
新しいプロジェクトを開くと、
 Title="…" />
行には行末に/>がついておりますね。(当たり前ですが…)

私の方は、その行末のTagを無視してというか気が付かないで
サンプル行を見て、xmlns:my="clr-…を打っただけですので動くわけが
ありませんよね。

初心者といえども、よくサンプルを見ればこんなミスはないのですが、・・・
大変失礼しました。

----
この投稿のあと、引き続き データ・バインディングの
サンプルを手入力して、実行させて確かめています。
初心者ならではの、ミスの連発でなかなか前に進めません。
ようやく
  「既定のビューでListViewの並び替えを実現する」
のコンテンツまで進みました。

それにしても、wpfすごい機能ですね。
自分で使いこなせるかどうか自信をなくしつつありますが、
とりあえず、Guswellさんのサンプルを実際に入力し(なるべく手打ちで)
て動作させたいと思います。
習うより、慣れろの精神でとりあえず頑張っていきたいと思います。



Posted by エンバー at 2014年09月03日 18:54
解決して良かったです(^^/
僕も新しい知識を得る際は、できるだけ手打ちすることにしています。
そうすると、良く間違うんですよね(笑) なぜエラーになったのかわからずに悩むこともしょっちゅうです。
WPFの勉強頑張ってください。
Posted by Gushwell at 2014年09月04日 21:13
 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52288631