WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part13
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2012/04/13(金) 15:53:23.55Visual Studio 2010
http://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
前スレ
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part12
http://toro.2ch.net/test/read.cgi/tech/1324366825/
関連スレ
Microsoft Silverlight その9
http://toro.2ch.net/test/read.cgi/tech/1321150267/
コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/
0322319
2012/05/10(木) 15:45:47.07AvalonEditの方が早かった
>>321
例のツール使って1行ずつスクロールさせてみたけど、再描写している範囲は変わらなかった
なんであっちの方が早いんだろう
0323デフォルトの名無しさん
2012/05/10(木) 19:51:57.29事前に準備できるものは OnRender 前に構築、一度構築したらキャッシュ、一度描画したらキャッシュ、重いメッソドコールを一回にまとめるとか。
0324デフォルトの名無しさん
2012/05/11(金) 12:58:07.35WPFのレンダリング最適化機構がちゃんと動作してる。
>>319はGDIのプログラムのような書き方をしてるので
WPFの最適化機構が全然働いていない。
つーわけで、速くしたかったら
WPFの解説書をよく読んで、AvalonEditを参考にしつつ1から書き直せ。
0325319
2012/05/14(月) 16:02:15.92このままじゃあ、使い物にならないから、オンスポット入力に対応させたいんだが、どういう風にすればいいのかさっぱりわからない
くぐっても出てこないし、avaloneditorもそこらへんは特に何もしてなかった
MSDNならあるだろうと思い調べてみたが、IMEに関するサンプルは何もなかった
どうすればIME対応にできるんだろうか
>>324
なるほど流儀に従っているから早いのか
もう一度参考にしつつ書いてみる
0326755
2012/05/14(月) 16:03:55.48ざっと見たが、行を構築してキャッシュしていた
でも、今作っているやつも一度構築した行は再利用している
やってることはほとんど変わらないんだが、なんであそこまでCPU負荷が違うんだろう
0327デフォルトの名無しさん
2012/05/14(月) 16:15:43.51> IME対応
オイオイ、一番重要な部分がまだだったのか。
てっきりIME周りは実装済みかと思ってたよ。
WPFはIME関連の機能を持たないので、TSFを直接使う必要がある。
TSFのドキュメントは不親切で、
まともなサンプルは皆無、それでいて実装すべきコードの量は膨大。
WPFのレンダリング如きに苦戦してるようじゃ、到底無理だと思うけどなぁ・・・
0328デフォルトの名無しさん
2012/05/14(月) 16:56:51.420329319
2012/05/14(月) 19:12:17.38http://stackoverflow.com/questions/2319365/performance-of-drawingvisual-vs-canvas-onrender-for-lots-of-constantly-changing
0330デフォルトの名無しさん
2012/05/14(月) 21:33:21.17ボタン押下でデータをよみ、グリッドのセルに動的にコントロールを生成する場合
MVVMのようにコードビハインドに一切記述せず実現することは可能なんでしょうか?
0331デフォルトの名無しさん
2012/05/14(月) 21:42:01.91> コードビハインドに一切記述せず
XAMLもコードも書けないなら詰んでるじゃないか
0332デフォルトの名無しさん
2012/05/14(月) 22:00:08.31「WOLF RPGエディター」とは?
・高度なRPG開発が可能な、完全無料のゲーム作成ツールです。
・雰囲気はRPGツクール2000に近い。RPGツクール2000で自作システムを作りこむ際に
不満だったところがいろいろ解消されていて、かなり自由度が高いです。ただし
その分初心者には難しいかも。すでにツクール2000で自作システムを組むのに
慣れた人やRPGツクールでは物足りないけどプログラミングはちょっとという方にお勧め。
・作成したゲームは自由に配布したり、コンテストに投稿することも可能。
また本ソフトを持たない人でもプレイ可能!ファイル暗号化も完備!
■作り方しだいでパズル系やカードゲームやシミュレーションやシューティングや
アクション、RTSや他なんでも作れます。
■また他の人がネット上で公開している「コモンイベント」を組み合わせて利用すれば、
自分では開発が難しいゲームシステムも容易に実現することができます。
0333デフォルトの名無しさん
2012/05/14(月) 23:02:00.52そうなんですよ。
V側にデータを表示するためのリストボックスなどのコントロールすらない場合などは
MVVMは破綻しますよね?
実現したいのは横軸に日付3か月分、縦はデータにより増減する行のグリッドに
数日間かかるプロジェクトのコレクションを列またぎのスタックパネルを動的に配置して内容を出す事
(スケジューラーみたいな画面)をやりたいのですが、
コードビハインドに書くしかないかなと思ったわけです。
0334デフォルトの名無しさん
2012/05/14(月) 23:09:51.95その上でMVVMしたいなら自作コントロールを画面に貼って自分で定義したプロパティをバインドする
カスタムコントロールの実装は当然コードビハインド(というか普通にコントロールの動作の実装コード)
0335デフォルトの名無しさん
2012/05/15(火) 00:18:52.301)m v vm それぞれどれにも依存せずテストコードが書けるようにする
2)それを実現するように「すべてを」書き換える
Vを書き換えず「MVVMは破綻してる」とか言われても困る
0336デフォルトの名無しさん
2012/05/15(火) 01:35:25.67スケジューラみたいな画面ならMVVM的なものに落とし込めそうな気もするけど。
0337デフォルトの名無しさん
2012/05/15(火) 11:41:08.86Infragisticsのスケジュールコントロールとか使った方がよっぽどよさ気じゃねえ?
0338デフォルトの名無しさん
2012/05/15(火) 11:43:19.25データはコントロールのプロパティにViewModelをバインドさせるから、このケースだとMVPVMになるのだろうな
0339デフォルトの名無しさん
2012/05/15(火) 16:11:25.82今はそうでもない
http://hp.vector.co.jp/authors/VA050396/tech_01.html
日本語の解説もちゃんとあるし、ドキュメントも日本語化されてる
tsfappというサンプルもある
マネージドコードでの実装は面倒なんでやりたくないが
0340デフォルトの名無しさん
2012/05/15(火) 17:14:07.51・TreeViewItemがフォーカスを取得した時にTextBoxにフォーカスがくるようにしたい。
・TextBoxがフォーカスを取得した時にTreeViewItemを選択状態としたい。
としたいのですが、どのようにしたら良いでしょうか?
TreeViewItem.GotFocus で子のTextBoxのfocus()を呼び出すようにすると、親のTreeViewItemにも
イベントが発生してしまいルートアイテムのTextBoxがフォーカスを取得してしまい困ってます。
0341デフォルトの名無しさん
2012/05/15(火) 17:21:14.710342デフォルトの名無しさん
2012/05/15(火) 23:38:24.900343340
2012/05/16(水) 00:15:05.34すいません、どう使えば良いか分からないです。
TreeViewItem でセットするんじゃないんでしょうか?
>>342
e.Handled = true にしてもバブルアップされてて困ってたんですが、今簡単なサンプル作ったら上手くいきました。
↓でも同様に悩んでる人がいたみたいなんですが。。。
ttp://stackoverflow.com/questions/1800188/preventing-wpf-treeviews-gotfocus-event-from-bubbling-up-the-tree
もう少し検証してみます。
0344デフォルトの名無しさん
2012/05/16(水) 00:17:16.572ちゃんねる界に革命が起きる!
0345デフォルトの名無しさん
2012/05/16(水) 00:37:53.42そのページはわかりやすいね。
けどtsfappは、リンク先にも書いてあるけど、
Win32のテキストボックスコントロールをTSFで拡張する例であって、
WPF用テキストエディタを作るにはちょっと頼りない気がする。
肝心な部分はテキストボックスコントロールの内部実装を利用してて、ソースコードが見られないから。
0346デフォルトの名無しさん
2012/05/16(水) 09:54:57.23にあるような式木を視覚化するので遊んでたんだけど、たかだか10階層超えたあたりで重くなるのね。
レイアウトロジックがタコくてO^Nになってる感じなんだけど、このへんはちょこっとフックして自前ロジックにすることって出来るの?
それともDataTemplateとかも使えず全部ゴリゴリ書かなきゃいけなくなる?
0347デフォルトの名無しさん
2012/05/16(水) 11:01:35.71フックがどういうことを想定しているのか不明だが、
少なくともDataTemplateが使えなくなる事は無い。
0348デフォルトの名無しさん
2012/05/16(水) 11:41:30.58ダウンロードして10階層ぐらいにしてみたけど重くないぞ?
変なことしてんじゃないの?
0349デフォルトの名無しさん
2012/05/16(水) 11:55:57.24んーレイアウトのロジックだけ別のをインジェクトするとか的な意味なんだが、パネルを変えればいいのかな。Canvasとかに。
その場合はコンテンツを変更した時に一番下のから順にサイズ測ってセットとかすればいいのかな・・・
>>348
そのExpressionTreeTemplates.xamlのりソース定義をGrid.Reaourcesにコピーして試してるんだが、だからかしら・・・
(x,y)=>x+(y*21)+x+(y*21)+x+(y*21)*(x+(y*21)+x)+(y*21)+(y*21)+(y*21)+(y*21)+(y*21)+(y*21)
を表示させるとGridのレイアウト時とかに5秒以上かかる。
0350デフォルトの名無しさん
2012/05/16(水) 12:32:33.02> レイアウト時とかに5秒以上かかる。
こっちでは0.01秒しかかからないぞ。
レイアウト中にGCが発生すると0.08秒になったが、5秒はおかしすぎる。
0351デフォルトの名無しさん
2012/05/16(水) 12:34:40.88やってみたけど>>350と同じく問題ない。
DataTemplateはWindows.Resourceの中に突っ込んでるけど。
CPUはCorei5。
0352デフォルトの名無しさん
2012/05/16(水) 13:18:15.13そうなんだよな
そこら辺の部分は全部internalだから全部自分で書かないといけないという…
0353デフォルトの名無しさん
2012/05/16(水) 15:24:13.02Window→Grid→ContentControlとあるせいかと思って、Canvasでも試したが、何か一瞬速くなって解消したかと思ったがビルドしなおしたらまた戻った(´・ω・`)
よくわからんので、とりあえずソースうpします。そこのテンプレート持ってきてTextBoxに入れたものが表示されるようになってる。
もし暇な方いましたらみてみてくださいまし・・・なにかわかったらまたカキコします。
https://skydrive.live.com/redir.aspx?cid=71b440f382d67da6&page=self&resid=71B440F382D67DA6!519&parid=71B440F382D67DA6!126&authkey=!AmmFkt85IzbJfz0&Bpub=SDX.SkyDrive&Bsrc=Share
0354デフォルトの名無しさん
2012/05/16(水) 17:49:00.62実行してみたけど、特に問題なし。
コンパイルに150msぐらいかかっててテキストボックスの入力がもたつくぐらい。
とりあえず、%d じゃなく、{0}。
0355デフォルトの名無しさん
2012/05/16(水) 18:05:50.20あれーなんでだろう。
(x,y)=>1+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)
といった感じに後ろの+(x+1)を貼り付けを繰り返してると応答が返ってくるまでにどんどん時間がかかってく。上の状態だと最後の貼付けでは20秒ぐらいかかってた。
Corei7 820でGPUはしょぼいが。
上のをそのまま貼り付けると10秒。その後に+(x+1)を増やすと1分かかった。その間CPU使用率が13%のままになっている。終わると0になる。
%dは最近F#触っててそっちの癖でやっちまってた。すまんそ。
0356デフォルトの名無しさん
2012/05/16(水) 19:20:39.66壊れてるんじゃないの
0357デフォルトの名無しさん
2012/05/16(水) 20:25:06.80なにがよw
0358デフォルトの名無しさん
2012/05/16(水) 22:10:20.880359349
2012/05/17(木) 09:30:24.99ノートもCorei7だけど。
環境のせいとしてスルーします。なんかある意味貴重な環境なのかしら・・・
0360デフォルトの名無しさん
2012/05/17(木) 14:00:59.70ただで配られてたWindowsPhone用のBlendでStoryBoard作ってそれをコピペでVSにはっつけて試そうとしてるんですが、デバッグ実行して初めてそんなプロパティねーよとか言われたりしてます。
Blendで作ったものはTargetNameとか指定されてて、ちょっとやりたいことにそぐわない・・・
いまいちまだどれが対象になって、プロパティのパスはどうでとか理解しきれてないんですが、より手早くその辺があってるかなどを確かめるすべってありますか?
0361デフォルトの名無しさん
2012/05/17(木) 14:21:23.980362デフォルトの名無しさん
2012/05/17(木) 14:38:52.500363デフォルトの名無しさん
2012/05/17(木) 19:52:14.16「ふつう」の体験版でも使えばいいだろ
0364デフォルトの名無しさん
2012/05/18(金) 09:27:44.60AvalonEditで使われているコンポーネントにDirect2dだと1回の呼び出しで済むけど、
WPFだとグリフ一つにつき8回も呼び出す
おまけにDirect2Dのようにまとめる事がない
と書いてあった
即時モードでレタリングできるようにするか
Direct3D10やDitect2Dと簡単に連携できるようにしてくれ
今のままじゃあ使い物にならない
0365デフォルトの名無しさん
2012/05/18(金) 09:55:14.40いい加減うざいから完成するまでこないでくれ
0366デフォルトの名無しさん
2012/05/18(金) 10:05:38.12.NET 4.5でWindows7より前のOSが非サポートになる事に伴って
そのあたりも改善されるかと期待してたけど、
何も変化はないようだね。
とはいえ、いつまでもDirect3D9のままってわけにもいかないだろうし、
いずれ改善されるんじゃないかな。
0367デフォルトの名無しさん
2012/05/18(金) 10:24:56.20http://msdn.microsoft.com/en-us/library/ee913554(VS.85).aspx
0368デフォルトの名無しさん
2012/05/18(金) 10:35:56.51標準で用意してほしいとは思うけど、
連携用のライブラリを一度作ればいいだけじゃん
既にDirect2Dを習得してるなら簡単でしょ
0369デフォルトの名無しさん
2012/05/18(金) 10:56:23.450370デフォルトの名無しさん
2012/05/18(金) 13:54:58.65ナニコレ・・・
0371デフォルトの名無しさん
2012/05/18(金) 13:57:00.580372デフォルトの名無しさん
2012/05/18(金) 14:47:21.33そうなることを願いたい
metroの方は比較的簡単にDirect2Dと連携できるんだけどな
>>367
サンプルあったのか
ちょっと試してみる
ありがとう
>>369
vistaから
0373デフォルトの名無しさん
2012/05/18(金) 17:03:46.34文字入力やスクロールでカクカクしてなきゃいいんだよ。
以前、行番号表示したくてテキストエディタコントロール作ったが最適化して実用程度にはなったぞ。
0374デフォルトの名無しさん
2012/05/18(金) 17:14:12.69http://kie.nu/aLB
>>373
Direct2D使わないとCore2Soloを積んだネットブックでひどいことになるのよ
ためしにCore2Soloを積んだネットブックで動かしてみたら、カクカクはしてないんだが、CPU使用率が天井に張り付いてて笑ったw
あと、半角スペースを表示できるようにしてみると、Core2DuoE8400+HD5770というスペックでもめちゃくちゃ重たくなる
0375デフォルトの名無しさん
2012/05/18(金) 17:42:57.63これ、もうDirect2D版?
7 だと表示されたけど、2003 Serverで動かしたら真っ白だな。
0376デフォルトの名無しさん
2012/05/18(金) 17:55:50.96Direct2D版ではないよ
0377デフォルトの名無しさん
2012/05/18(金) 21:27:12.53たかだか1万個のオブジェクトの描画にこの時間だからね。
ttp://msdn.microsoft.com/ja-jp/magazine/dd483292.aspx
パフォーマンスについては割り切るか、WPFを捨てるかのどっちかじゃないかな。
Direct2D使って今回の件を解決したとしてもちょっと複雑なレイアウト組んだらすぐ重くなって嫌になると思うよ。
0378デフォルトの名無しさん
2012/05/18(金) 21:36:27.50で、それはSilverlight,WP7、Metroにはないんだっけ?
0379デフォルトの名無しさん
2012/05/19(土) 01:53:55.480380デフォルトの名無しさん
2012/05/19(土) 01:58:42.200381デフォルトの名無しさん
2012/05/19(土) 02:00:40.810382デフォルトの名無しさん
2012/05/19(土) 03:19:45.32もうすでにオンスポット入力をWPFで実現している人がいるので、表示属性の取得をやってみた
でも、0x80040201がthis._context.GetSelection()の段階で出てどうもうまく行かない
どうすれば取得できるんだろう
このままじゃあ使い物にならないよ
http://codepad.org/B4x6kW0M
TextStore.cs
0383デフォルトの名無しさん
2012/05/19(土) 03:19:46.70ハマると100倍時間かかる。。慣れてないだけといえばそうなのかもだが・・
0384デフォルトの名無しさん
2012/05/19(土) 12:49:06.38RequestLock() してない。
0386382
2012/05/19(土) 13:17:00.08間違えて別のメンバーを渡していたのが原因だった
でも、今度は別の問題が発生した
property.GetValue()でプロパティの値を取得してGUIDを取得しようとしてるんだが、guidを取得する段階でInvaildCastExpectionという例外が発生してしまう
guidを取得するにはどうしたらいいの?
http://codepad.org/x3s7Hx7w
0387デフォルトの名無しさん
2012/05/19(土) 14:11:32.72問題を再現可能な、最小の実行可能なコードを出せ
0388デフォルトの名無しさん
2012/05/19(土) 14:51:44.08分かった。出してみる
http://kie.nu/aPy
ManagedTSF
0389デフォルトの名無しさん
2012/05/19(土) 15:24:18.85GetPropertyの第一引数が間違ってない?
http://msdn.microsoft.com/en-us/library/windows/desktop/ms629020(v=vs.85).aspx
0390デフォルトの名無しさん
2012/05/19(土) 15:48:46.40多分、これで合ってると思うが…
間違ってるってどういうこと?
0391デフォルトの名無しさん
2012/05/19(土) 16:04:01.18にはpredefined property identifiersを指定しろとあるのに、
何故かIIDを指定してるからさ。
そのIIDがpredefined property identifiersとしても使えるってのなら話は別だけど。
0392デフォルトの名無しさん
2012/05/19(土) 17:27:43.29IIDの実体はGUIDだから使えるよ
0393デフォルトの名無しさん
2012/05/19(土) 18:07:58.90俺が昔作ったやつの断片コード。参考になれば。
ttp://codepad.org/GPMsTdtb
0394デフォルトの名無しさん
2012/05/19(土) 18:29:02.81ありがとう
参考になった
もし、差支えなければ、コード全部アップしてくれ
車輪の輪の再発明はもうこりごりだ(笑)
そういや、コード読んで気になったんだが、VARIANTはどこの名前空間で定義されてるの?
VARIANTって.NET Frameworkにはない型のはずなんだが
あと、_servicesはどういう感じでインスタンスを作ってるの?
0395デフォルトの名無しさん
2012/05/19(土) 20:45:42.40簡単なサンプルつけといた。
ttps://docs.google.com/open?id=0By6Cgv6nBdtsN1JsbzlOaXBXcWc
VARIANT は探せばいくらでもサンプルでてくるだろ、と言いつつ自分は
Reflectorでランタイムから抜き出したw
0396デフォルトの名無しさん
2012/05/19(土) 21:02:31.310397デフォルトの名無しさん
2012/05/19(土) 21:05:10.22ありがとう
すごく助かった
0398デフォルトの名無しさん
2012/05/19(土) 21:05:53.35くぐったら、それができたんだが、objectだとどうもGUIDが取得できない
0399デフォルトの名無しさん
2012/05/19(土) 22:04:45.482年ぐらい前に作ったやつだから良く覚えてないけど、
>>398が言うようにobjectだと正しく取得できなくて、色々調べた挙句
ランタイムの定義をぶっこ抜いたらVARIANTだった、と記憶してる。
ランタイムの定義がobjectではなくVARIANTだから無理なんだろうな、と結論づけた。
0400デフォルトの名無しさん
2012/05/20(日) 00:43:41.340401デフォルトの名無しさん
2012/05/20(日) 15:18:49.93試してみたら普通にいけたわ。
特に関係なくぶっこ抜いたらVARIANTでそのまま使ってただけだったかな?
0402デフォルトの名無しさん
2012/05/20(日) 15:47:01.97お、ホントだ
試してみたら、普通にできた
0403デフォルトの名無しさん
2012/05/20(日) 18:24:27.15デザインパターンはMVVMにしようということになったんで、
Livetで開発しようとしていたんだけど、いつ迄たっても、ver0.99のまま。
怖いんで、やっぱりMVVM Light ToolkitかPrismにしとこうかと悩んでます。
完成後の8年後もメンテするかもしれないし、メジャーな方が良いかな。
MVVMパターンの勉強は、主にU氏のドキュメントとかサイトで勉強したんで、
どうしたものかと思ってます。
0404デフォルトの名無しさん
2012/05/20(日) 18:46:38.21それ以外だと好き好きでどうぞとしか言いようがないが。
0405デフォルトの名無しさん
2012/05/21(月) 00:36:30.76U氏のやつより遥かに分かりやすいし、一人よがりな意見じゃなくて
こういう場合はこっち、こういう場合はそっち、みたいな感じで書かれててためになるよ
0406デフォルトの名無しさん
2012/05/21(月) 10:28:17.98でも八年後だとMetroも飛び越えて、さらに違うアーキテクチャがメインなってるかもしれんが。
0407デフォルトの名無しさん
2012/05/21(月) 10:45:50.580408デフォルトの名無しさん
2012/05/21(月) 11:07:04.010409デフォルトの名無しさん
2012/05/21(月) 11:12:46.94ネイティブもASP.NETベースに統一されて終わり
0410デフォルトの名無しさん
2012/05/21(月) 11:22:28.05もっと広義でデバイスで直動くもの全般がって意味かw
0411デフォルトの名無しさん
2012/05/21(月) 11:23:57.62XAMLなんか一瞬で無かったことになるのに
0412デフォルトの名無しさん
2012/05/21(月) 13:09:32.380413デフォルトの名無しさん
2012/05/21(月) 13:46:26.570414デフォルトの名無しさん
2012/05/21(月) 15:03:55.73が〜まる
0415デフォルトの名無しさん
2012/05/21(月) 15:05:33.120416デフォルトの名無しさん
2012/05/21(月) 18:24:49.39ターゲットとするプラットフォームでしか動かないものをネイティブと呼ぶのが最近の流行り
もっと言えばAndroidとiOS両対応でないものがネイティブw
0417デフォルトの名無しさん
2012/05/21(月) 20:02:33.77お前WDDにいただろw
0418デフォルトの名無しさん
2012/05/21(月) 21:07:45.51速度面で問題はあるが、日本語入力ができるFooTextBoxのWPF版ができた
いろいろと教えてくれてありがとう
すごく助かった
0419デフォルトの名無しさん
2012/05/22(火) 09:34:45.43ゼームォーだよ
0420デフォルトの名無しさん
2012/05/22(火) 09:47:24.60間を取って吉田君で良いだろ
0421デフォルトの名無しさん
2012/05/22(火) 21:23:28.54同一プロセス内でのみしか使用できなくて良いから、なんかうまい方法ない?
D&Dってコピー&ペーストの一つの表現方法だと思ってたけど、違う思想なのかね?
■ このスレッドは過去ログ倉庫に格納されています