トップページ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/
0040デフォルトの名無しさん2010/09/14(火) 00:59:56
> TextBlock 内で Text をどこに表示するか
TextBlockにはないけど子要素をどう配置するかはHorizontalContentAlignment
HorizontalAlignmentは親要素に対し自分をどう配置するか
0041デフォルトの名無しさん2010/09/14(火) 02:19:51
クラスはカスタムコントロールで作ってスタイルはリソースディクショナリ。
コントロールが複数ならgeneric.xamlでマージする。
0042デフォルトの名無しさん2010/09/14(火) 12:59:41
WPFのカスタムコントロール(≠ユーザーコントロール)作るの難しすぎ
特にテンプレートのサポート
中は泥臭くていいからコンポーネントの利用者には完璧なAPIを提供しろっていう
いかにもMSらしい思想を感じる
0043デフォルトの名無しさん2010/09/14(火) 13:25:56
オーバーライドではなく、根っこから記述すれだから、公開されている
テンプレートになかったら、自力で書くしかないね。

しかし XAML 使い出すと、フォームはもう使うことないわ。古臭すぎる。
0044デフォルトの名無しさん2010/09/14(火) 13:36:37
データ仮想化サポートされないかなー
0045デフォルトの名無しさん2010/09/16(木) 01:48:18
要素が現在画面に表示されてるかどうかを知る方法ってありますか?
0046デフォルトの名無しさん2010/09/16(木) 01:51:51
ヒットテスト
http://msdn.microsoft.com/ja-jp/library/ms752097.aspx

泥臭いよなー
マジどうにかしてほしい
0047デフォルトの名無しさん2010/09/16(木) 01:56:34
ヒットテスト
ttp://gun.world.coocan.jp/guns/shooting_re/031205hdd.htm
0048デフォルトの名無しさん2010/09/20(月) 03:50:29
BulletDecoratorのBulletってFrameworkElementFactoryで指定できないんだろうか?
0049デフォルトの名無しさん2010/09/22(水) 00:58:44
WPFで文字の縁取りってどうやればいいの?
TextBlock オブジェクトをたくさん作ってずらせば出来そうだけど
もっとスマートな方法あるよね。
0050デフォルトの名無しさん2010/09/22(水) 01:25:24
>>49
FormattedTextのBuildGeometryを縁取りをつけて描画。
http://msdn.microsoft.com/en-us/library/ms745816.aspx

小さめの文字ではあまり見栄えが良くないので使いどころに困る。
Effectでお茶を濁したほうが楽だろうなぁと思う。
0051デフォルトの名無しさん2010/09/22(水) 01:30:50
>>50
神だわ、マジサンクス!
0052デフォルトの名無しさん2010/09/22(水) 02:00:26
リサイズ中ではなくリサイズ後(マウス離したタイミング)で発生するイベントってないんだろうか
0053デフォルトの名無しさん2010/09/22(水) 02:12:20
メッセージフックしてWM_EXITSIZEMOVE捕まえれば?
0054デフォルトの名無しさん2010/09/22(水) 02:43:00
>>53
できた、ありがとう
0055デフォルトの名無しさん2010/09/22(水) 23:34:42
不正な入力のチェックは、MVVMではどこでやるんでしょう?

・ViewModelでチェック
・ModelをIDataErrorInfoの具象にしてModelで値のチェック
・ValidatesOnExceptionで入力値の型をチェックさせることもできたり
・BindingのValidationRuleでチェックさせることができたり
・ViewのDependencyPropertyにValidateCallbackでもチェックできたり
・ViewのDependencyPropertyにCoerceValueCallbackを登録すれば
 (チェックではありませんが)入力値自体を正常範囲に丸めたり、不正な入力を蹴ったりできたり

と、色々な箇所にチェックを入れれるようで、どれをどういう場合に使えばいいのやらサッパリで…
0056デフォルトの名無しさん2010/09/22(水) 23:57:53
多く見るのは VM に IDataErrorInfo 実装 + ValidatesOnDataErrors だけど、
HasError とかに何を入れるかよね。

モデルに投げちゃう方式だと、モデルが WCF サービスでウェブ越しとかな時に困りそう。

最近多いのは、VM のプロパティに DataAnntations の検証属性つけて、
HasError とかの中では Validator.ValidateObject/ValidateProperty するだけとかかな。

