C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: WPFで、列毎に異なる値を持つComboを動的に設定したい


(過去ログ 132 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■77910 / inTopicNo.1)  WPFで、行毎に異なる値を持つComboを動的に設定したい
  
□投稿者/ くなーら (16回)-(2015/12/01(Tue) 00:46:15)

分類:[C#] 

2015/12/01(Tue) 16:09:23 編集(投稿者)
いつもお世話になっております。
前回のご相談と関連した質問で申し訳無いのですが......
http://bbs.wankuma.com/index.cgi?mode=al2&namber=77811

今回はDataGridComboBoxColumnについてです。
やりたいことは、列毎に異なる値を持つコンボボックスの表示を、動的に行いたい、です。
例えば1列目では野菜の名前が入ってて、2列目には果物の名前が入ってる、といったような。

前回のご相談を踏まえ、バインディングについて学び、以下のようなコードを書いてみました。

DataGrid.Columns.Add(new DataGridComboBoxColumn() { Header = box, IsReadOnly = false, ItemsSource = "{Binding DataTable.Columns[\"box\"]}" 
});
DataTable.Columns.Add(new DataColumn("box", typeof(List<string>)));

(正直書いてて無茶苦茶だとは思っているんですが......)

このDataTableに、野菜の名前が入ったlistを入れたり、果物の名前が入ったlistを入れて、
動的にコンボボックスの中身を変える、そんなイメージのコードです。

で、結びついてるDataGridにどう出たかと言いますと、

https://gyazo.com/88759e82ee4562fe3f535f01992fc7ab

このように、文字列が縦?に出てきました。
試しにEnumクラスを作ってItemsSource = "{Binding Enumほにゃらら}"
みたいなことをしても、同様の結果となりました。

何故このような結果になったのか、
列毎に異なる値をxamlを使用せずに実現できるのか、
ご存知の方がいらっしゃいましたら、ご指導ご鞭撻のほど、お願いします.......以上です。



引用返信 編集キー/
■77916 / inTopicNo.2)  Re[1]: WPFで、列毎に異なる値を持つComboを動的に設定したい
□投稿者/ Hongliang (377回)-(2015/12/01(Tue) 12:49:42)
2015/12/01(Tue) 12:52:54 編集(投稿者)
確認ですが。
"列ごとに異なる"でいいんですよね?
つまり、
id        a         b
1         apple     Tokyo
2         banana    Osaka
のように、各行ともに
a列は { apple, banana, pair, orange, ... } の中から選択。
b列は { Hokkaido, Aomori, Akita, Iwate, ... } の中から選択。
という形が希望と言うことで良いんですよね?

引用返信 編集キー/
■77918 / inTopicNo.3)  Re[2]: WPFで、列毎に異なる値を持つComboを動的に設定したい
□投稿者/ くなーら (17回)-(2015/12/01(Tue) 16:08:01)
No77916 (Hongliang さん) に返信
> 2015/12/01(Tue) 12:52:54 編集(投稿者)
>
> 確認ですが。
> "列ごとに異なる"でいいんですよね?
> つまり、
> id a b
> 1 apple Tokyo
> 2 banana Osaka
> のように、各行ともに
> a列は { apple, banana, pair, orange, ... } の中から選択。
> b列は { Hokkaido, Aomori, Akita, Iwate, ... } の中から選択。
> という形が希望と言うことで良いんですよね?

あ、"行毎"です。申し訳ない、すみません。
Id1の行では林檎、バナナ、Id2の行では北海道、秋田みたいな.....
引用返信 編集キー/
■77928 / inTopicNo.4)  Re[3]: WPFで、列毎に異なる値を持つComboを動的に設定したい
□投稿者/ Hongliang (378回)-(2015/12/01(Tue) 21:35:07)
行毎であるのなら、DataGridComboBoxColumnでは対応できないかと思います。
DataGridTemplateColumnを使い、DataTemplateでComboBoxを使うことになるかと。
// コードからDataTemplate定義するの面倒だけど。
引用返信 編集キー/
■77929 / inTopicNo.5)  Re[4]: WPFで、列毎に異なる値を持つComboを動的に設定したい
□投稿者/ はちいちぜろ (1回)-(2015/12/01(Tue) 21:49:58)
2015/12/01(Tue) 23:14:28 編集(投稿者)

回答内容にミスがありました

削除します。

引用返信 編集キー/
■77932 / inTopicNo.6)  Re[5]: WPFで、列毎に異なる値を持つComboを動的に設定したい
□投稿者/ くなーら (18回)-(2015/12/01(Tue) 22:47:58)
No77928 (Hongliang さん) に返信
> 行毎であるのなら、DataGridComboBoxColumnでは対応できないかと思います。
> DataGridTemplateColumnを使い、DataTemplateでComboBoxを使うことになるかと。
> // コードからDataTemplate定義するの面倒だけど。

あーやっぱりそうなってしまうのですね......わかりました。
ありがとうございます。調べてみます。
ちょっと凝ったことでも簡単にさせてくれませんねwpfとかいうのは。全て私の勉強不足のせいですけど。

No77929 (はちいちぜろ さん) に返信
> ど素人なりに、行毎でリストが変わるとはどんな目的なんだろうと想像したら
> たとえば、列1の値で列2のリストが切り替わるという状況が思いつきました。
>
> それならばCollectionViewのFilterを使えばできそうな気がします。
> なお、コードでの動的切り替えとは言えない方法です。
>
> あくまでも想像ですので違ったらすみません。
>
> どうしてそのようなことがしたいのかまで説明すればいいのになーという感想を持ちました。

Chromeのブックマーク機能が使いづらいので、勉強も兼ねて私専用のブックマーク管理ソフトを作ってるのですが、
Evernoteで記事毎にタグを付けるが如く、URLに料理とか、小説とか、肉とか魚とか、それぞれに独自にタグ(複数可)みたいなのを付けたいと思って、
こういうなんだかわけわかんないことになっております。
(動的にやりたいのは、表示項目を自由に選べるようにしたい為でして、comboの件とは直接関係無かったりします)


これ以上はスレの目的を逸脱すると思いますので、解決済みとさせて頂きます。
ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -