トップページtech
1001コメント292KB

WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part7

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/08/22(日) 21:11:53
一向に普及しないユーザーインターフェースシステム
Windows Presentation Frameworkについて語るスレ。
パワフルで柔軟すぎるのが敗因か? 正直ついていけないよね…。

Visual Studio 2010
ttp://www.microsoft.com/japan/msdn/vstudio/
Microsoft .NET Framework 4 (Web インストーラー)
http://www.microsoft.com/downloads/details.aspx?familyid=9CFB2D51-5FF4-4491-B0E5-B386F32C0992&displaylang=ja
Microsoft .NET Framework 4 (スタンドアロンインストーラー)
http://www.microsoft.com/downloads/details.aspx?familyid=0A391ABD-25C1-4FC0-919F-B21F31AB88B7&displaylang=ja

関連スレ
Microsoft Silverlight その6
ttp://pc12.2ch.net/test/read.cgi/tech/1271580489/

過去スレ
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part6
http://hibari.2ch.net/test/read.cgi/tech/1274423236/
WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
http://pc12.2ch.net/test/read.cgi/tech/1261879110/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
ttp://pc12.2ch.net/test/read.cgi/tech/1245384489/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
ttp://pc12.2ch.net/test/read.cgi/tech/1231506876/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング
ttp://pc11.2ch.net/test/read.cgi/tech/1211453941/
【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】
ttp://pc11.2ch.net/test/read.cgi/tech/1162950198/

コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/
0503デフォルトの名無しさん2010/11/11(木) 02:03:52
> 動きませんが
> 今試行錯誤しているところです。
> まだWPF始めたばかりで
> 間違っている箇所や、正しい使い方を教えていただけないでしょうか。
> 色を変えれば楽なような気もします。

たったこれだけの行数でこれだけ「教えて君臭」を漂わせる書き込みも珍しい。
一つ良い事を教えておく。俺たちは君の道具でも、無償サポセンでもない。
0504デフォルトの名無しさん2010/11/11(木) 02:24:55
>>503
これほど「わかりません」を漂わせる書き込みも略
0505デフォルトの名無しさん2010/11/11(木) 02:31:18
わからないからって煽るなよ
0506デフォルトの名無しさん2010/11/11(木) 07:56:25
「教えて君臭」漂わせてるっていうか教えて君そのものだよな
教えてくれって書いてあるし
0507デフォルトの名無しさん2010/11/11(木) 08:05:12
質問だしなw
0508デフォルトの名無しさん2010/11/11(木) 09:20:04
WPF難しいって言う人多いけど、皆さんは習得(どの程度で習得とするかは適当に)にどの位かかりました?
0509デフォルトの名無しさん2010/11/11(木) 09:22:39
アプリ作れるまで3日ぐらい
難しい方だよねWPFは
0510デフォルトの名無しさん2010/11/11(木) 09:27:38
>>503
周りがスルーしている中わざわざレスしていただきありがとうございます。
質問する場所間違えたなぁと後悔していましたが、
このまま誰にも相手にされずに流れていくのも寂しいなと思っていたところでした。
これを励みに今日もWPFの勉強に精を出したいと思います。

0511デフォルトの名無しさん2010/11/11(木) 14:02:51
3.5と4でバインディングの何が変わったのか教えてくれ
コンパイルできない
0512デフォルトの名無しさん2010/11/11(木) 15:25:40
単発質問なんですけど、SharedSizeGroupを使ってポップアップメニューのアイテムの要素を整列をする際に、
Separatorのアイテムにも、サイズグループを適用したい場合はどのようにすればいいですか。

たとえばVisual Studioのポップアップメニューだと、セパレータはアイコンのセルに
重っていないけど、それと同じようなことがしたいです。

SubmenuItemTemplateKeyに適用するコントロールテンプレートと同様のものを
SeparatorStyleKeyスタイルのTemplateプロパティに適用して、同じサイズグループを
使いたいと思ってたんですが、セパレータのアイテムだけうまくグループ化されません。
0513デフォルトの名無しさん2010/11/11(木) 18:17:35
Windowsフォームで作ったアプリのボタンの形状は
クライアントのOSに依存すると思うのですが
WPFのコントロールはOSに依存しないのですか?
xpしかないので確かめられないんですけど
0514デフォルトの名無しさん2010/11/11(木) 18:19:20
システムカラーとか使ってたら当然依存する
0515デフォルトの名無しさん2010/11/11(木) 18:23:29
既定のTemplateはOSのテーマに従った外見になるように作られてる
0516デフォルトの名無しさん2010/11/11(木) 18:37:13
http://www.atmarkit.co.jp/fdotnet/chushin/chushinmeeting_01/chushinmeeting_01_01.html