O/R マッパーのエンティティクラスの方と2度手間になったりするんで、
T4 とか使ったコード生成で対処してる人もちらほら。
0057デフォルトの名無しさん2010/09/23(木) 12:38:05
ttp://www.atmarkit.co.jp/fdotnet/basics/xaml01/xaml01_02.html
上記のサイトを参考にwin.xaml実行したのですが、xpcom.dllがないってエラー表示されます
ブラウザはgoogle chromeを既定に設定してます。
xamlを動かすには何かランタイムが必要なのでしょうか?
net flamework4.0はインストール済みです
0058デフォルトの名無しさん2010/09/23(木) 14:47:05
Chromeでは動かない。
ググってみたらFireFoxをインストールしてパスを通せばChromeで動くようになるらしいけど
そんなんで動いても意味ないでしょ。配布先にそんなことさせるの?
XBAPなんて完全に見捨てられた技術だからブラウザで動かしたかったらSilverlight使うべき。
0059デフォルトの名無しさん2010/09/23(木) 14:57:09
それマジで行ってんの?今週勉強したばかりの俺はどうしたらいいんだ
0060582010/09/23(木) 14:58:14
質問の意図を勘違いしてた。
LooseXAMLといって、.NETが入ってればIEで直接開けるものもあるんだけど、
一般にはXAMLはそれ単体では動かない。VSでビルドしてアプリケーションに組み込まれて初めて動くようになる。
>>57の情報は古いのでこっち参考に
http://www.atmarkit.co.jp/fdotnet/chushin/introwpf_index/index.html
0061デフォルトの名無しさん2010/09/25(土) 21:35:45
ListViewのGridViewな行選択スタイルをListBoxで使おうと考えているのだが、これってやる方法あるのだろうか。
0062デフォルトの名無しさん2010/09/25(土) 21:50:40
意味が分からんのだがListBoxItemのDataTempleteに
StackPanelをOrientation=Horizontalにして使うんじゃ駄目なのか?
0063デフォルトの名無しさん2010/09/25(土) 21:57:15
Styleだから選択色半透明にしたいとかそういうんでねえの。
0064デフォルトの名無しさん2010/09/25(土) 22:01:45
じゃあこの辺か?
http://msdn.microsoft.com/ja-jp/library/ms750821.aspx
0065デフォルトの名無しさん2010/09/27(月) 23:43:16
WPFスレが伸びないのは使いにくいからですか?
0066デフォルトの名無しさん2010/09/27(月) 23:56:25
頭でっかちの人たちがつくったもんだからごちゃごちゃしすぎちゃって頭悪い人たちがついていけませんでした
0067デフォルトの名無しさん2010/09/28(火) 00:00:21
でもWPFの表現力には期待してるよ
0068デフォルトの名無しさん2010/09/28(火) 00:10:59
表現力なんかどうでもいいからバインディングをどんどん強化してくれ
0069デフォルトの名無しさん2010/09/28(火) 01:06:13
まあ、新技術の浸透なんて5年10年余裕でかかる。
0070デフォルトの名無しさん2010/09/28(火) 01:37:15
5年後に数字が+5されてないことを祈るわ
0071デフォルトの名無しさん2010/09/28(火) 02:03:20
>>65
新しいってだけで思考停止しちゃう>>66みたいな第2のコボラーが荒らしに来るから普段は離れてROMってる。
0072デフォルトの名無しさん2010/09/28(火) 08:10:13
表現力はともかく、アーキテクチャがぐちゃぐちゃで実装がきたなすぎて分かりに
くい。コントロールのイベントやプロパティも覚えきれないほどたくさんあるけ
ど、肝心なところが「え!こんなこともできないの?」と抜けてることもあるし。リ
フレクションの多用で型の安全性が大きく損なわれてるのも. net frameworkの元々の
思想から大きく逸脱してる。
0073デフォルトの名無しさん2010/09/28(火) 09:02:39
IEでは特に設定しなくても動作するが、FireFoxの場合サーバー側でMIMEの設定が必要になる。
IE以外でローカルで動かす方法は知らない。
LooseXAML: .xaml application/xaml+xml
XBAP: .xbap application/x-ms-xbap
Click Once: .application application/x-ms-application
Chromeもこれで動いていた記憶があるが今は環境がないので試せない。

silverlightでは不要なのでブラウザ上でいろいろやりたい場合はこっちのほうがいいかな。
0074デフォルトの名無しさん2010/09/28(火) 09:21:51
Silverlight(2 以降)の登場後、それでも XBAP 使ってる人ってほとんど見たことないけども。
MIME の設定は、Silverlight の XAP に対しても必要よ。
0075デフォルトの名無しさん2010/09/28(火) 09:42:06
>>74
xapはプラグインがダウンロードするからMIMEの設定は不要。
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
 <param name="source" value="xxxxx.xap"/>

