質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

3回答

6101閲覧

WPFのTextBoxに入力した文字を、ボタンのクリックなどなしにラベルに表示する方法

FacePanel

総合スコア48

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2018/09/09 06:56

Visual C#でWPFのアプリを作成するにあたって、以前、ボタンのクリックなどの操作なしで、
TextBoxなどの入力した文字が自動的にLabelなどに表示される方法があると聞きました。
ただ、Web中心にその方法を調べていますが、見当たりません。
そこで、今回質問させていただきました。

どんな方法なのかを教えて下さい。

簡単なところから、WPFに取り組もうと思っています。
そして、いずれMVVMなどを実装したアプリを作りたいと思っています。

どうぞよろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

質問者さんのやりたい事は「データバインディング」で、
ラベルのプロパティを表示し、以下のような手順でバインディングを設定することができます。
イメージ説明

XAML上では、ラベルのコンテンツ部分にはバインディングの書式が適用されます。

<Label x:Name="label" Content="{Binding Text, ElementName=textBox}" ...>

※あんまりこのGUIでバインディングする人はいないかもしれませんが、構文を忘れたときには便利です。

この場合意味的には「textBox要素のTextプロパティが変わったらContentに反映しろ」的な感じになると思います。

データバインディングの種類はいくつかあり、今回はXAML要素をバインディングしましたが、例えば自作クラスのプロパティに対してバインドすることもできます。

投稿2018/09/11 01:52

takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FacePanel

2018/09/11 10:31

ありがとうございます。感謝です。 こんなに分かりやすい解説は見たことがありませんでした。 すごい簡潔でした。こうした分かりやすさで、MVVMも解説して欲しいものです。
guest

0

データバインディングというキーワードで調べてください。

投稿2018/09/09 07:49

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

データバインドを調べれば良いと思うよ
入力と同時に更新したい場合は”UpdateSourceTrigger”も調べると解決するはず
どちらにせよMVVMは必要になるのでModel部分もとりあえずはViewModelにぶち込んでしまう形でも良いのでViewModelを使用したデータバインドは勉強しておいた方が良いと思うよ

投稿2018/09/09 07:50

len_souko

総合スコア1348

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FacePanel

2018/09/10 10:25

ご回答ありがとうございます。 現在調査中です。ただ、コードのサンプルがあっても、やり方の分からないところが多くて、現在はまだ四苦八苦の最中です。もう少し頑張って理解を深めたうえで、また、改めて回答したいと思います。
len_souko

2018/09/10 15:57

MVVMは置いておくとして、今回の質問に対しての回答としてのデータバインディングだけど、大雑把に言うと、 プロパティのsetterで自分自身や影響のある他のプロパティへ変更イベントを発行して、画面側(MVVMでいうところのView)が「変わったんなら拾い直すかー」と変更イベントの起きたプロパティを読みに行って(プロパティのgetterが実行される)、画面に表示するデータが変更されるという仕組み なので、質問の件はそのデータバインドを利用してテキストボックスに入力したらバインドされたプロパティのsetterが呼び出されて、その中で自分自身の変更通知を行い、同じプロパティをラベルにバインドしておけばバインディング機能がgetterを呼び出してラベルの表示が変わる そういう流れです もちろん、違うプロパティをバインドしておいてそのプロパティの変更通知を発行してやれば違うプロパティをバインドした表示が更新されます
len_souko

2018/09/10 15:58

あとはプロパティでreturnするプライベートフィールドを他のプロパティで使ったり組み合わせたりすることで色々遊べます
FacePanel

2018/09/12 13:01

このコメント、ありがとうございます。今後のために、参考にさせていただきます。
len_souko

2020/01/15 14:34 編集

1年以上経っても全く身についていないとのことで、参考にしてもらえなかったようで残念です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問