DataGridコントロールやデータ・バインディングがサポートされ、例えば、データベース・オブジェクトをドラッグ&ドロップするだけで、それらの機能をアプリケーションに貼り付けられるようになっていたりします。

これってどうやってするの?
0517デフォルトの名無しさん2010/11/11(木) 18:49:10
ここてソースうpしたら指摘もらえたりする?
0518デフォルトの名無しさん2010/11/11(木) 18:52:04
一つ良い事を教えておく。俺たちは君の道具でも、無償サポセンでもない。
by 503
0519デフォルトの名無しさん2010/11/11(木) 19:00:41
役立たず
0520デフォルトの名無しさん2010/11/11(木) 19:26:19
MSDNフォーラムに行けよ
0521デフォルトの名無しさん2010/11/11(木) 20:42:38
いいからさっさと質問しろ
0522デフォルトの名無しさん2010/11/11(木) 22:02:52
>>502のように、動かないと書いてもどう動かないか書かない、
試行錯誤したと書いても何を試しどうなったのか書かない、
デバッグ作業を他人に丸投げした挙句に
"始めたばかり"を錦の旗のように掲げるようなカキコじゃなきゃ
大抵回答はもらえると思うぞ。
0523デフォルトの名無しさん2010/11/11(木) 22:07:18
ごちゃごちゃ理屈っぽい奴らだな
嫌なら答えなければいいだろ
始めたばかりって前置きするのは普通の会話だろ

やさしく教えてねー
初心者的間違いしてますーって意味含んで言ってるんだろ

おまえは日常で人と会話できるのか?
0524デフォルトの名無しさん2010/11/11(木) 22:09:23
>>522みたいな人間的に終わっている奴は
ある程度プログラミングできてもずっとこき使われるだけの平止まりだろな
根暗で誰からも相手されず、飲みにも誘ってもらえない童貞
いつか鬱病になって自殺するんだろうな
0525デフォルトの名無しさん2010/11/11(木) 22:15:54
そんなレッテル貼りいらんわ
0526デフォルトの名無しさん2010/11/11(木) 22:18:20
しょうもねえw
0527デフォルトの名無しさん2010/11/11(木) 22:25:10
>>522
またおまえか
0528デフォルトの名無しさん2010/11/11(木) 22:28:50
同僚にもいるな、プログラム好きだけど人と接するのが嫌いなやつ
気持ち悪い、早くやめればいいのに
0529デフォルトの名無しさん2010/11/11(木) 22:29:30
で、>>528はどうWPFと関係あるの?
0530デフォルトの名無しさん2010/11/11(木) 22:46:49
>>528がやめればいいのに
0531デフォルトの名無しさん2010/11/12(金) 00:07:34
>やりたいことはWindowがアクティブなときとディアクテブなときで
>コントロールの背景色を変えることです。

この説明があって動かないっていったら十分すぎる説明だろ
おまけに貼っつけてあるコードだって大して長くないし
最初から教える気ないのに偉そうなこと言うな
まあ俺も教える気ないけどな
0532デフォルトの名無しさん2010/11/12(金) 00:12:57
自演擁護うぜえ
0533デフォルトの名無しさん2010/11/12(金) 00:23:23
「俺も」だってw
0534デフォルトの名無しさん2010/11/12(金) 00:28:54
自演乙
0535デフォルトの名無しさん2010/11/12(金) 20:20:42
俺俺俺も
0536デフォルトの名無しさん2010/11/13(土) 09:16:53
Prism 4 - November 2010
http://compositewpf.codeplex.com/releases/view/55576

Prism 4.0 Readme
http://msdn.microsoft.com/en-us/library/gg405471(PandP.40).aspx

What's New in Prism 4.0
http://msdn.microsoft.com/en-us/library/gg430871(PandP.40).aspx
0537デフォルトの名無しさん2010/11/13(土) 15:17:03
WPFやってみた
Windows Formとは作り方がかなり異なってるな
依存関係プロパティとか、以前はなかったものがあるみたいだし。