MIMEの登録は間違って開かないようにとか、
他のアプリに使われないようにといった意味しかないと思う。
0076デフォルトの名無しさん2010/09/28(火) 14:18:20
MSDNの資料でWPFを使う前にSilverlightを検討してみてくださいって言われてた
0077デフォルトの名無しさん2010/09/28(火) 23:57:45
酷いw

デスクトップでいいものならやっぱフル版の .NET の方が楽なんだけどもねぇ。
0078デフォルトの名無しさん2010/09/29(水) 03:23:29
>>68
強化されて乱用されると複数のバインディングの動作順次第で処理結果が変わるなんて
トラブルが多発しそうで面倒見れないから
バインディングやxamlの処理を直接デバッグできるようにするとかを強化して欲しいなぁ。
0079デフォルトの名無しさん2010/09/29(水) 12:41:11
>>78
デバッグは本当に困るね。なんとかならないのかな。
0080デフォルトの名無しさん2010/09/29(水) 13:10:17
バインディングは鬼門

使ったらだめ
0081デフォルトの名無しさん2010/09/29(水) 14:13:10
ところでいい加減テキストボックス系コントロールは透過できるようになりましたか
0082デフォルトの名無しさん2010/09/29(水) 14:23:40
初めからできてたと思うが?
0083デフォルトの名無しさん2010/09/29(水) 18:09:57
そういう時代錯誤も甚だしい変な制限を一掃するためにWPFが生まれたんだが
0084デフォルトの名無しさん2010/09/29(水) 20:00:19
WPFはWindowsサーバでしか動かせませんでしたっけ?
SilverlightはLinuxサーバでも動かせるんでしたっけ?
0085デフォルトの名無しさん2010/09/29(水) 20:11:41
>>84
バカは死んでください。
0086デフォルトの名無しさん2010/09/29(水) 22:22:21
UIとロジックが分離できるのが長所らしいけど、それぞれが複雑化、冗長化している。
たしかに作業が分担になるかもしれないが、これでは、
『分担しなければ作れない』
になってしまうではないか・・・
個人でプログラム書くには向いてないねこれ。
0087デフォルトの名無しさん2010/09/29(水) 22:24:07
そーかね
俺はもうFormsには戻りたくない
0088デフォルトの名無しさん2010/09/29(水) 22:29:46
俺も。HTML感覚で構築できるのは良い。
0089デフォルトの名無しさん2010/09/29(水) 22:33:45
【IT】台湾のマイクロソフトのサイトが激萌えで凄い! 日本がまさかの敗北
http://kamome.2ch.net/test/read.cgi/newsplus/1285742248/
0090デフォルトの名無しさん2010/09/29(水) 23:17:26
でもコードだけでオブジェクト作れるじゃん
0091デフォルトの名無しさん2010/09/29(水) 23:19:26
Viewをいじるのがだるすぎる
ガワ作るのは楽しいけど、ほんとそれだけ
0092デフォルトの名無しさん2010/09/29(水) 23:31:54
WPFはインフラ整備がクソ過ぎる
.NET5にはようやく…
0093デフォルトの名無しさん2010/09/30(木) 16:56:50
Listboxで選択されているアイテムを再度クリックした時に選択解除させたいのですが、どうすればいいのでしょうか?
0094デフォルトの名無しさん2010/09/30(木) 17:10:16
SelectionMode=Multiple?
0095デフォルトの名無しさん2010/09/30(木) 17:17:06
複数選択はさせたくないのです…
0096デフォルトの名無しさん2010/09/30(木) 17:23:24
ItemsControl.ItemContainerGeneratorのメソッド使えばインデックス取れるよ
そこから選択変更できるはず
0097デフォルトの名無しさん2010/09/30(木) 17:43:03
>>96
すみません、ListboxのItemContainerGeneratorのメゾットを使用して、
既に選択されている項目がクリックされたときに反応する方法がわからないのですが、どうすればいいのでしょうか?
0098デフォルトの名無しさん2010/09/30(木) 17:46:51
>>97
http://msdn.microsoft.com/ja-jp/library/system.windows.controls.listboxitem_events.aspx
>MouseDown


