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

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

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

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

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

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

Q&A

解決済

3回答

8784閲覧

WPF コンボボックスの選択時にテキストボックスを活性化する方法

arcbear

総合スコア13

C#

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

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

WPF

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

0グッド

0クリップ

投稿2016/11/08 01:16

WPFのXAML側の記述で
コンボボックスの項目選択時にテキストボックスのIsEnableを連動させたい

コンボボックスに複数(4つ)項目があり
その中の1つを選択するとテキストボックスが使用できるようにしたい
(それ以外の項目選択で非活性)

どの様に記述すればいいでしょうか?
XAML側でできないならイベントで記述しようと思います。

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

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

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

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

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

guest

回答3

0

ComboBoxの項目が固定でXAML内で書かれているのなら、XAMLだけで出来ますよ。
項目をどこに持ってるかによって違ってくると思います。

MVVMで書かれているのなら、Tak1waさんの書かれているとおりバインドを使用します。

投稿2016/11/08 02:03

編集2016/11/08 02:05
lain

総合スコア161

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

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

arcbear

2016/11/08 02:36

ComboBoxの項目はEnumで行っていてXAML内にないので Converterを使って実装しようと思います。
Tak1wa

2016/11/08 02:36

Triggerですかね?XAMLで項目固定であれば確かにそちらのほうが良いかもです。
lain

2016/11/08 03:06

Tak1wa様 もっと単純にターゲットのComboBoxItemのIsSelectedとバインドするのを考えていました。
guest

0

ViewModel に 「テキストボックスを入力可能にするべきか?」 みたいなプロパティを用意しておいて、
それと TextBox の IsEnabled をバインドさせるとか?

public class ViewModel { // コンボボックスの選択値 public string HogeCodeSelected { get; set; } // テキストボックスの編集可・不可 public bool IsHogeNameEditable { get{ if (HogeCodeSelected == "0001") return true; return false; } } }

あーっと ただ この場合は「コンボボックスの選択値」の setter で
「テキストボックスの編集可・不可」の PropertyChanged も呼んであげないといけない?かな?

投稿2016/11/08 02:03

sk_3122

総合スコア1126

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

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

arcbear

2016/11/08 02:37

ViewModel側でもできそうですね。 今回は,Converterを使うことにしました。
guest

0

ベストアンサー

こんにちは。

MVVMで実装しているのであれば、IsEnableにバインドさせれば、SelectedChangedイベントなどで処理しなくても済みます。
MVVMじゃなくてもConverterを使ってコンボボックスの値をバインドさせて、コンバーター上でIsEnableの値を変更してればそれでも変更は可能です。
それ以外であればコンボボックスの変更イベントでしょうか。

MVVMやBindingについて調べて試してみてください。
そのうえで不明点があれば更に具体的な質問を出してみてください。

投稿2016/11/08 01:34

Tak1wa

総合スコア4791

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

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

arcbear

2016/11/08 02:02

XAMLだけで完結させたかったのですが,Converterを使わないとできなさそうですね。 Converterを使って実装してみます。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問