解説サイトも少ないし、C#5.0が出るくらいまで様子見しててもよさそうだな。
0538デフォルトの名無しさん2010/11/13(土) 15:36:45
>>537
その姿勢だと一生やらないに一票
0539デフォルトの名無しさん2010/11/13(土) 15:47:07
様子見は賛成
0540デフォルトの名無しさん2010/11/13(土) 15:49:04
俺は日和見で
0541デフォルトの名無しさん2010/11/13(土) 16:06:10
WPFのフリーソフトがあったら使う?
まったく同じ機能のFormアプリケーションとWPFアプリケーションを比べた場合、
どちらが好まれるの?
0542デフォルトの名無しさん2010/11/13(土) 16:28:26
WPFはエロゲ開発者向けですね
0543デフォルトの名無しさん2010/11/13(土) 16:37:29
>>541
機能が同じでUXが違うということ?
無駄に重くて面倒くさいUIになってればWPFは避けられるし
美しくスッキリ見やすくなっていればWPFを選ぶでしょ
0544デフォルトの名無しさん2010/11/13(土) 16:43:16
現状だとWPF使う人のほうがスキルが上だろうからWPFの方を選ぶな
0545デフォルトの名無しさん2010/11/13(土) 16:44:50
DataGrid置いただけなのに
GF9800だとfpsが30しかでない
スクロールするとfpsは一桁
相当重いね
0546デフォルトの名無しさん2010/11/13(土) 17:01:08
何言い出してるのこの子…
0547デフォルトの名無しさん2010/11/13(土) 17:30:59
ボタンの中にボタンを入れられるんだな
クソワロタ

<Button>
<Button>
</Button>
</Button>

ってやったらボタンの中にボタンが入った
0548デフォルトの名無しさん2010/11/13(土) 17:31:50
>>541
機能もUIも完全に同一のアプリケーションが二種類有ったら、
一般ユーザは 「どっちでも良い」 って言うだろう。

一部のナード層は、 「実行速度が」「メモリ消費量が」 とか言うかも知んないけど
未だにIEのシェアが6割も有る様に、多数のユーザはそこまで気にしない。
(強いて挙げるとすれば、古いOSを使ってるユーザだと
 .NET Framework必須な点が、若干面倒に思われるかもだが)

WinFormかWPFかってのは、ユーザ視点でどうこうじゃなく
開発側が、生産性を考えてどちらを使うか選ぶ物なんじゃないか?
0549デフォルトの名無しさん2010/11/13(土) 17:37:35
>機能もUIも完全に同一のアプリケーション
ならわざわざ間口が狭いWPFは使わんだろう。
何かしらWPFならではの機能を使って快適・高機能になるとかの理由で使うんじゃないの。
あとは将来webに持っていく可能性有りとかならSilverlightへの移植がしやすいとかで使うかもしれない
0550デフォルトの名無しさん2010/11/13(土) 17:40:29
>>547
ああ、あるある。
ComboBoxの中にDataGridが入ったりとか、マジでキモいUIが作れるよな…w
0551デフォルトの名無しさん2010/11/13(土) 17:49:42
コンテンツモデルが奇っ怪だよなあ
エッセンシャルWPF読むまで理解できなかった
0552デフォルトの名無しさん2010/11/13(土) 18:02:06
デザイナが謎のぬるぽで、
でもエラー0で普通に起動できて普通に動いて・・・

って2時間悩んだ末、VS再起動したら直った。
ふざくんな!
0553デフォルトの名無しさん2010/11/13(土) 18:07:03
http://msdn.microsoft.com/ja-jp/library/bb546934.aspx#WritingCodeforDesignTime
この辺の問題な気がする
相対パスが役立たずになるのはどうにかして欲しいものだ
0554デフォルトの名無しさん2010/11/13(土) 20:54:40
>>551
コンテンツモデルの柔軟さは認めるけど、結局見た目の組み合わせじゃろくなもんで
きないんだよなあ。コントロールの振る舞いは組み合わせじゃどうにもならないか
ら、実はあまり柔軟でも簡単でもない。WPFのコンボボックス一つとっても最初
はリストボックス使って実装しようとしたけど、結局スクラッチから作ってるし。ボ
タンの中にボタンみたいな、なんの意味もないもんしかできない。
0555デフォルトの名無しさん2010/11/13(土) 20:58:41
つまり吉里吉里でいいということですね
0556デフォルトの名無しさん2010/11/13(土) 20:59:15
まったく持ってその通りですわ
0557デフォルトの名無しさん2010/11/13(土) 21:17:50
見た目の組み合わせはともかくとして、
GridやStackpanelは便利だと思う
0558デフォルトの名無しさん2010/11/13(土) 21:30:03
コンテンツモデルはたまにとんでもない挙動をするからなぁ
結局部品の中身を理解していないと使いこなせない。
0559デフォルトの名無しさん2010/11/13(土) 21:48:23
超エリート集団が作ったものがそんな糞なわけがない
0560デフォルトの名無しさん2010/11/13(土) 21:53:31
Meもか?
0561デフォルトの名無しさん2010/11/13(土) 21:55:11
Meたんとか超可愛いじゃない
0562デフォルトの名無しさん2010/11/13(土) 22:13:38
xamlって#regionみたいに折りたたんだりできないの?
0563デフォルトの名無しさん2010/11/13(土) 22:16:28
タグ単位で折りたためるじゃないか
0564デフォルトの名無しさん2010/11/13(土) 22:25:06
できたー
0565デフォルトの名無しさん2010/11/13(土) 22:30:56
>>563
そうだけど、コメントにした瞬間に萎える
0566デフォルトの名無しさん2010/11/13(土) 22:33:54
>>554
ぼのぼののおとうさんみたいだな
0567デフォルトの名無しさん2010/11/13(土) 22:34:55
Meは2000の片手間に鼻くそほじりながら作ったんだろ。