少しは検索しろよチンカス
0099デフォルトの名無しさん2010/09/30(木) 17:51:40
>>98
優しすぎて泣いた
ありがとん
0100デフォルトの名無しさん2010/09/30(木) 18:33:00
unregisterReceiver 忘れると SynchronousQueue#put が deadlock するとは…
01011002010/09/30(木) 18:33:42
ごめん!お隣のタブと間違えた
0102デフォルトの名無しさん2010/09/30(木) 18:37:33
いえいえ
0103デフォルトの名無しさん2010/10/02(土) 10:12:31
メゾットにだれも反応しない件について
0104デフォルトの名無しさん2010/10/03(日) 01:27:24
もう察したからいいんだよ
0105デフォルトの名無しさん2010/10/03(日) 01:40:31
インストロールと同じぐらい使い古されてるからなぁ
0106デフォルトの名無しさん2010/10/03(日) 02:06:45
「インストロール手順を教えてください」とメールを送ると
「インスコール手順は以下の通りです」と平気で返ってくるなんてよくあること
0107デフォルトの名無しさん2010/10/03(日) 08:32:53
メゾットの作り方

1. タマネギはみじん切りにして、オリーブオイル、無塩バター40gで炒める。
2. タマネギが透き通ってきたら、米を入れて中火でさらに炒める。
3. 2に白ワインを加えて強火で煮、沸騰してきたら中火にする。水分がなくなるまで煮詰める。
4. 最初、米がかぶるくらいの分量の水をくわえ、グツグツくらいの火加減で煮る。
  メゾットの表面の泡が少し粘った感じになったら最初の時よりやや少な目の水をくわえ、同様に煮る。
5. 繰り返し水をくわえて好みのかたさに仕上げる。好みのかたさに近くなったら、塩小1/2を加えて煮詰める。
6. 5にすりおろしたパルメジャーノを加え、フライパンを揺すりながら混ぜる。仕上げに無塩バター40gを加えて、バターが溶けたら皿に盛る。
0108デフォルトの名無しさん2010/10/03(日) 08:33:32
リゾット・ネエロ
0109デフォルトの名無しさん2010/10/03(日) 09:04:45
それリセットだから
0110デフォルトの名無しさん2010/10/06(水) 22:50:17
ViewModelにBindした添付プロパティを他の添付プロパティにBindって不味いんでしょうか?

・ViewModelのプロパティをViewの添付プロパティAにBind、
・添付プロパティAを、別な添付プロパティBにコンバータ経由でBind、
として添付プロパティAを書き換えた所、
ViewModelのプロパティおよび添付プロパティAは値が変化したのですが
添付プロパティBは値が変化していないようです(添付プロパティBの変更通知どころかコンバータすら呼ばれないようです)。

しかし以下の場合は2つのケースは動きました。
・ViewModelのプロパティを直接添付プロパティBにコンバータ経由でBind
・ViewModelのプロパティを添付プロパティAにBindせずに初期値をセット。
 その状態で添付プロパティAを別な添付プロパティBにコンバータ経由でBind

なんか動いたり動かなかったり…条件がよく分かりません。
0111デフォルトの名無しさん2010/10/06(水) 23:10:51
>>110
別にそんなことないな
0112デフォルトの名無しさん2010/10/06(水) 23:25:42
どこかコンバートの途中で出てる例外が、WPFのフレームワーク側で握りつぶされてて見えないだけとかは?
0113デフォルトの名無しさん2010/10/06(水) 23:41:23
ありがとうございます。

>>111
ですか…うーん。関係なさそうなコードをだいぶ削っても起きているので、
なにか根本的に間違えているのかもしれません。もうちょっと調べてみます。
>>112
出力ウィンドウを見てもそれらしいものはないので、それは大丈夫そうです。
0114デフォルトの名無しさん2010/10/07(木) 01:54:48
>>110
両方のBindのコンバーターにブレイクポイントを置いてデバッグしてみたら?
0115デフォルトの名無しさん2010/10/07(木) 23:31:13
>>110です。すみません、そもそもBindできていませんでした。
添付プロパティAを持つコントロールを渡して
そのコントロールの添付プロパティAを添付プロパティBにバインドしているつもりが、
添付プロパティAを持つコントロールがContentControlに入っていました。

お騒がせしました。
0116デフォルトの名無しさん2010/10/07(木) 23:42:32
おっちょこちょいだなあ…

しーね(^皿^)
0117デフォルトの名無しさん2010/10/07(木) 23:43:34
 ∧||∧