カスタムコントロール作ってるけど、なんか作り方が独特な感じで難しい。
Xaml側でイベントハンドラ登録できないので、要素のName属性使ってコード側から
インスタンス取得、そしてハンドラ登録という流れになる。

処理を結びつけるのはコマンドでやれってことなんだろうけど、
コマンドは発生タイミングを細かく制御できないよね?
例えば、2桁入力できるTextBoxを横に何個も並べたとして、
2桁入力した時点で自動的に右にフォーカス移動させるようにしたいときって
イベントだとTextBoxChangedとか使えばいいけど、コマンドではどうするのか。

なんだかいつものWindowとかUserControlでやる書き方とは違って、
コード側の記述が増えてしまってる。
0568デフォルトの名無しさん2010/11/13(土) 22:38:14
>Xaml側でイベントハンドラ登録できないので

できるだろ
0569デフォルトの名無しさん2010/11/13(土) 22:38:57
>>567
クラックソフトでも作ろうとしてるの?
0570デフォルトの名無しさん2010/11/13(土) 22:41:05
>>568
どうやるの?
>>569
扱いやすいコントロールをつくろうとしてるんだけど、なんでそう思ったの?
0571デフォルトの名無しさん2010/11/13(土) 22:43:05
カスタムコントロールは単体で配布したりするような
ちゃんとしたコントロールを作るためのもの。WinFormsでもカスタムコントロールは
OnPaintオーバーライド必須だっただろ。
0572デフォルトの名無しさん2010/11/13(土) 22:45:50
>>570
ボタン作ってダブルクリックしてみ
0573デフォルトの名無しさん2010/11/13(土) 22:49:27
>>572
ResourceDictionaryに書いてるからデザイナ使えないよ。
<Button Click= って書いても候補すらでないしコードビハインドが無いから指定できない。
これはカスタムコントロールの話だからね。

>>571
やっぱエレガントに書くのは諦めたほうがいいかな。
WinFormsやったことないからどうなってたのかわからん。
0574デフォルトの名無しさん2010/11/13(土) 22:51:32
>>573
SilverLight4をインストールしたらできる
0575デフォルトの名無しさん2010/11/13(土) 22:54:14
>>574
流れ的にちょっと分かりにくいので何が出来るのか詳しく頼んます。
デザイナ使ってのデザイン?
0576デフォルトの名無しさん2010/11/13(土) 23:01:43
>>574
SilverLight 銀の光ワロタ
0577デフォルトの名無しさん2010/11/13(土) 23:07:22
Silverlight4 ToolkitにはWPFデザイナの更新が多数含まれてるので
Silverlight使わないとしてもWPF使うなら必ずインストールしましょう
0578デフォルトの名無しさん2010/11/13(土) 23:10:46
はーい
0579デフォルトの名無しさん2010/11/13(土) 23:17:07
>>577
無くても普通にインテリセンス機能してるけど?
例えばブラシのカラー候補とか出る
自前のプロパティなどは候補には出てこないけど
Silverlight4 Toolkit 入れたらそれもできるようになる?
0580デフォルトの名無しさん2010/11/13(土) 23:51:06
コントロールの削除はXamlのコードだけではできないですよね?
0581デフォルトの名無しさん2010/11/13(土) 23:52:52
インジケータ的なものならVisualStateManagerで隠す
データ項目に対応するものならバインド元のデータを消す
0582デフォルトの名無しさん2010/11/13(土) 23:56:56
それってどうするの?
List<string>にボタン名の一覧が入っていて
一覧から削除すると、そのボタンが削除されるといったこともできますか?
0583デフォルトの名無しさん2010/11/13(土) 23:58:43
できる
DataTemplateでググれ
0584デフォルトの名無しさん2010/11/14(日) 00:03:07
Listで出来るか?
ObservableCollectionじゃなくて?
0585デフォルトの名無しさん2010/11/14(日) 00:05:06
>>570
どうやったらできなかったの?
0586デフォルトの名無しさん2010/11/14(日) 00:05:15
List<T>では削除はできないけど別にそういうことを聞いてるんじゃないでしょう
05875822010/11/14(日) 00:19:37
>>584でできました
ありがとう
05885822010/11/14(日) 00:33:18
ああ、でも>>584はちょっと違う
データクラスで保持してるコレクションデータを
ObservableCollectionに毎回追加しないといけないから

やっぱりList<string>のボタン名でそれぞれのボタンで表示して
任意のボタンを削除するならDataTemplateですか?
0589デフォルトの名無しさん2010/11/14(日) 00:59:03
>>588
List をラップした INotifyCollectionChanged 実装クラス作るのがいいと思うけど、
面倒だからよく ObservableCollection にコピー持たせる。

モデルとかビューモデル側でコレクションに要素足したときに
即座にビューに反映されて欲しければ INotifyCollectionChanged 必須。
0590デフォルトの名無しさん2010/11/14(日) 01:19:59
>>585
カスタムコントロールのXamlはルート要素がResourceDictionaryだからハンドラ指定はできないはずだが。
05915822010/11/14(日) 01:20:41
>>589
なるほどー、いろいろ試してみます
ありがとうございます
0592デフォルトの名無しさん2010/11/14(日) 01:30:04
最初からモデルかビューモデルに変更通知機能を入れとくのがベター
さすがにそんな上のレベルでListに依存するのは設計としてまずい
05935822010/11/14(日) 01:38:57
>>592
ビューモデルにINotifyCollectionChangedを実装しても
List<T>.Addでは変更通知されないですね
List<T>クラスを自作してそこにINotifyCollectionChanged入れるしかないのかな

そうなるとObservableCollectionでプロパティ公開してデータクラスのList<T>の値を追加していく方が楽なのかな
0594デフォルトの名無しさん2010/11/14(日) 03:57:45
>>590
そうだった
0595デフォルトの名無しさん2010/11/14(日) 04:53:27
  <WrapPanel Grid.Column="0">
   <ItemsControl ItemsSource="{Binding Names}">
   <ItemsControl.ItemTemplate>
   <DataTemplate>
   <Button Content="{Binding}" />
   </DataTemplate>
   </ItemsControl.ItemTemplate>
   </ItemsControl>
  </WrapPanel>

上記だとただ縦に並ぶだけです

パネルのデータテンプレートってどうすればいいですか?
かれころ5時間ぐらいぐぐってもわかりません
助けて
0596デフォルトの名無しさん2010/11/14(日) 05:29:43
テンプレートってレベルでいいなら、ItemsPanel かな。

もっと柔軟に、レイアウト方法を自作したいなら
Panel クラス継承して MeasureOverride とかを自作。
0597デフォルトの名無しさん2010/11/14(日) 06:02:38
ItemsPanel使ってどうすればいいんでしょうか?
質問する前からその単語でもぐぐってます
ItemsPanelTemplateでもぐぐってるけど
同じようなコードが見つからないんです

前にテスト用に作った時はあっさり作れたのでメモってなかったのが失敗
0598デフォルトの名無しさん2010/11/14(日) 06:30:44
半年ggr
0599デフォルトの名無しさん2010/11/14(日) 07:06:02
こういうケチ臭いところが
世界的に見て日本のプログラマのスキルが低い所以なんだろうね
優秀なソフトはいつも海外
ゲームも海外

日本は自社製の糞重いフレームワークで時代遅れのゲームしか作れない
0600デフォルトの名無しさん2010/11/14(日) 07:25:42
http://homepage2.nifty.com/natupaji/DxLib/
0601デフォルトの名無しさん2010/11/14(日) 08:29:47
>>599
むしろ基礎すら理解できていないコード切り貼り魔がいることが原因だと思う。
5時間ググる前に何が足りないか3分考えろ。
0602デフォルトの名無しさん2010/11/14(日) 08:34:22
海外フォーラムで質問すれば〜
0603デフォルトの名無しさん2010/11/14(日) 14:38:39
>>593
データクラスでList<T>公開して
周りから弄繰り回すこと自体が間違ってるよ
実際に実装の変更に対応できてないわけで、publicフィールド公開してんのと一緒だぞそれ
■ このスレッドは過去ログ倉庫に格納されています