(  ⌒ ヽ
 ∪  ノ
  ∪∪
遺書
 おっちょこちょいで面目ない
0118デフォルトの名無しさん2010/10/07(木) 23:47:19
Expression4のアップグレード版はVS2010のExpress版も対象に含まれてるよね?
MSのページにはExpressを除くというような表現はないけど、Amazonのページだと
「※無料のダウンロード製品および体験版は対象外。」と書いてあってどっちだか
わからん。
0119デフォルトの名無しさん2010/10/11(月) 19:13:53
DataGridのCanUserAddRowプロパティをデザイナから変更してもチェックが変わらないのは、バグなのでしょうか。
0120デフォルトの名無しさん2010/10/11(月) 21:10:19
WPF
前から興味があって、今日ちょびっと勉強したのでこのスレを開いてみたら
1のやる気の無いコメントで泣いた ('A`)
0121デフォルトの名無しさん2010/10/11(月) 21:23:08
大丈夫、技術なんてそういうもんだから。
いまだのコボルが現役なんだぜ。

例え WPF 自体が下火になろうとも、知識は Silverlight に流用できるし。
0122デフォルトの名無しさん2010/10/11(月) 22:10:53
前スレは3ヶ月で潰したのにこのスレ2ヶ月で120レスしかないお( ^ω^)
0123デフォルトの名無しさん2010/10/11(月) 22:35:23
XAMLの優秀なデザインソフトが無料で提供されれば、
個人レベルのとこからじわじわと着実に広まると思うんだけどな
現状だと一部のオタクがブログでこんなんできたみたいな単発ネタ出してるだけにすぎない
0124デフォルトの名無しさん2010/10/11(月) 22:52:33
それはすいませんねえ!
0125デフォルトの名無しさん2010/10/12(火) 00:02:57
>>123
GridとStackPanelあたりを使って配置していくと
XAMLを書きながらプレビュー表示しているだけという感じになって
デザイナソフトとかどうでも良くなってきたよ。
後はMarginやPaddingなどをリソースに設定しておくと
誰が作っても同じような綺麗に揃ったレイアウトになるのでなかなか楽でいいよ。
0126デフォルトの名無しさん2010/10/12(火) 00:07:00
ChildWindowの外観と同じものをXAML手書きで作れる?
0127デフォルトの名無しさん2010/10/12(火) 00:25:41
>>125 はプログラマー的感覚、>>123 は Flash とか使って UI 作ってる視覚デザイナー的感覚なのかな。
0128デフォルトの名無しさん2010/10/12(火) 00:30:21
大まかには手書きで作れるけど、細かい視覚効果は死ねる
0129デフォルトの名無しさん2010/10/12(火) 00:38:22
Formsのデザインを模倣するだけなら簡単
しかしWPFで求められてることをやろうとするのは大変だ
0130デフォルトの名無しさん2010/10/12(火) 00:38:22
アニメーションとか直書きでなんかやってられない
0131デフォルトの名無しさん2010/10/12(火) 00:38:45
VisualStateManagerなんか完全に人間が扱うものじゃなくなってるからな
0132デフォルトの名無しさん2010/10/12(火) 00:43:03
グラデーション一つ作るのも大変
VS2010はグラデーションエディタ使えるけど相変わらずスタイルやリソースには対応してないから使い物にならない
0133デフォルトの名無しさん2010/10/12(火) 00:43:18
でも実際のところ、そんな凝った視覚効果が求めらてるかというと・・・
データ検証とか、検証通るまでボタン押せなくするとかやりやすいだけでも WPF の価値あると思うんだけども。

で、せっかく開発者とデザイナーの協業想定されてるんだから、
細かい視覚効果が本当に必要になったときにデザイナーさんに UI 修正をお願いするとかがいいと思う。
0134デフォルトの名無しさん2010/10/12(火) 00:53:15
WinForms程度でいいんだったら尚更XAML手書きは要らないと思う
VS2010のXAMLデザイナの使い勝手はWinFormsとそんなに変わらなくなった
0135デフォルトの名無しさん2010/10/12(火) 01:03:58
本当に必要な細かい視覚効果なんてないとおもうんだ
0136デフォルトの名無しさん2010/10/12(火) 01:05:58
>>135
うん、特に業務だと皆無だと思う。
なので、そういうところよりは分業とかMVVMでのモデル分離とかの方がWPFの利点かなぁと思う。

まあ、コンシューマー系だと無意味に思える装飾も目を引きたいって意味合いで使えるけども。
0137デフォルトの名無しさん2010/10/12(火) 03:52:58
結局デザイン面においてもWinFormsで十分ってことか
0138デフォルトの名無しさん2010/10/12(火) 04:07:10
見飽きた流れだ
0139デフォルトの名無しさん2010/10/12(火) 10:57:15
使ってて楽しいアプリつーもんを目指していかなあかんのですわ
■ このスレッドは過去ログ倉庫に格納されています