WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part9
分かりません
結局、WPFはダメダメだったね。銀光はまだましか
イメージの問題だけど、MVCとだけだとステートレスな印象に引っ張られるから
やはり別の(そして短い)キーワードが必要だったんじゃないかなあ。
>>2 何年経とうといっこうに広まってないだろ。
まだ文化オリエントも対応し始めたばかりから、
あと2年は「新しい」で構わない。
アーキテクチャの話と、実装依存の話の領域について、人によって捉え方が微妙に違う点にもやもや。
PrismのMVVMサンプルなんか確かに見事だけど
バックのデータベース触るだけのWebアプリだからうまく機能するんだろうな
もっとUIが複雑な一般のアプリケーションには簡略化が過ぎると思う
VM使うにしてもコードビハインド使わないのは無理だよ
そういう、MVVMで難しいパターンをカタログ化できないもんかね?
MVVM厨を黙らせるにせよ、解決方法を検討するにせよ。
そうなると難しいパターンとはなんぞや、ということになるよね。
で、難しくなれば難しくなるほどサンプルとして余計な要素が入りやすくなる。
純粋にパターンだけ切り出した上手いサンプルってのは、難しい。
まあ、だからこそそれをやれよって話であり、
Prismのチームなんかは実際それをやろうとしてるのだろうけど。
RoutedCommandとCommandBindingのせいでビハインド書かな…
WPFって、リボンUIを作るクラスが見当たらないのですが、
作れないのでしょうか?
WPF Ribbonだかそんな名前で提供されてる
んで、CommandBindingをコードビハインドに何も書かずにVMに紐つけるクラス無いですか
書けばすぐだけど誰か書いてるだろ既に
もちろんあるよ
リボンはFluentRobbonがいい
公式リボンはサンプルがMVVMでしちめんどくせーことやってるなぁと思うけど
実際に作ってみるとMVVMじゃないと正常動作しないから困る
StreamGeometryより速い描画方法を教えてください
Rectangleがかければいいです
>>18 あれ、なんなんだろうね。
Ribbonは外部のXML定義ファイルみたいなの読み込んでメニュー作るべきだってことなのかな?
外部から設定読んで、動的にメニュー構築するなら
MVVMというか、データバインディング使った方が楽なのは確かだし。
>>19 普通にRectangleをCanvasに貼る
RectangleのBitmapCacheを有効にしておく
Silverlightならこれで爆速だがWPFは知らん
>>19 要件によるのだけども、
静的に一度描画して、あとはビットマップとしてキャッシュしとくだけでいい
(データの変更に応じて再描画がそんな頻繁に必要ない)
のなら、WriteableBitmapEx ってライブラリがあるんで、ググってみるといいよ。
>>19 RectangleGeometryで四角形の座標データを構築し、
FrameworkElementを継承した自作のコントロールで
DrawingContext使って描画。特に同じ色の四角形を
1マンコとか書く場合は
Geometry→DrawingContextでなく、
Geometry→Drawing→DrawingGrpup→DrawingContext
としてDrawingGroupで複数の四角形をまとめると
Rectangleより遥かに速い。
DrawingGroupは半透明ブラシが使えるのもポイントだ。
StreamGeometryで遅いって言ってるんだし前スレの四角形の人だろうからアニメーションさせたいんでしょ
DrawingContextで毎フレーム更新したりしたら死ぬわ
>>21 ありがとうございます
WPFにもありました
形状が変化しないとき(移動だけのとき)は少し早くなりましたが、ほぼ全部の形状が変化するときはやっぱりカクカクしました
>>22 ありがとうございます
WPFはサポートしてない?ようで、その作者?はDirectCanvasなるものを推奨してるみたいです
でもそれはダウンロードできないようで諦めました
>>23 ありがとうございます
前に使って重かったような・・・
>>24 エヘ
なら全部正方形にしておいてRenderTransformで
WPFの座標ってGDI座標と位置が0.5ピクセルずれてると思ってたけど、
FrameworkElementでは勝手に補正してたんだな。
DrawingVisualは幅200ピクセルの長方形を描くと幅200になるけど、
Rectangleは幅200ピクセルを指定すると幅199になるGDI糞仕様。
デバイス非依存ピクセル採用してるのになんだよこれ。
落ち着いて考えなよ。(0,0)を中心に1ドットの点を打てば-0.5から0.5の範囲で塗られるのは当然だ。
(1,1)を中心に2ドットの点を打てば0から1の範囲で塗られるだろう。単純な思い違いだ。
WPF4はSilverlightと同様にデバイスのピクセルにスナップするようになってたはず
30 :
27:2011/03/28(月) 12:06:06.95
>>28 いや違うんですよ。解像度を10倍の960dbiでRendarTargetBitmap出力するとわかる。
DrawingVisualで(0,0)-(0,100)に線を引くと、x=0を中心に
幅5ピクセルの線が引かれる。(のこり5ピクセルは表示範囲外)
(0,0)-(0,100)に線を引いたControlを出力すると、x=0.5(5ピクセル位置)を中心に
幅10ピクセルの線が引かれる。
だからデバイスのピクセルのスナップとも違って、
「96dpi相当デバイスでの0.5ピクセル補正」がかかってる。
WPFって終わコンなの?
手出そうとしてるんだけど今から学んでも価値あるかね?
これからはWPFが主流になるよ
WPFに移行したら、客からクレーム来ました。
パッと見、どれがボタンかよく分からないから使いにくいとのこと。
始まってもいないのに終わコンとか止めてくれるかな
性能は良くないし、ごちゃごちゃしてて使いにくいフレームワークではあるけれど、
WPF以上に表現力があって、開発ツールのサポートも充実したフレームワークは見つからないので、
必要な人は仕方なく使ってるって感じ。
WPFの表現力が必要なら、手を出しても損はない。
WPFの代替は全然出る気配がないからね。
表現力って見づらくしたり、ウザイぐらいに動くってことだろ。
flashと同じでいらない子。
バインディングとレイアウトが無ければこんなもの使わない
その二つがあるから使ってる
>>36 考え方が10年遅れてる。
表現力ってのは直観的なUIを作るためにあるんだよ。
特別な意味を持つ部分の色を変えたり、絵を付けたり、
最小化アニメーションみたいに、操作の結果をわかりやすくしたり、
画面のスペースを有効利用するために、表示する内容に応じてレイアウトを調整したり。
HTMLで普通にできてることと、
デスクトップアプリケーションで普通にできることを
両方できるようにしたのがWPF。
>>38 おまえは10年遅れてる。
それが逆効果だということは10年前から言われ続けている。
XPの不評、Vistaの不評、すべて原因はそれだ。
レイアウトの柔軟さに限れば今のところWPFを上回るGUIのフレームワークは存在しないと思ふ
>>39 おめーは死ぬまでクラシック使ってろよ
おもしろい技術ではあるね。
まぁ今もVisualStudio6がメインな俺の職場で使うことはあるまい・・・。
レイアウトの柔軟さが逆に批判されてんだよな。
ちまちまレイアウト変わるとストレス堪るから。
作る側と使う側の温度差が激しすぎる。
表現にに電力使うぐらいなら、バッテリーの持ちをよくしてほしいと思うのが一般的なユーザー。
>>42 例えば
>>42と
>>38は文章の量が違うので、大抵のソフトならレスの高さも違うはずだが、
お前は「レス毎に高さが違うのでストレスがたまる」と思うのか?
昔の話だが、CUIからGUIへの移行期、アイコンになれば、字だけでは表現できない、
直感的な表現が可能になり、使いやすくなると言われたが、フタをあけてみれば、
どれも似たり寄ったり絵のアイコンばかり。ボタンの絵もしかり。
ポップアップで説明がないとどれがどれだか分からない。
今見ると、絵はネタ切れなのか、どのアイコンにも字が入っている。
IEはE、YahooはY、WikipediaはW、楽天はR、YouTubeに至っては、
Yahooに先を越されてYを使えなかったのか、フルでYouTubeとアイコンに描かれている。
結局、絵に文字を超える表現力なんてないのだよ。
46 :
デフォルトの名無しさん:2011/03/28(月) 16:02:06.90
>>45 人間がQRコードを解読できるのなら
絵(と呼べるかはなぞだが)でも可能だけどね
バイト数使う割りにたいしたことを表現できないのが絵
>>44 たまるからみんな専ブラ使って弾いたり、加工しているんだが。
おれも改行4つ連続してるレスとかは透明あぼ〜ん。
え、そんなことしてないけど
gridを置くとウインドウ一杯に広がる、これが理解できないやつが多いんだと思うよ
自作の添付ビヘイビア使ったxaml読んだ日には泣き出すかもな
iPhoneのアプリなんかが良い見本じゃない?
遷移がわかりやすいし使っていて楽しい。
先進的なUIはスマートフォンが進んでると思うけど、PCアプリもWPFのような
柔軟なフレームワークによって表現可能な位置についてると思う。
個人的には今までのWinFormsアプリのようなダサいデザインにうんざり。
見た目は面白いが住みたくない家みたいなもん
MVVMで作ったらxaml.csはコンストラクタだけでメソッドが1つもなかったとか笑えるよね
53 :
デフォルトの名無しさん:2011/03/28(月) 17:28:41.38
>>52 html+CSS+JSの応用なんでそんなもんでしょ
GUIなんていらない。
どうしてもGUIじゃなかったらいけないような場合除いてコマンドラインで操作するCUIプログラムでいいよ。
昔の人はCUIで頑張ってGUI書いてたんだぞw
>>50 使っていて楽しいっは典型的な林檎病です。お大事に。
デザイン(笑)
灰色で□のボタンで、上のほうに青っぽいタイトルバーがあって左側にタイトル書いててその一番右に_ □ ×があって
メニューにファイル(F)とか編集(E)とか書いてて・・・
それでいいよ。リボンとかショトカットキーはわからないしでかいから画面を占領する部分が多いしでなんの役にも立たない(笑)
ファイル→切り取りってやるのとでっかいハサミのアイコンクリックするの大差ねーだろ
そもそもある程度慣れてくるとCtrl+Xみたいなショートカットのほうが早いからアイコンそのものがいらない(笑)
デザインなんていらねぇwwwwwww
このスレの住人もけっこう保守的なんだな。
まあこんな連中には自由度が高いのはかえって障害だろう。
わざわざ釣りの相手してやんなよ
ウィンドウズの外観の土台
61 :
デフォルトの名無しさん:2011/04/01(金) 11:39:14.98
3.5→4の載せ替えでコンストラクタにpublic付けないとビルド出来ない部分があった
誰かwpfの二ちゃんブラウザ作らないかな?
いまだにdelphiベースのJaneなんて飽き飽きだよね、
言い出しっぺの法則
listviewにスレッド一覧表示させたらスクロール重すぎて萎えた
いままでにない画期的なUIで作るしかないな
FlowDocumentがトロすぎる
>>64 2chのようなデータ構造は多分向いてない
WP7のような画面が狭い場合はバインドを工夫すればなんとかなるだろうけど
67 :
デフォルトの名無しさん:2011/04/01(金) 20:12:38.18
以前試しに作りかけたことがあったけど
スレをWebBrowserに表示させるとWPF使う意味がないし
FlowDocumentに表示させるとHTMLに比べて表現力が低すぎるし
ListViewに表示させると「レスをまたがった文字選択」ができなくて詰んだ
丁度2chクローラ(サービス)←(WCF)→ブラウザ(WPF)で組んでみようかと妄想してたところだ
それならSilverlightの方がよくね
WPFを使う意味がわからない
WPF使える環境でわざわざSilverlight使う方が
意味わかんない。自虐縛りプレイが好きなんだな。
WPFはMCTS持ってるけどSilverlightは藍澤光ぐらいしか知らんし
72 :
70:2011/04/01(金) 22:01:04.34
>Silverlightは藍澤光
俺、今までWPFしか知らなかったけど今日からSilverlight覚えるわ
データバインディングいい!
データバインディングは過剰すぎる
えーいいじゃん
あれが過剰ならどうすべきだと思うんだい?
FormsのBindingを一ヶ所設定するのに2、30行は必要だったことを思えば無茶苦茶シンプル
78 :
デフォルトの名無しさん:2011/04/02(土) 14:19:06.92
.NET4でグラスフレームのウィンドウを作ろうとしたら勝手にウィンドウの大きさが大きくなってたりしてわけわからん
WPF Shell Integration Library
Win7がないので試せない
80 :
デフォルトの名無しさん:2011/04/02(土) 14:41:31.54
silverlightのスレで2チャンブラウザの話が出てるね
技術的に不可能みたい
82 :
デフォルトの名無しさん:2011/04/02(土) 15:29:19.78
OoBか鯖側で取ってくればいいじゃないか
Listviewがデータ多いと糞遅い。速くするテクニック教えてくれ。
intとstringもつオブジェクトを2万個で試してみたけど全然軽いよ。
どんなの表示してるの?
釣れますか?
Socketクラスも存在してるようだがそっちでHTTPしゃべらせたらどうなるのかね
91 :
デフォルトの名無しさん:2011/04/03(日) 02:58:37.84
Silverlightの問題はクロスドメインだな
OOBすれば問題ないだろうけど
SocketはSocketでこういう制約があるのか 難儀なことだ
> Silverlight でのソケットの使用に関する制限事項として、
> ネットワーク アプリケーションに接続を許可するポートを
> 4502 〜 4534 の範囲内にする必要があります。
> これらのポートだけが、Silverlight アプリケーションからの
> ソケットを使用した接続に許可されます。
> ポートへの接続がポート範囲内でない場合、接続は失敗します。
>>91 OOBでもアクセス先の2chサーバーがclientaccespolicy.xml
置いてくれないとだめなんじゃない?
Silverlight 5はネイティブが呼び出せるようになるから、
そこからソケットでTCP 80通信は可能になるかな。
ここまでくるとWPFアプリをダウンロードした方がマシ。
>>93 OOBにすれば、clientaccespolicy.xmlが2chサーバに無くてもレスDATをGETできるけど、
それは単純にレスDAT全てをGETできるだけであってHeader変更が出来ないから
最新のレスDATだけを取得するとか、書き込みもできないってことでしょう。
俺もHeaderが変更出来ないのは微妙な仕様だなと思うね。
WP7でもReferer変更出来なくて困るんだよね、もう少し緩めて欲しい。
>>96 それをどのようにすればReferer変更出来るようになるのかご伝授して頂きたいもんです。
教えてください。
Refererが変更できなくて困るんじゃなくて、
Refererを改ざんしないとWebサービスが成り立たない
2chの方がおかしいと思うのだが。
いいこと言うね。
>>98 いやそれはない
datの差分取得はhttp標準の機能
なぜRefererを変更する必要があるのか。
ああ、でも古いやり方といわれるとそうかも
webapiのようなのでdatの差分を返すものはあってもいいかもね・・・
ページとしてなら返す機能はあるけど
103 :
デフォルトの名無しさん:2011/04/03(日) 13:30:36.84
2chもさっさと糞みたいなファイルベースのPerlスクリプト捨てればいいのに
ASPよりマシだろう?
GoogleのSearch APIもReferer入れないと弾かれる
他にもあるかもね
それよりもJaneStyleのようなDelphiベースのアプリケーションの時代なんて終わらせちゃおうぜ。
誰かWPFのブラウザ作ってくれよ。
お前ら頭いいんだから、簡単だろ。
作れないことも無いけど
Jane使ってそうな層はごちゃごちゃしてるコンフィグが好きそうだから嫌
Chaika派としてはWPFで作るメリットが全くない
WPFでJaneみたいなの作るひちょうせいないねえ
知人から聞いたけど、2ちゃんブラウザって意外と作るのは大変みたいだよ。
Styleだって、JaneDoeのソースコードを丸々貰って改変しただけのものだから。
.net製専ブラは遅くて使えないってのが定説で今まで全然普及しなかった。
あれから8年経ったけど、それは今でも変わらない。
なぜならPCが速くなるたびに、GUIライブラリがより多機能により遅くなるからだ。
普及っつうか、まずリリースされてるのないじゃん
放棄されたTwintailくらいだろ
作れる人がいないんだろうね。
まー、世間一般なんて.net/WPFの存在すら知らないんだろうし。
こうやってWPFについて語っている俺たちはインテリの部類なのかもな。
最初にソフトの要件を決めて、
それに合ったフレームワークを選ぶのが定石
最初に採用フレームワークだけ決めるとか馬鹿だろ
2chブラウザって作ると儲かるんだぜ
なぜ皆作らない?Styleの中の人だって●収入が莫大なんだからさ
2chブラウザって表示部分はHTMLでやるじゃん
WPFで作る意味が全くないから、意欲が沸かない
儲かるんだぜって、それは儲けたい人に教えてやれ
>GoogleのSearch APIもReferer入れないと弾かれる
Refererが要求される時点で、WebサービスでなくWebブラウザ
を前提としている。こんなものはAPIとは呼べない。
GoogleはWebサービスの基本を理解していないとしか思えない。
APIに要件なんかあるのか
知らんかった
121 :
88:2011/04/03(日) 16:57:34.90
>>89 さんくす。
書き込みの時の Referer ってことかな。
なるほどねえ。
2ちゃんのdatを読んでも別にhtmlで全べた出力する必然なんてまったくないけどな
あるいは金儲けのためならWPFで作らなきゃならない理由もない
123 :
デフォルトの名無しさん:2011/04/03(日) 19:54:36.00
とはいえ、ハイパーリンクや画像のサムネイルへのリンクなどが必要だから
html出力させた方が簡単だ
マウスオーバーで画像やアンカーのプレビューとかやりだしたら
HTMLだと余計に面倒じゃね?
そこもHTMLでやるならいいけどさすがにそれはWPFの意味が無さすぎる
元々意味なんてねえけどな
結局、レス画面にはIEオブジェクトをCreateするんでしょう?
WPF紳士がそんな安直なマネはせんだろ
おれが作るなら「ItemsControlで何が不満なんだ」ってレベル
マウスでぐりぐり選択できない
130 :
デフォルトの名無しさん:2011/04/03(日) 23:29:50.93
>>124 datをhtml化してブラウザコンポーネントに処理させた方がいい
そのくらいの処理ならjsが出回ってるしナビゲートさせればjsも動く(ただしIE用だけど)
>>113にその辺の話あったよ
Janeで何も不満はありません。
132 :
デフォルトの名無しさん:2011/04/04(月) 01:17:16.06
..NET4.0のMCP受けた人っている?
janeはもう古い
リボンコントロールがついたwpf版が欲しい。
134 :
デフォルトの名無しさん:2011/04/04(月) 08:37:03.22
俺も2ちゃんブラウザを作ろうとした事があるけど、winformな。
挫折しました。
かなりの実装作業量が必要。
FlowDocumentで長いデーター扱った事あるけど、
相当重い。
Win8はエクスプローラもリボン化してるが
IDEのリボン対応強化されないもんかな
137 :
デフォルトの名無しさん:2011/04/07(木) 10:58:32.02
>>136 機能が少ないソフトだとリボンは邪魔なだけ。適材適所でUI考えて欲しいわ
しばらくWPFに触ってなかったら1年前に書いたコントロールテンプレートが何してるかさっぱり分からなくなってしまった。
RelativeSource やら Binding やら ItemsPresenter とか全く覚えてない…。だれかボスケテ。
基本は自分で学習しなおせ
むしろ、おれはwinformの仕様を忘れてきている
WinFormなんて過去の負の遺産は忘れてよし。
メジャーこそ正義。
孫こそ正義。
はげ
WPFで入力の検証を実装するの面倒だな
無効だったら何も反応しないだけでいいか
WPFの思想と真逆だろうけど
ぜんぜん面倒じゃないよ
三日経ったらやり方を忘れてるだけ
winform → WPFコンバーターってまだ無いの?
ない
俺もあったら欲しいな
MVVMじゃないWPFとか・・・
別にMVVMは万能解じゃねえし
金科玉条にすると相談室で暴れてる馬鹿ガキと、VはCに依存してはいけないとかほざいてる自称プロみたいになるぞ
152 :
デフォルトの名無しさん:2011/04/10(日) 14:30:59.52
コマンドバイディングは兎も角、データバインディング使わなかったらwpfじゃないぞ
データバインディングとかいらね
154 :
デフォルトの名無しさん:2011/04/10(日) 15:59:12.62
>>137 リボンはメインメニューのダブルクリックで簡単にツールバーを最小化出来るのが良い。
ThinkPadXみたいな画面のクソ狭いノートPCだと特に。
155 :
デフォルトの名無しさん:2011/04/11(月) 21:53:30.89
Viewで完結していること、例えばボタンを押すとダイアログを開くとか
起動時、終了時にGUIの設定(windowのサイズだとか)を
settingsに読み込み保存したりするとかも、コードビハインドでやるのは
MVVM的にはいけないことなんでしょうか?
完全にその特定のView固有の処理だったらViewでいいと思う
Prismにも「Viewを差し替えたときに一緒に変わるようなものはViewに書け」とある
>>155 駄目なんてことはないよ
仕事で使う場合はルールはあるかもしれないけどさ
だが
>>155 が挙げた例はModelじゃないかな
少なくともSettingsは明らかに。
×Model ○VM
入力状態とかはVMとしても
ウィンドウサイズは完全に特定のビュー固有のものじゃね?
俺も>160と同じ考え。
VMやModelに依存しないなら、View で十分。
MVVMで作る理由が「流行だから」じゃないなら明確な指針があるでしょ
それに沿うように実装すればいいじゃない
そんな細かい指針なんかあるわけないじゃん
MVCなんかもっと抽象的でユルユルだぞ
結局MFCみたいなモデル構造が最善。それにいきつく。
Java見れば明らか。
何?ウンコSwingの話?
Javaのライブラリは、
デザパタ信者が設計すると使えないものができあがるという典型例の宝庫。
俺はWPFでバインディング使わずにイベントハンドラを
ゴリゴリ書いてるのがちょうどいいわ
レイアウトだけで使う価値あるよね
まあなれるとバインドでなるべく収めたくなるけどね
元からある仕組みでコードが完結するならその方がいい
自分で書けば書くほどバグを入れないようにしないといけなくなるから
>>156 そうなの?ViewModel = Viewのモデル、って説明をみて
Viewを統括・制御するような部分は全部viewModelに入れていた。
View上の要素があちこち連動するような場合に、それをViewModel内で解決せずに
View側でやるとなるとViewがかなり複雑なロジックを持つことになりそう。
細かいView固有のレイアウト情報とかをVMで持ったところで
どうせそんなのView無しじゃテストできないじゃん
これまでよりコーディングの量が減るかと思いきや増大してしまうのがWPF
でも悩まずサクサクかける気がする
サクサク書けるってことはサクサク読めないってこと。
perlしかり。basicしかり。
ならMFCの方がサクサク読めるのかと
MFCは読みやすいよ。
ごちゃごちゃしたところはすべてマクロで隠されているからな。
コードの量で語るとか素人かよ
見通しがいいかどうかが問題だろ
コード量と見通しは相関性高いのになに言ってんだか。
リーナスが昔から言ってんじゃん。
コード量と見通しの相関はおおむねその通りなんだけども、
コード量大幅に減るのに見通しあんなに落とせるCのマクロはすごいよね。
C#に可読性で勝負を挑むのって無謀としか思えんな。
おまえらが「短く書けたぞ」って悦に入るのも、大量のコードで書かれた標準ライブラリや
フレームワークのおかげじゃないか。なら自前で見通しがいいライブラリ作ればいいだけだろ
コード増やしたくないとか1行いくらで給料払ってる経営者かよ
C#のusing最強
つい最近になってusingで型にエイリアス付けられるのに気づいた。
using Unko<T> = Tuple<Unchi<T>, Unpo<T>>とかは出来ないけど。
そのクラス名はマズイ、やたらと噛み付く人が現れるぞ
UnkoとUnchiはともかくUnpoって何だよ市ね
TabControlの子コンテンツに任意のUserControlを設定したいのですがどのようにすれば良いでしょうか?
とりあえず書いてみたのですがxamlで任意のUserControlを追加する方法が解りませんでした。
http://ideone.com/zXUby
そこにセットできるのはDataTemplate型。
そのユーザコントロールを持つDataTemplateを渡せばおk。
ただ、これは根本的にWPFの使い方を間違えていると思うぞ。
ありがとうございます。
なるほど。DataTemplateを動的に生成してUserControlを渡せばいいんですね。
プラグインで拡張性を意識した作りにしているのですが、どのように実装するのが良いですかね?
そういうのはよくありがちな初心者によくある
何でもかんでもMVVMにしちゃうという。
束縛の意味を理解しなおす必要がある。
> どのように実装するのが良いですかね?
MEF
ただし
>>186をみると技術を使っているんじゃなくて
技術に使われてる状態だから、MEFを使いこなせるとは思えない。
191 :
デフォルトの名無しさん:2011/04/16(土) 09:09:11.32
>>186 <DataTemplate>
<ContentPresenter Content="{Binding Control}"/>
</DataTemplate>
usingによる別名もあまり知られていないが、
extern alias はさらに知られていないし使われもしないな。
ContentPresenterって便利だね。構造はXAMLで書きたいけど
インスタンスはコードで用意したいってときによく使ってる。
>>192 同じライブラリだけどバージョンが異なる複数のDLLを一緒に使う必要がある場合に使う
C#はそういう泥沼対策のための機能がとっても多い
カスタムコントロールのコントロールテンプレートを
<ItemsControl ItemsSource="Children"><ItemsControl.ItemsPanel><ItemsPanelTemplate><Grid /><.../><.../><.../>
とした時に、内部の Grid の RowDefinitions や ColumnDefinitions をカスタムコントロールで定義してある RowDefinitions や
ColumnDefinitions に binding させたいのですが、どうすれば良いでしょうか?
依存プロパティでなければ直接Bindはできない。
自前で添付ビヘイビアを作るなど手間をかければBindはできるが、手間に見合うとは思えん。
197 :
315:2011/04/17(日) 11:44:00.89
依存関係プロパティにはしてんですが
Bindingの指定がうまくいかなくて。
Relativesourceでanscesterで引っ掛かってくれない。
チェーンの範囲に入ってるんだろうか
Grid.ColumnDefinitions/RowDefinitionsにはそのままBindはできない。
それと、情報を後出しにするな。
君は楽できていいだろうが、
>>195,197のように情報を小出しにすれば
回答者に手間をかけさせ、挙句
>>197のように後から違うと言い出して回答者に不快な思いをさせることになる。
200 :
デフォルトの名無しさん:2011/04/17(日) 14:59:55.04
>>158 モデルにおくというのは一つの考えなのですが、
WindowのLoadedとClosedをVMやMに通知するのは簡単ではないですよね。
behaviorを使ってイベントにコマンドを結びつけたりすればできるのかもしれませんが
コードビハインドでサクっと書くのに比べてあまりにうえんで馬鹿馬鹿しい。
常時Settings(xmlファイル)とバインドしておくのはパフォーマンス的にコストが高すぎの
ような気もしますし。
そもそも初期設定を読み込むのにloaded使うの間違ってね?
M作ってからV呼び出すもんじゃないの
>>199 すいません。
ItemsPanelTemplate の中のものって Template.FindName() でもひっかからないし、
扱い違うのかと思って。
203 :
デフォルトの名無しさん:2011/04/18(月) 14:56:59.55
MVVM的にはMがVを呼び出すなんてありえんだろ。
どうでもいい。
>>201はthis.DataContext = new Model()ってこったろ
IE8のお気に入りのとこだけWPFっぽく見える
XP使ってた時お気に入り開いたとき重かったし
落ち着いて常識的に考えようよ
ありえない
208 :
デフォルトの名無しさん:2011/04/18(月) 23:03:14.29
素のXPインストール直後にIE8入れて.netのランタイムが入るかどうか確認すればわかるんじゃね?
関係ない奴でもフォントが滲んでるとWPFっぽく感じられる
exeのヘッダバイナリエディタで覗けば.NET使ってるかわかるんでね?
.netを勘違いしてる奴がいるな。
dumpbin /importsで見てmscoree.dllを使用していたら.MET
ツリービューのアイテムに子要素を追加するにはどうすればいんですか?
( (ItemCollection)TreeView.Items[0] ).Add( ”子要素1” );
変換できないといわれます
前は実装しないって明言してた気がする
別にGTKでいいよ
>>214 だめです、どうしてもインテリセンスでAddchildが出てきません
しかも検索してもMSDN以外まったく情報がでてこずサンプルがありません
WPFのtreeviewはFormのとは完全に別物なんでしょうか?
wpfのコピー作るのなんて金もらってもやりたくない仕事。まあ作る才能もないけどね。
ビジュアルブラシとか考えただけで鬱になれる自信がある
219 :
デフォルトの名無しさん:2011/04/20(水) 13:45:21.87
Blendクローンが出来たら無茶苦茶欲しいが
WPF「が」別物
Formsの延長じゃない
>>221 ありがとうございます!Form.treeviewを埋め込むことにしました
TreeViewはバインドして使うんだよ
ObservableCollectionとかに勝手に好きなクラスのインスタンスを突っ込んでバインドする
AddChildとかいらない
WPFやってる意味がねーよな
なぜ大人しくFormsを使わない
俺もWPF始めたばかりの頃はバインディングに抵抗あったから
気持ちはわかるが慣れろ
ちゃんと木構造にするにはHierarchicalDataTemplateの設定とアイテムの子(のコレクション)を表すバインドも必要
WPFについて、何か良い入門書ってあるのでしょうか?
和書では何を見てもエッセンシャルWPFに辿り着くのですが、入門書とするには少し敷居が高いようなので・・・。
すいませんが、よろしくお願いします。
勉強やめたら人間終わりだぞ
>>221だってC#を始めた頃はC#分からなかったし
WinFormsを始めた頃はWinForms分からなかっただろ?w
エッセンシャルWPFもそろそろ古典になりかけ
そんなのコキ使う側の方便だね。
勉強ばかりしてたら、どんどん人間性が喪失するね。
カルチャー番組見てる年寄りなんて勉強のしすぎで最早ロボットですなw
アホかっちゅーねん
うん
ぜんぜんちがう
すごい発想だなw
普通に自作クラス使いなさい
WPFで何やろうとしてるのか知らないけど
FormsでWPFでやろうとしてることの実現方法探した方が早いんじゃないのか
あ!インテリセンスやっと通りました
TreeView.Items.Add( s );
( (ItemCollection)TreeView.Items[0] ).Add( "a" );
お騒がせしました
どう見ても動かないけど何故か動きませんって来るなよ
げ!
>>213とコード同じだったなぜ今度は通ったのだろう・・・
( (TreeViewItem)ExplorerFolderTreeView.Items[0] ).Items.Add( "b" );
ちくしょーーーーーなんで変換できねーンだこのクラス作ったやつ出てこいや
AddChildプロテクトならMSDNにのせてんじゃねーぽ
.Items.Add(new TreeViewItem { Header = new TextBlock {Text = "b" } });
new TextBlock {Text = "b" }は省略して"b"でもいい
>>240 ありがとうございます!!!!!!!!!!!!!!!!!!!!!!
>>239 何でもかんでも適当にキャストしちゃ駄目w
やっとバインドの意味がわかった
Addはツリーノードを追加してくれて文字列を指定すればそのcontent(ヘッダー)にデフォルトで入れてくれるものだと思ってた
今までずっとツリービューにstringクラスを追加していたわけか・・・・
それもまた微妙な解釈だけどね
TreeViewItemなんかインスタンスに一切触らなくても行ける
<TreeView ItemsSource="{Binding Nodes}" />
Bindingって中身が見えなさ過ぎて気持ち悪い。
まあ見えても俺には理解出来ないんだけど
中身が見えすぎ(=依存しすぎ)て困ってたから生まれたわけですし
それが嫌ってのは体質に合ってないってことよ
深く理解せずに使っていいんだろうかーなんて思って。
知らなくてもバリバリ使っていーよってことか。
データバインディングは理解できたけど、
コマンドバインディングが難しい。いや、仕様は理解できたが、実装が難しい。
DelegateCommandでええやん
Expression Blendの内部ではDelegateCommandのようなことはしないで
直接Commandパターンと結び付けてるみたい
つまりOpenFileCommand : ICommandみたいなクラスが沢山ある
2chブラウザのようなコマンドの多いアプリになるとその方がいいかもね
いや、コマンドバインディングの仕組みを理解するのは問題ない。
理解することよりも、そのコマンドバインディングを使って、アプリケーションをどの様に設計すれば効率のよいシステムができるか出来るかどうかが悩みどころ。
Commandは機能を定義して実装を分けるってお題目はどこへ行ったんだ?
そのCommandだけで完結しているなら無意味に実装分ける必要なんてないじゃない。
業務の入力フォームみたいに一画面につき一機能のシンプルなものならともかく
例えばお絵描きアプリのように一つの画面で多数のコマンドがある場合は基本
>>251スタイルでいいと思う
いくらでも拡張できるし構造もシンプルだし
JISで認められてるのはFormsなんでしょ?
WPFってやる価値あるの?
まったくない
そんなこと言ったらJavaもBeans以外無価値になっちまうだろうが
趣味で使うにはいいかなーと思うんだけど。
Separatorを縦棒にするにはどうすればいいですか?
親のControlのフロー方向で勝手に縦になったり横になったりする
WPFはちょっと自信のあるパソコン大先生の鼻っ柱をたたき折るほどの迷宮
そして酸っぱいぶどうになってしまう
まもなく、WPF の二ちゃんブラウザがでるからよ
楽しみにまっているんだな
また遅くて使えないってことにならないようにな。
「遅すぎ」「糞PC乙www」の流れになるに一票
WPFアプリに慣れるとWinFormsですら速く感じるよ
それでも、WPFの代わりは無いので使うけど
お、WPF2ちゃんブラウザできあがるのか
誰か作ってんの?
俺はエロ画像整理ツールで忙しいんだ
gpu使うわけだから、delphiやwinformのように遅くなることは理論上ないはずなのだが、、、
Vistaのときからそう言う馬鹿なこと言う馬鹿が沢山いたが、
馬鹿にされたとおりベンチは馬鹿遅かったよな。
理論上遅くなるのに速くなるって言ってたのは
GDI触ったことない馬鹿だけだろ。
271 :
デフォルトの名無しさん:2011/04/22(金) 13:34:37.61
XMLのせいです。
WinFormsっていうかWinFormsがラップしてるコモンコントロールとかの描画の話ね
おまえらほんとWPF全然触ってないのな。
デバッグ時に表示されてるように遅延ロードしてるからに決まってるだろ。
起動時に重いのはフォントキャッシュサービスを起動してるからだ。
WinFormsでオーナードローとしようとすると何これおっせーってなんのも同じ理由
GDIにGDI+のレイヤーが被って処理してるから
GPUを描画に使うってよく言うけど、どういうパスで描画してるのか理解してるんか?
・BinaryXAMLの読み込みが遅い
・テキスト幅の計算が遅い
・Imageコントロールは画像の読み込みを遅延させてるくせにUIスレッドに負荷をかけるので遅い
・多くのコントロールがControlTemplateを使ってるのでVisualが複雑になりすぎて遅い
・GDIと違って、画面の一部を優先的に再描画できないので体感速度が遅い
・負荷がかかると、レスポンスよりスループット重視になるので、再描画の頻度が下がってもっさり
・レイアウトエンジンは使い方を気を付けないと計算量が爆発するので遅くなる
・ライブラリが大きいので起動が遅い
・GPUが活用できるのは単純なアニメーション程度なので、結局大してGPUは活用できなくて遅い
WPFの遅さの原因は一言では表せない
性能重視で1から設計しなおしてほしいレベル
Imageコントロールは脳障害が作ったとしか思えない
原因は言わなくてもいいよ、結果だけ言えば。
「WPFはやっぱり遅かった」ってな。
かといって便利っちゃあ便利なので戻る気にもなれない
これからどこに行けばいい
>>281 そのレスの速さからして、おまえの専ブラはGDI描画だな。
>>279 自分で作れば、自分も脳障害だったと分かるよ。
既に全部まっかっかです
>>278 一行目から俺用語www
BinaryXAMLをウェブ全体から検索
約 2 件 (0.15 秒)
その内1件はこのスレ
半角スペース入れれば出てくるだろw
ゆとりって分からない単語をググって引っかからないとすぐキレるよね。
ふらっとでも統計的結果の意味が分からなくて暴れてる馬鹿がいた。
ふらっとでも統計的結果の意味を説明できない馬鹿がいた。
やっぱり釣れた。同一人物だったか。
よくわからんがみんな消えろってことでOK?
統計的結果の人は遅いの嫌いなんでしょ
お呼びでないから帰んな
LINQと違って計測しなくても100倍以上遅いのは分かってるからなw
統計的結果は句読点つける派なので278は別人ですけどね
おまえ釣られすぎw
分からないふりをしていたい金曜の午後
人格批判に走るからすぐ分かると指摘されて
罵倒をゆとりに統一し自演を行うという行動に出たが
口調が直ってないんだなあ
今ふらっとは悪くない空気だから戻ってくるなよカス。
相談室で腐ってろ。
いつものキチガイが出張してきたようです
確かにBinaryXAMLで意味が分からないとか終わってる。
粘着してる側は論外として粘着されてる側もしばらく離れてろよ
うぜぇよマジで
荒らしと無自覚な荒らしの共演w
ほんとまじウザイ。ふらっとでやれっての。
>>305 汚いレスばかりしてるおまえが一番煽ってると思うぞ。
誰も安価しなければ誰が誰に物申してるのか分からなくなって鎮静化するよ
すでに渾名がある人には使えないが
盛り上がっているところ悪いんですが
((TreeViewItem)((TreeViewItem)TreeView.SelectedItem ).Parent ).IsSelected = true.;
TreeViewItemの選択中のノードの親ノードを選択するにはどうすればいいんでしょうか
WPF2ちゃんねるブラウザか・・・
う〜ん、いい響きだ。
>>310 TreeView.SelectedItemはTreeViewItemにキャストできないだろ
TreeView.ItemsSource=new List<TreeViewItem>();
とか書いてるなら別だけど
ごめんなさい原因は他にありました忘れてくださいすいません
知ってます
WPF2chブラウザ超楽しみ。
どうしても速度が出ないので諦めました。
WPF製のMetroTwitもなんかもっさりだったなあ。
UIは煮詰まってないけどけっこう好き。
昔、.net1.1の頃にあったWinFormの2chブラウザって今でもあんの?
Rectangle.Margin.Top = (double)200;
変数ではないので変更できませんと言われます
値型と参照型、クラスと構造体について勉強しましょう
それでも分からなければ、WPFは関係ありませんので初心者スレへどうぞ
Margin.Topには変更通知機能がないから変えられないんだよ
コントロールが感知しない数値を変えられても意味ないだろ?
>>321 Marginをまとめて変更すれば可能じゃなかったっけ?
>>321のコードはパッと見Marginプロパティに格納されているインスタンスに直接アクセスしているように見えるけど、
実際はMarginプロパティのGetアクセサを呼び出していて、そこで注意しなければいけないのが
値型を返すプロパティはクローンを返すということ。
そのクローンは一時的に用意されただけなので、それのTopプロパティに代入しても
Marginプロパティに格納されているインスタンスにはまったく影響を及ぼさないので意味が無い。
Margin構造体を生成して、直接プロパティにぶちこみましょう。
Rectangle.Margin = new Margin(...);
参照型のプロパティなら
>>321みたいなコードでもうまくいく。
Thickness a = new Thickness(0,0,0,0);
a =Rectangle.Margin;
a.Left = (double)200;
Rectangle.Margin = a;
できました〜ありがとう
>>321って警告出なかったっけ?
フィールドの場合だけ?
警告どころかエラーだよ
構造体がフィールドの場合は問題なくコンパイルできるし想定通りに動く
C#でLocationの値を変更出来なくて悩んだのを思い出したw
WPFに慣れると、絶対にWINFORMには戻れません。
themes/generic.xamlに
<BitmapImage x:Key="ChinkoImage" Source="Unko;component/themes/chinko.png" />
て感じに指定したらエラー吐かれてちょっとハマった。
ControlTemplate中のImageのSourceにUri直書きしたらいけたけど。
ようけわからん。
<Style TargetType="ListViewItem">
<EventSetter Event="MouseDown" Handler="ListViewItem_MousDown"/>
<EventSetter Event="MouseDoubleClick" Handler="ListViewItem_MouseDoubleClick"/>
</Style>
void ListViewItem_MouseDoubleClick ( object sender, MouseButtonEventArgs e )
{
Debug.Print( "1" );
}
void ListViewItem_MousDown ( object sender, MouseButtonEventArgs e )
{
Debug.Print( "2" );
}
MouseDownだけ起動しませんなぜですか?
イベントがそこにたどり着く前に誰かがハンドルしてるんでしょうよ
ソースそのままコピったんならeがないからじゃね
335 :
デフォルトの名無しさん:2011/04/24(日) 19:03:12.40
>>334 上もe抜けているから大丈夫だろうが、何故MousDownなんだろうな?
CickやDoubleClickの中にもDownは入ってるからな
その辺のイベントの処理ってどうなってるだろ
>>332 ちなみにOSは何?
MouseDownに直してみましたが起動しません
switch (connectionId)
{
case 2:
eventSetter = new System.Windows.EventSetter();
eventSetter.Event = System.Windows.UIElement.MouseDownEvent;
#line 14 "..\..\Window1.xaml"
eventSetter.Handler = new System.Windows.Input.MouseButtonEventHandler(this.ListViewItem_MouseDown);
#line default
#line hidden
((System.Windows.Style)(target)).Setters.Add(eventSetter);
eventSetter = new System.Windows.EventSetter();
eventSetter.Event = System.Windows.Controls.Control.MouseDoubleClickEvent;
#line 15 "..\..\Window1.xaml"
eventSetter.Handler = new System.Windows.Input.MouseButtonEventHandler(this.ListViewItem_MouseDoubleClick);
#line default
#line hidden
((System.Windows.Style)(target)).Setters.Add(eventSetter);
break;
}
OSはWin7 64bitです
<EventSetter Event="MouseDoubleClick" Handler="ListViewItem_MouseDoubleClick"/>
を消しても起動しません
MouseLeaveに変えたら起動しました
WPFとかSLってイベントを親が取れるのなっていったっけ?
ListViewItemにイベント書かないでその上に書いて処理するとかじゃあ駄目かね?
ListViewItemじゃなくてListViewにクリックイベントを追加してListViewItemに届くかってことですか?できませんでした
MouseDownがどうしても起動しません
MouseDownイベントはアプリケーション中他では一回も自分で追加してません
XAMLを使うとこんがらがってわけわからなくなるのでC#だけで書きたいんですが
ListViewのソースに独自クラスを追加してそのクラスにMouseDownを追加したい場合はどうすればいいんですか?
ObservableCollection<FileViewItem> FileViewItemCollection = new ObservableCollection<FileViewItem>();
FileListView.ItemsSource = FileViewItemCollection;
public class FileViewItem : ListViewItem
{
public string FileName {
get;
set; }
public string Size {
get;
set; }
this.MouseDown += new EventHandler(ListViewItem_MouseDown);
}
FileViewItemCollection.Add( new FileViewItem
{
FileName = LastPathString( s ),
Size = GetFileSize( s ),
} );
こういうふうに書きたいんですが
this.MouseDown += new EventHandler(ListViewItem_MouseDown);
ここはどうかけばいいんでしょうか
ItemTempleteの方で拾えば反応するよ
<ListView ItemsSource="abcd">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding}" MouseDown="ListViewItem_MouseDown"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
とかね
>>341 起動しました!
ありがとうございます!
何で動作が違うのかって言うとMouseDownは添付イベントだからです
MouseClickはルーティングイベント
344 :
デフォルトの名無しさん:2011/04/24(日) 20:13:48.08
>>339 ダメモトでPreviewMouseDownハンドルしてみたら?
345 :
デフォルトの名無しさん:2011/04/24(日) 20:15:24.57
PreviewMouseDownは普通にイケるだろ
PreviewMouseDownできました
やっぱりstyleで統一します
ありがとうございます
メインウィンドウから新ウィンドウをhowしたんだけど設定してるイベントが起動しない
メッセージはウィンドウごとじゃなくてなにか特別な仕組みになってる?
どうせその「真ウインドウ」とやらをstartupにしても動かないんだろ
だめだなぜかGridに設定したイベントがGridに配置してあるコントロールの上でだけ起動するわけわからん
イベント何よ
マウスムーブ
プレビューマウスムーブ
プレビュースタイルマウスムーブ
間違えたマウスムーブはどこでも起動しない
コントロールの上だけで起動するのはマウスホイール、プレビューマウスホイール
353 :
デフォルトの名無しさん:2011/04/27(水) 20:57:12.59
ExpanderのHeader内のContentPresenterをHorizontalAlignment=Strechにする手軽な方法ってない?
HeaderTemplate使う
WPFで、2ヶ月分のCalenderを同時に連動させて表示する良い方法がわかりません
Windows.Formでは、monthCalenderのCalenderDimensionsで複数月を指定できましたが、
WPFのCalenderでは2個並べてイベントから連動させるしかないのでしょうか
C#初心者スレでは回答がなかったので、書き直してコチラに
馬鹿には無理
ベジエ曲線じゃなくて点を全て通る補間曲線って用意されてる?
ないようだな みんな色々実装してる
WPF cardinal spline
ユーザーコントロールに新規スレッドを追加するとXAML編集のデザイナー画面でエラーが出てますどうしてですか?
メインウィンドウに配置してあるユーザーコントロールの中のスレッド.Start();の行をコメントアウトすると表示できるようになるんです
あとたまにユーザーコントロールが動いてすこしずつ幅が小さくなるんですこんなのプログラムしてないのにどういうことですか?
つオカルト板
>ユーザーコントロールに新規スレッドを追加
意味不明だからしんでくれ
ちゃんと説明できないなら、せめて「再現できる最小限のコード」を貼ればいい。
なるほどスレッドを止めるんではなくてスレッドの中の処理を再現しなくなるまで消してみます
指示を実行できないのなら二度と質問するな
お前の意見など求めていないんだ
うわぁ・・・
367 :
デフォルトの名無しさん:2011/04/30(土) 02:04:46.94
ListViewのカラムヘッダの高さを知りたいんですが何処を見たらいいのでしょうか?
>>364 public UserControl1() {
this.InitializeComponent();
new System.Threading.Thread(() => {
System.Threading.Thread.Sleep(2 * 1000);
MessageBox.Show("セクロス");
}).Start();
}
特にエラーは出ないな。問題が出なくなるまで削って機械的に原因を突き止めればいい。
しかしデザイナに貼り付けただけでサブスレッド生成する糞な設計は止めたほうがいい
確か、マウスカーソルの位置をポーリングして見張ってるんだよ
それ以前だわ
前任の開発者がオナニーぶち込むと大変だなっていういい例になってるよね
できることなんて大して変わらないのにこんな意味不明なもん
ロクに検討もしないぶち込んだ報いがこのザマかってほど
まったく知ってるヤツがいないし、人が集まらない(大爆笑)
これとAzuruは悲惨としかいいようがない
なんでこんなのの経験者がいると思ってるの?
開発者が集まらないまま納期が来ましたかwそうですかw(大爆笑)
プロジェクトのトップクラスになってるWindow1のクラス名をWindowに変更したらBlendで型変換できないというエラーが出て
デザイナが開かなくなりましたどうすれば直りますか?
元に戻す
直りました
ありがとうございます
375 :
デフォルトの名無しさん:2011/04/30(土) 21:42:49.29
エラーが出たとこも修正する
Blend 4で特にエラーは出ないな。
Blendはときどき意味不明なエラーでデザイナが壊れるぞ
だいたい再起動したら直るけど
>370
アンチ乙
デザイン時にもかかわらず、IsDesignModeがfalseになることがあるな。
これも再起動で治るけど。
直線とか四角とか丸とか描画できてテンプレートでその形にできるみたいだな
AvalonDockというドッキングウィンドウライブラリが神
高機能の割に軽いし安定してるしちゃんとXAMLやスタイル使えるしフリーでライセンスも緩い(New BSD)
さいですか
383 :
デフォルトの名無しさん:2011/05/03(火) 19:22:35.75
SharpDevelopみたいな定期的に例外吐いて落ちるの前提ならいいかも。
WPFを使ったソフトってどんなのがありますか?
Visual Studio
イメージブラシを回転させたいんだが、塗りつぶし先が正方形じゃないと
斜めに歪んだ感じになる。どうしたら斜めに歪まずに塗りつぶせるの?
<ImageBrush ImageSource="正方形.png" Stretch="None" TileMode="Tile"
ViewportUnits="Absolute" Viewport="0,0,50,50">
<ImageBrush.RelativeTransform>
<TransformGroup><RotateTransform CenterY="0.5" CenterX="0.5" Angle="30"/></TransformGroup>
</ImageBrush.RelativeTransform>
</ImageBrush>
>>386 イメージブラシを回転させるんじゃなく、たとえばrectangleに貼り付けるならそっちを回転するとかじゃないの?
388 :
386:2011/05/05(木) 02:03:30.24
>>387 いや違うんですよ。
貼り付け先をそのままで、塗りつぶしパターンだけ回転させたいのよ。
極太テキストの塗りつぶしパターンが変化していくようなアニメーションが
したかったんだ。
と思ったら「RelativeTransform」→「Transform」でできた。
XAML直編集なのでExpression Blendでいじれないぞ。
390 :
デフォルトの名無しさん:2011/05/05(木) 02:07:59.34
391 :
386:2011/05/05(木) 04:00:41.32
>>389 その辺の話。
だがExpression BlendがGUIで扱えるのはReletiveTransformのみのようで、
Transformが扱えず困っている。手書きでStoryboard作成とか死ねる。
どうでもいい質問かもしれないけど、
おまえらWPFをなんて発音してる?
だぶりゅ〜・ぴ〜・えふ
わふ〜(Pは発音しない)
WFと区別がつかないじゃない
396 :
デフォルトの名無しさん:2011/05/05(木) 12:50:07.00
WF・WCSは都市伝説
WCSはまだ残ってるんじゃない?
企業内のWebサービス(SOA笑)とかでひっそりと使われていたり
Azureでオンプレミスとの連携をするときとか
むしろWCFが都市伝説
WCF普通に使ってる俺は少数派だったのか…。
.NET完結でちょっとRPCする分には便利だけどな。
WCFなら鯖へ封じ込んで放置できるしなw
ぶっちゃけWinFxはどれも普及してないけどね
強いて言えばLINQぐらいかな
スレ違いですいません。
某アプリのラベルに書かれている数値を、自作アプリから取得して、音声で読み上げたいと思っています。
今回、ラベルのデータを取得しようとしたところ、WPFで書かれているアプリという事がわかりました。
GetWindowTextなどで指定しようにもハンドルが無くやり方が分かりません。
どのように指定して取得すればいいか教えて頂けると助かります。
PrintScreen→OCR
まずはSnoop
>>403 自作アプリに読み上げデータ公開インターフェースを作る。
もくはSDK付属のVisualプロファイラーを解析してみる
SharePoint開発するとWF使いまくりなんじゃなかったっけ。
Viewport3Dでコントロールのリサイズに対して、StretchのFillみたいに
表示範囲を保証する方法ってないですか?
FieldOfViewを設定すると水平画角が固定されますが、画面が横長に
なると上下が欠けます。
例えば「横縦比1:1で、水平画角30度」を指定するとコントロールが2:1に
横に伸びたときにカメラの水平画角が自動的に45度になるとうれしいです。
BeginStoryBoadだの使ったアニメーションは
依存プロパティを変化させるようなのしかできないのかね
rectangleのWidthとかColorとかを変化させるようなのしかできないのか?
bmpとかを連続で表示させるアニメーションはタイマーみたいなの使っていちいちやらんきゃだめ?
ObjectAnimationUsingKeyFrames でいいじゃん
別のソフトで動画作って貼り付ければOK。
412 :
408:2011/05/06(金) 19:23:38.15
>>408ですが、方法が見つからず、リサイズイベントでゴリゴリ計算して動きました。
var angleHalfHPrefered = (viewAnglePrefered / 2) * (3.1415926535 / 180);
var realDistanceZ = 1.0;
var realHalfHPrefered = realDistanceZ * Math.Tan(angleHalfHPrefered);
var realHalfVPrefered = realHalfHPrefered / xyRatioPrefered;
var realHalfH = realHalfVPrefered * (this.ActualWidth / this.ActualHeight);
var angleHalfH = Math.Atan2(realHalfH, realDistanceZ);
cam1.FieldOfView = (2 * angleHalfH) * (180 / 3.1415926535);
413 :
403:2011/05/07(土) 01:43:17.26
>>404 ありがとうございます。
その方法ですと、プリントスクリーンする毎に手前に表示しないといけない制限が出ると思います。
今回は見送らせてもらいます。
>>405 Snoopはインストールして実際に使ってみました。
ただ、その後画面上にあるテキストボックスやラベルなどにアクセスする為の関数とうが分からないのです。
もしご存知でしたら教えて頂けると嬉しいです。
414 :
403:2011/05/07(土) 01:51:34.94
>>406 プロファイラーは初耳でした。試してみます。
>自作アプリに読み上げデータ公開インターフェースを作る。
この部分が良く分からないのですが、、、何かアクセスするメソッドがあるのでしょうか?
関数名で教えて頂けると助かります。
>>413 Snoopはグローバルフックを経由して対象のプロセスにdllを注入してるんだよ。
入り込んだ後は通常のWPFの操作のみでVisualTreeHelperで辿っていくだけ。
従来のWindowはないのでハンドルを取得してGetWindowTextなどのような手順では無理。
というか対象のアプリは何なんだよ?
逆コンパイルして目的のところにイベントハンドラ追加するのが簡単そうやね
依存関係プロパティーについて勉強中です。教えてください。
MSDNには以下のようなサンプルコードが書いてありますが、
★の位置にOnCurrentReadingChangedが無いと、バインディング経由でなく
プロパティーを直接変更された時に困る気がするのですが、間違っているでしょうか?
public static readonly DependencyProperty CurrentReadingProperty = DependencyProperty.Register(
"CurrentReading", typeof(double), typeof(Gauge),
new PropertyMetadata(Double.NaN, OnCurrentReadingChanged));
public double CurrentReading {
get { return (double)GetValue(CurrentReadingProperty); }
set { SetValue(CurrentReadingProperty, value); ★}
}
SetValueの中でOnCurrentReadingChanged呼び出されてるから気にしなくてよい
つかそれぐらいは試せばすぐ分かることだろう
グラフィックチップがオンボードの低スペックマシンだと、コントロールの描画が更新されないことがあるけど、これってFA?
は?
>>419 スペックの問題でなくどちらかと言うとドライバのバグだよ。
描画されないくらい普通に起きるよ。もっと酷いドライバだと起動もしなかったりする。
とりあえずドライバ更新してダメならソフトウェアレンダリングにするしかない。
PCゲームとかだと環境依存の描画トラブルなんて全く珍しくないな
今時ブラウザの描画もGPUに移行しつつあるくらいだしどんどんそういうの増えるよ
再現コード晒さずにいわれても困るしそれでフィナンシャルプランナーとかそっちだって信じないだろ
気休めにもなってねぇ
そういや古いマシンでWPFアプリ動かしたら落ちたケースがあった。
でもグラボのドライバ更新したら正常に動作した事例があったな。
WPFの次はやく来い
wpfですら使いこなせないのに次なんてどうするんだ
WPF と Forms のいいとこどりした奴できればいいんじゃない?
formsのいいとこって?
Formsでできること、WPFでもできるだろ。
新しく覚えなくても使えること
WPFでできること、一つづつかなえたい。
432 :
デフォルトの名無しさん:2011/05/17(火) 19:17:18.00
>>429 ListViewやTreeViewのラベル編集が出来ない
>>430 それ、どうやってWPFとFormsを合わせた新しいもので実現するんだよ。
>>432 えっ、そんなのデータテンプレートでなんとでもなるじゃん。
>>433 データテンプレートなんて無学には分からない
プロパティをTrueにする位のことが関の山
でもそれ、知ってるからやれるの類だと思うなぁ。
True/Falseの設定で何が変わるかとか、普通わからんというか、
何から何までOn/Offできるわけじゃないじゃない、細かいカスタマイズを。
じゃあ言い方を変えるよ
IsEditableのプロパティがないと駄目
後から好きなように差し替えてカスタマイズできるのに、特定のシナリオ向けの機能を組み込んじゃうのってダサイ
ListViewのセル編集なんてMSDNのサンプルコードをコピペするだけじゃん。無学でもコピペくらいできるだろ?
うん、それはどう考えても「悪いところどり」w
439 :
デフォルトの名無しさん:2011/05/17(火) 20:42:40.58
>>437 WinFormのラベル編集はセルの幅超えてTextBoxが出てくる
データテンプレートだけじゃ絶対出来ないよ
無学はプロパティをTrueにする位しかできないと言ってるだろ
コピペも無理
フォームズのいいとこ。
ザムルが不要ですw
カスタマイズめんどいから特化したコントロールを億万個用意してくれればいいのさ
>>440 いや、プロパティをTrueに変えるってさ、アプローチが「そういうプロパティがあった」じゃない。
「何がしたい」ってアプローチではたどり着けないよ、ラベル編集にTrue/False。
>>441 いやいや、WPFでもXAML書かないでいいよ?
>>442 正直、そのアプローチだとWPFの方が有利よ。
XAML書き直せば特化したUIにできるんだし。
445 :
デフォルトの名無しさん:2011/05/17(火) 22:55:24.96
>>444 つ「データテンプレートだけ」
実はそれ使わせて貰っているんだが、右クリックメニューが上手く出せなくて悩んでいる
貼り付けとかコピーやりたいんだよね
446 :
デフォルトの名無しさん:2011/05/18(水) 00:27:38.09
Windows 7 のタスクバーのような外見のボタンを作りたいんですが、
参考になりそうな XAML 置いてあるサイトあったら教えてください。
codeprojectかどっかで見かけた気がするなぁ
真似するだけだから結局自分でフルスクラッチだけどね
MSChartをもうちょっと洗練してWPFに持ってきてくれ
Microsoft Chart Controls for Microsoft .NET Framework 3.5 + WindowsFormsHost使ってろ
WPFネイティブのチャートの方はカスだけど別にそんなとこWPFでなくてもいいだろ
>>449 いまんところそうしてる
まぁ気分の問題というかWindowsFormsHostをラッピングして使うのもなんかダルいし……
あとMSChartの現バージョンは4だぜ
proなんとか2冊買ったけどこんな厚い本が30ドルくらいで買えるんだからそりゃ差もつくわな
UserControlの中にUserControlを作ったら親のUserControlのMouseMoveが子UserControlの上でだけ呼ばれません
どうすればいいですか
PreviewMouseMove使うとか。
駄目でした
激しくマウスを動かすとたまに呼ばれます
クリック等のイベントも連打するとたまに呼ばれます
ビルドクリーン、再起動しても変わりません
Window>grid>grid>grid>UserControl<MouseMove>>grid>grid>viewBox>StackPanel>StackPanel>UserControl<MouseMove>>grid>label
イベントは<MouseMove>2つだけですこの2つを同時に起動させられませんか
mouse.mousemoveで捕まえればええんちゃうの
意味が全くわかりませんどういうことですか
この症状でひと月悩んでます
あと11ヶ月悩んだら解決法を教えてやろう
ひと月悩んでることをタダで解決してもらおうなんて虫が良すぎると思わないかね
つまりみんな分からないってことだ
ああ、あのCallMethodActionを異常に嫌ってた人か
>コマンドは「メソッド」の公開ではなく、まさに「操作」の公開なのです。
とか意味不明すぎるんだが
>>460 そこの記事については
BlendがせめてFlash並の機能になってから寝言ほざけwwww
て感想しか出なかったな
今の糞環境でデザイナ分離とかガンダーラより遠いわそんな理想郷
Command使わずにメソッド使ったらMVVMじゃないとか極端すぎるわ
Java信者のデリゲート批判と同じにしか見えない
CanExecuteなんてそんなに必要ないし必要なときはプロパティ足せばいいだけだろ
原理主義とか教条主義ってそんなもの
Commandの使いどころがてんでわからんのよね。
CallMethodActionで事足りることばかりだから。
DelegateCommand使っといてコマンドはメソッドより粒度が…とか意味分からん
そういうこと言うんだったらDelegateCommandなんて使わずに
コマンドパターンとして操作別にICommand実装するべきだと思うが
直接バインドするならDelegate〜でいいけどCommandBindingしようとするとナ〜
468 :
デフォルトの名無しさん:2011/05/20(金) 20:00:03.14
WPFって確かに見た目だけはテンプレート使ったり組み合わせや入れ子でリッチに
できるけど、出来上がった複合コントロールの振る舞いの制御まで考えると結局
ゴリゴリ書かないとダメだよね。例えばWPFの開発当初はコンボボックスって
リストボックスと何かの組み合わせで作ろうとしたけどの組み合わせで作ろうとした
みたいだけど挫折してるし。
最後の方日本語でおk
いや実際にComboBoxのテンプレートはこういう構造なんだけど
TextBox
ToggleButton
Popup
-ScrollViewer
--StackPanel
---(Items)
なんぞこれw
<ContentControl Focusable="False" Content="{Binding .}"/>
Focusable=Falseなのに、なんかフォーカスをとっちゃうなぁ、と思ったら
ContentControlが子要素としてContentControlをいつの間にか作ってそれがFocusalbeになっていたw
もっててよかったsnoop
そりゃ君、canvasのbackgroundに何か色付けてみたら一発で理由がわかるよ
WPF筋はいいんだけど。もう少し簡単にならんと
直感的でないからやりたい事を実現するまでに時間がかかる
>>474 なるほど、CanvasはListBoxと同サイズになっているわけですね。
CanvasのHeightを明示的にListBoxのHeightより大きな値を設定してあげると
ScrollViewerが表示されました。
479 :
デフォルトの名無しさん:2011/05/23(月) 08:08:21.42
それは知ってますw
ただの独り言ですw
WPFで作られた有名ソフトある?
snoop以外で。
ヴィジュアルスタディオ
エクスプレッション
Catalyst Control Center
なにこの絶望的な開発環境
WPFって遅くない?
すぐ動作が重くなるんだけど最後まで作って行って大丈夫なのかなこれ
大丈夫じゃないと思うけど
やめたら楽になると思う
代わりになるようなフレームワークってないんだよなあ
XAMLって最初かならずGridがあるから一番軽いのかと思ったらCanvasに比べてはるかに重いとか書いてあるんだけど
もしかして全部Canvasに入れ替えた方が良かったのかな
コントロールの入れ子関係一度崩すと設定してあるイベント全部消えるんだけどこれ仕様?
>Gridがあるから一番軽いのかと思ったらCanvasに比べてはるかに重い
比べたことはないけどまあGridはカラムとかあると比率計算とかしないと
いけないがCanvasそのものはそんな計算しないしな
たんなる入れ物ならCanvasでもいいきがする
>コントロールの入れ子関係一度崩す
よくわからんがXAMLひらいて直接GridをCanvasと文字を書き換えればいいんでないの?
さわり始めでしょーもないところで行き詰まったりするけど
GUIレイアウトの自由度があっていいな。
ちょっとマイブームになりそうでござる。
>>491 snoopで覗けば標準コントロールがパネル使いまくってるから1つや2つはいまさらって気がしてくるけどね
ちょっとしたことをやりたいだけで大規模な開発じゃなかったらWindows Formのほうがいい
企業がまともなアプリケーション開発するんだったらWPFのほうがいい
Gridが重いといってもレイアウトの計算にCanvasよりも時間がかかるだけだぞ
その際の最描画に比べたらカスみたいなもん
>>495 >大規模な開発じゃなかったらWindows Formのほうがいい
why?
大規模だろうと小規模だろうと、Windows FormsのWPFに対するメリットなど
塵ほども無いと思うのだが。
498 :
デフォルトの名無しさん:2011/05/24(火) 01:03:34.89
小さいツール作ったときに、あまりにもListViewとDataGridが遅くて
WindowsFormsHost+DataGridView使った
はっきり言ってWPFだけじゃまず使い物にならんけど割りきっていいとこ取りすればいいと思うよ
どうせいらんイベント拾ってCPU負荷かけまくってるんだろ
縦サイズを指定せず、画面外まで大きくはみ出してレコード全部表示してるとか
>>491 レイアウトの計算が重いんだよ。
Gridで自動サイズで自動レイアウトにしてネストさせていくと
ちょっとしたレイアウトのズレでかなり繰り返し走るようになるのでどんどん重くなる。
503 :
499:2011/05/24(火) 01:28:59.62
そりゃ手間かけて工夫すれば速くなるのかもしれないけどさ
適当でいいときもあるじゃん
だいたいデータグリッド一枚貼って終わりなんて最低のUIデザインでしょ
そんなんでいいんだったらわざわざWPF使わなくてもいいと思うわ
504 :
デフォルトの名無しさん:2011/05/24(火) 07:22:13.36
みなさんなどんな本でWPFを勉強してるんですか?
いい本がなかなか見つからない・・・
エッセンシャルWPF
定期的に出てくる質問なのでテンプレにいれた方がいいかもしれない
入門編(次のうちいずれかひとつ)
Pro WPF in C.Sharp 2008 2nd Edition [APRESS]<-個人的にオススメ
Essential WPF
Programming WPF [O'REILLY]
Windows Presentation Foundation Unleashed [SAMS]
発展編(必要に応じて読む)
Practical WPF Graphics Programming(グラフィックまわり特に3D関連のWPF使用法を習得したければ)
The Composite Application Guidance for WPF(複数チームで同時開発したければ)
Advanced MVVM(MVVMパターンを徹底研究したければ)
日本語版に関してはEssential WPFが出ているのは知っているが
あとは知らん。英語版に関してはすべてネットに転がっている。
転がってるって割れ本じゃん
いいけどさ
TreeViewでヘッダーがコントロール枠内に収まらないアイテムを選択すると右に自動的にスクロールするのは停止できない?
いらいらしてきた
510 :
504:2011/05/25(水) 01:47:26.71
>>497 Windows.Formsはイベント処理中のスタックトレースがほぼ確実に繋がっている。
それ比べてWPFのスタックトレースは連続しないケースが多くて
イベント処理中の何処かで落ちても直接の原因の呼び出しがスタックトレースに入ってない。
Bindingがその原因特定をやたらと複雑にする。
このあたりで開発効率に結構差が出ると思う。
>>499 仮想化が有効になってないんじゃないか?
WPFはデフォルトで仮想化が有効になってないものや特定の機能を使うと仮想化が無効になったりとかがだいぶいけてない。
バインディングで落とすとか何事だよ
どういう使い方をしているんだろうか。
Bind周りで追求に手間取ったのは、ViewのコードビハインドとBindが
連携した部分(フォーカス制御)ぐらいしかないなぁ
バインド周りと言えば、昨日CalendarのDataContextが設定されてると
DisplayMode="Year"で横幅が2000px前後になる不具合で2時間ぐらい潰されたわ
TextBoxを複数行可能にしてるんですが
中身のテキストに配列でバインドできる方法ってないんですかね?
GetLineTextを使わずに特定の行が欲しかったら、Textを改行で分割して取るしかないのかな・・・。
困ったときはvalueConverter
>>516 なるほど
IValueConverterを使って変換かければ配列でバインドできると
ありがとう
やってみます
518 :
デフォルトの名無しさん:2011/05/27(金) 03:30:42.78
ValueConverterは複数の変数使えると良いんだけどね
全然出来ない訳じゃないけど依存関係プロバティーとかめんどい
困ったときはmultiBinding
MultiBindingは中にMultiBindingを持てない、気の利かない子
ListViewにあるListViewItemの中のコントロールのイベントからコントロールからたどって
ListViewにバインドしてあるListViewItemの他のコントロールにバインドしてある値をとるにはどうすればいいでしょうか?
<ListView name="View">
<textBlock Binding = { title } / >
<TextBox Binding = { name } KeyDown="kd"/>
</ListView>
class ListBox
{
string title;
string name;
}
ObservableCollection<ListBox> ItemCollection = new ObservableCollection<ListBox>();
ListView.Souce = ItemCollection;
void KeyDown(object sender, KeyEventArgs e)
{
if(e.Key == key.enter)
{
string str = ((ListBox)((TextBox)sender).Parent).title; //ここでParentがnullになるがこんな感じでたどりたい
string str = ((ListBox)View.SelectItem).title; //テキストボックスがアクティブの時はViewのSelectItemがnullになる
}
}
そのコードではコンパイル不能すぎて何を言わんとしているかさっぱり分からない。
ただ、Parentは論理的な親だから必ずいるとは限らない。
VisualTreeHeplerを使えば確実に取れるからそっちを検討すればおkだと思う。
そもそもコードビハインドで頑張らなきゃいかん処理か検討すべき。
Viewでなきゃできない処理もあるが、ViewModelで処理できるのであればそれも手だろう。
困ったときはルーティングイベント
>>521 Binding してるインスタンスを取得したいだけなら、
わざわざ辿らなくてもコントロールの DataContext から取れると思うけど。
そういうことじゃなくて?
質問.
Buttonが2つあって,それぞれのClickイベントを,ProgressBarに対するアニメーションの
開始(BeginStoryboard)と停止(StopStoryboard)のトリガにしたい.
// XAML中にイベントトリガやストーリーボードを記述する方法で.
<Grid>
<Grid.Triggers>
<EventTrigger Source="buttonBegin" 〜 />
<EventTrigger Source="buttonStop" 〜 />
</Grid.Triggers>
<Button Name="buttonBegin" 〜 />
<Button Name="buttonStop" 〜 />
<ProgressBar 〜 />
</Grid>
だと機能する.
でも,
<Grid>
<Button Name="buttonBegin">
<Button.EventTriggers 〜 />
</Button>
<Button Name="buttonStop">
<Button.EventTriggers 〜 />
</Button>
<ProgressBar 〜 />
</Grid>
だと,Stop側が機能しない.
StopStoryboardからBeginStoryboardを参照できていないのか?とも考えたが,
BeginStoryboardNameプロパティに変な値を入れると例外が発生するので,そうでもないようだ.
どういうこと?
>>524 やっとできましたありがとうごいました
( (ListBox)( (TextBox)sender ).DataContext ).title;
WPFでXNAを使うにはどうすればいいですか?
public GamePadState padState;
参照に追加したのにエラーが出ます
528 :
デフォルトの名無しさん:2011/06/01(水) 02:48:26.92
>>528 書いてある通りにやったんですが、
アセンブリ 'XNAOnWPF, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' で
定義された 'GraphicsDeviceControl' のインスタンスを作成できません。
呼び出しのターゲットが例外をスローしました。
マークアップ ファイル 'XNAOnWPF;component/window1.xaml' 行 11 位置 14 のオブジェクト
'windowsFormsHostXNA' にエラーがあります。
というエラーが出ます。
サンプルEXEは動くんですが、サンプルプロジェクトをビルドすると同じエラーが出ます
XNASDKは3.0、3.1、4.0の3つ入っていて3.0で試しました、原因は何でしょうか
うちでも再現したな
ちなみにOSは64bitじゃない?
IDEの中央上にあるAnyCPUをx86に変えてビルドしなおせば
サンプルもうごくよ
たぶん
>>528のサイトのサンプルはAnyCPUでビルドしてそうなので
64bitOS上だと動かないはず
おっと動いた環境
windows7評価版64bit
VC#2008 Express + XNAGS3.0
IDEの設定
ソリューションプラットフォーム AnyCPU->x86
532 :
デフォルトの名無しさん:2011/06/01(水) 19:44:23.94
この問題はどこでも付きまとうな
>>533 IEコア使う場合も気をつけないとひっかかるよね
ラジコ関連の簡易アプリ作った時に引っかかったわ
おーできましたありがとうございました!
>>532 ドキュメントぐらい読め。exeはx86、dllはAnyCPU
dllがAnyCPUでも64からは呼べなくない?
ドキュメント読めこのDQN
ドキュンメントまで読んだ
>>537 呼べる和ボケ。そのためのAnyCPUなんだから呼べなかったら不具合。
MSDNサブスクリプションで文句言って直してもらえばいい。
Metro UIの開発者を増やすためにHTML5とJSを採用するのは当然だな。
どうしてWPFやSLの話をしないといけないんだ?
ARM版Office(Word)のデモのように、Metro UIからWPFやSLが起動するようになるだけだろ。
Metro UI上ではWPFとSLどっちがメインなんだろうか。
というより、WPFとSLはもう統一しちゃってもいいだろ。
JSかよ...
まあ、これでVSでのJSサポートが手厚くなると考えれば、
悪い話ばかりでもないか
Windows7とWindowsPhone7をひとつにまとめたいのかな。
スマホとかにフルスペックのOS要らんと思うけど
HTMLとCSSなんて無くなって、全部XAMLになれば良いのに!
ザムルだと流行ったと思う
ザメルって知った時終わるとは思った風水的に
?…ザムルだろ?
俺はイマイチ馴染めなくて、脳内発音はエクスエイエムエルだが
>HTML置き替え
LooseXAMLェ…
ExAML(エグザムル)とかでも良かったなw
口に出すことはないが個人的にはィグザムルと読んでる
LooseXAML → るーざむる
Silverlight → しるばら
しるどらをおもいだすからやめろ
俺は今、しょーもない事に気付いてしまった気がする
Loo seX AML
やはり天才か
XANALでなくてよかった
LooseXAML、初回レンダリング遅過ぎるのがな…
>>547-548 英語で「xamlは zamel と読め」って書かれてるんだけど、
英語だとアクセントないところの el の e は消えるからザムルで正解。
日本だと、MS 日本法人の人もザムルって読んでるはず。
じゃあ流行るね棒
ザメルじゃないのか
なんかすげーうれしい
やる気出てきた
MSのトレーニングビデオでザメルって言ってたけどな。
たぶん人によるだろ。
無難にムとメの間で発音すりゃいいじゃん
ザメェル
辞書に載ってる単語を出鱈目な発音してる奴も多いのに、MS語の読み方なんて誰も気にしてないよ
まあ、話してて通じれば何でも良いわな
HTML5について
俺「エイチティーエムエルファイブ」
同僚「エイチティーエムエルご」
Firefoxについて
俺「Fx」
同僚「FF」
どうでも良いんだ…畜生…!
おまえみたいなやつ嫌いだぜ
周りに影響されやすく中身スカスカの人間
xap → ざっぷ の方がよほど慣れない
xapはzip
xlsxもzip
これお豆な.
you zapped to...
ザップって言われてドルアーガ思い出すのはおっさん。
まだ16進10代なのになァ…
64進なら
Base64で10代?
10代だな (mod 20)
CAML でも YAML でも、最後に ML がつくのは、Camel のように発音する。
m-el ム-エル が音便によってメルになる感じ。
SQL をシーケルというのも、シーク-エル の音便。
なんだけど、実際は Camel にしたって全然メルじゃない。
俺程度の耳には XAML はザモーだし Camel はキャモーに聞こえる。
発音を知りたい単語 と pronunciation で検索すると、まあまあの確率で録音がでてくるので、調べたければ覚えておくと便利。
便利、まで読んだ
えらいっ!
もう
エックスエーエムエル
でええやないか
XAMLは"らめぇ"でCamelは"くるぅ"、これで決定。
異人にも案外通じるはず
>読み方
Googleの作ったWebPよりはマシだよ。多分。
>>571 俺はパラノイアを思い出した。ZAP!ZAP!ZAP!
コンピュータ様の開発マダー?
583 :
デフォルトの名無しさん:2011/06/04(土) 06:44:51.69
じゃあXNA=んあー
この投げやりな流れ
一体何があったんだ
Ellipseの位置はどうやって決めればいんですか?
縦横幅はありますが、Top、Leftまたは中心点のプロパティが見つかりません
Canvas内に置くならCanvas.Topで指定。
それ以外なら、HorizontalAlignmentとMargin。
588 :
デフォルトの名無しさん:2011/06/05(日) 00:29:53.47
>>586 winformとは座標の指定の仕方が違う
XAML
<Ellipse Canvas.Top="0" Canvas.Left="0" />
コード
Ellipse ellipse1 = new Ellipse();
Canvas.SetTop(button1, 0);
Canvas.SetLeft(button1, 0);
ありがとうです
>Canvas.SetTop(button1, 0);
コピペミスだろうけど、Canvasにボタン貼り付けるのはちょっと・・・
591 :
デフォルトの名無しさん:2011/06/05(日) 00:38:14.90
たとえばですが黒い文字を縁取りではなくバックを文字にあわせて
白く塗ったような感じにするにはどうすればいいんだろう
1)パス変換して太い線でなぞる
2)カスタムシェーダーを書く
同じ位置に二つのテキストを表示しておいて後ろの方をBitmapEffectでボヤかすとか。
やったことないけどなw。
596 :
デフォルトの名無しさん:2011/06/07(火) 05:32:18.94
後ろに半透明なグラデーションブラシ設定してお茶濁してた。
>>592 縁取り色と背景色が同じ、という以外には見えないんだけど。
Blend無料配布してくれ
Blendなど要らんという態度じゃないと無料にはならんだろうな
いらねえよ、ペッ
ハァハァ
こんなもんタダなら使いたくて要らねーんだよ
VSだけで十分だろ
Blendなんてタダじゃなきゃ誰も使わないよ!
使ってる人がいっぱいいるんだな
BlendなしでXAMLで円を描くとか四角を書くみたいなことは楽にできても
直線をたくさん組み合わせたような複雑なのやインパクトのあるアニメーションとか実質無理みたいなもんだし。できることはできるけどややこしすぎて。
駄目だ駄目だ駄目だ
弱気になるんじゃない
大半はBlendなしでもなんとでもなるんだけど、
テンプレート(特にVSM利用)とアニメーションだけはどうにもなんない。
Blend、WP7開発用なら無料なんだけどね。
一般のBlendにもExpress版がないとちょっと人には進めにくい…
607 :
デフォルトの名無しさん:2011/06/09(木) 19:04:49.40
Blend2は安かったから買ったんだけどね
アップグレード版がVSスタンダード込みで二万以下とか
趣味でBlend&Designに4万出すのは辛い
まともなペイントソフトもついてれば買ってもいいんだが
でも代わりになるものがないから買うしかないんでしょう?
買うなよう〜
じゃあ放送大学+DreamSparkとか
MVVM的にはフォーカスのセットってどうすりゃええのん?
例えばアイテムを新規追加したらそこにフォーカス当てたいんだけど、ビュー側じゃどのアイテムが新規なのか判断つかないしModelView側じゃアイテムに対するコントロールを判断できないじゃん?
コードビハインド使えよ
アイテムが追加されたときにVMがイベントを発生させて、それをViewのコードビハインドで受ければよくね
コレクションのCollectionChangedイベントでもいいし、自分で定義してもいい
追加されたアイテムはイベント引数から取得できる
一応VMでやる方法もある
CollectionViewSource.GetDefaultView(VMのコレクション).MoveCurrentTo(項目)
でも複雑な制御はできないしMVVM的に微妙…
Behaviorで、AssociatedObjectのデータコンテキストがINotifyCollectionChangedだと仮定して、
CollectionChangedイベントを拾ってFocusするとか。
Tabキーで移動する先がどこになるか調べるメソッドとかないですか?
そもそもおまえらMVVMの目的と手段を取り違えてるよ
チーム開発するためのシステムであって
原則も考えず「ビューは○○じゃないといけないから〜」とかデメリットしか取ってないじゃん
思想や宗教染みて来るんだよな、こういうのって
MVVM教原理主義者、的な
導入した結果として実装効率やら保守性やら下がっちゃ、何の意味もねーだろってのにな
619 :
デフォルトの名無しさん:2011/06/10(金) 08:00:59.17
Object指向はコード量が増えるからクソ
昔々、声高にそう叫んでいた一派もいた。
無理に適用するのはアホだが、本質を考えないのもアホ。適材適所だろ。
しっくりの悪口はやめろ
本質とか考えずに「使うな」「使え」と単純化させたほうが初心者にはわかりやすいからね。
なんでかよくわからないけど、ある程度熟練した人たちがこうすればいいって言ってるんだからやろーかー
みたいな。
入り口はそれでいいけど、一段上に上がるにはそれじゃ駄目だ
そういう人って根拠を求められたことってないんだろうか?
623 :
612:2011/06/10(金) 15:15:04.36
レスくれた人たちありがとう
実装方法にこだわるつもりはないんだけど一貫性てのは重要視してるもんで、こんなときにはこうするって指針があれば参考にしたかったんだ
Blendは子持ちの人はアカデミック買おうぜ
幼稚園児も学生なんだぜ
教えていただけると幸いです。WPF の初心者です。
以下のようなことをする場合、WPF 的にはどうするのがきれいでしょう?
・TabControl を乗せた a.xaml を作成する
・上の TabControl 上のコントロール?を記述した b.xaml を作成する
・b.xaml では特定の部品の情報を表示し、タブでは仕入れ先を切り替え、すべてのタブで同じ項目を表示する
・b.xaml では GridData で囲ってコントロールを配置する
・b.xaml では GridData.SelectedItem を参照して表示するためのデータを得る
この場合、a.xaml でタブページを切り替えるたびに b.xaml の GridData.SelectedItem を
更新する必要があるのだけど、どうやったらいいのか悩んでいます。
ぱっと思いつくのは a.xaml の TabControl の SelectedIndexChanged イベントや、ビヘイビア?を使って
イベントハンドラを呼び出してそのハンドラ内で切り替え処理を実施するってやり方ですが、
よく考えたら a.xaml から b.xaml 内のコントロールを触るやり方がわからなくて。
そもそもそのやり方が WPF に馴染むのかも判断できず。アドバイスをお願いします。
そのb、ユーザーコントロールの方がaからの命令を受け取るように作るんだよ
だって、bの内部構造が変わった途端aまで動かないとかそんなコード許せないでしょ?
TabControlはTabItemのコレクション持っているのだから
TabItemのDataContextがユーザーコントロールのDataContextになるようにXAMLとモデルを構成すればいいだけ
つーか質問するならXAMLを書いて貼って欲しい
分かってない人に漠然と説明されるより100万倍分かりやすい
GridDataなんて聞いたことないのだが
>・b.xaml では GridData で囲ってコントロールを配置する
多分これはGridクラスで、
>・b.xaml では GridData.SelectedItem を参照して表示するためのデータを得る
多分これはDataGridクラスだと思う。
WPFer的にはQt Quickってどうなん?
アニメーションや状態遷移など、XAMLっぽく書けるし無料でBlendのようなツールも付いてくる。
できたアプリはクロスプラットフォーム。となかなかよさそうなもんだが。
formsがおわコンでMS的にこれからはWPFで作れって言う流れだからWPFやってるだけだし
たぶんこういうこったろ
<Window x:Class="TabTest.MainWindow"
xmlns="
http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="
http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:m="clr-namespace:TabTest"
Title="MainWindow" Height="350" Width="680">
<Window.Resources>
<m:MainWindowViewModel x:Key="model" />
</Window.Resources>
<Window.DataContext>
<StaticResourceExtension ResourceKey="model" />
</Window.DataContext>
<Grid>
<TabControl ItemsSource="{Binding Drives}">
<TabControl.ContentTemplate>
<DataTemplate>
<m:TabContent />
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
</Grid>
</Window>
続きます
ド低脳すぎてついて行けません
どうしたらいいですか
ContextMenuのMenuItemのCommandParameterに{Binding ElementName=xxx, Path=yyy}として
メニューを選択しても、よばれたCommandのパラメータがnullになってしまうのですが、どうしたらよろしいのでしょう。
ButtonのCommandParameterなら値が渡ります。
多分ContextMenuからだとElementNameで検索するスコープが違うから指定の要素が見つかってない。
637 :
624:2011/06/11(土) 14:56:33.92
ありがとう。
言葉が不足&変でしたが、だいたい
>>632,633 みたいな感じでした。
もうちょっとお勉強してきます。
>>625 その通りなんですが、どうやるのかがわからなかったんです。
>>626 どうすればいいのかなーってところで蹴躓いてました。
お勉強してきます。
コントロールテンプレート保守
WPF を利用して印刷やってます。
XAML の中に <IMAGE> タグでローカルファイルを張ってます。
Visual オブジェクトを得るために途中で XmlReader.Load を実行すると、先のローカルファイルにロックがかかります。
かかるのはいいんだけど、処理が終わった後もプログラム自体を終了するまで、そのままとなってます。
XmlReader.Load の出力のオブジェクトには Dispose もないみたいだし、解放するにはどうすればいいんでしょうか。
>>639 派生クラス作ってコンストラクタで10MBくらい確保してタスクマネージャーで追えばわかるだろ
>>641 タスクマネージャを使うぐらいならWinDbgとかsosとかもっと高精度な手はある。
ただ、PropertyDescriptorからの参照とか、他の部品のRenderからの参照(キャッシュ?)とか、
いつインスタンスが消えるのが正しいのか分からない場合も多々ある。
リークしてるか調べたいんじゃないのかよ
>>640 image.SourceのBindingに
CacheOption.OnLoadなBitmapImageを返すConverterを設定
>>644 thx
まだよく意味がわかってないけど、週明けに確認してくる。
>>646 void Label_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
System.Diagnostics.Process.Start(((Label)sender).Content.ToString());
}
648 :
デフォルトの名無しさん:2011/06/18(土) 23:57:04.90
ResizeGripの使い方がよくわからないんですけど
これはつまり何ができるものでどう組み込めばいいの?
<Grid>
<ResizeGrip />
</Grid>
ってやるとグリッドの右下隅になんか表示はされるんだけどこれでグリッドをリサイズできるもんでもないみたい
649 :
648:2011/06/19(日) 01:35:48.15
解決
thumbに適用するテンプレートだったんですね
失礼しました
先週、Image タグについて質問した者です。
基本的なことで申し訳ないのですが、もう一点教えてください。
たとえば以下のような XAML から Medi.Visual のオブジェクトを作ります。
<Grid Name="grid01">
<Grid Name="grid02">
<TextBlock Name="textblock01" Text="Test"/>
</Grid>
</Grid>
この TextBlock "textblock01" の Text の設定値を 先の Visual オブジェクトから
変更することは出来るでしょうか。
この例では、Visual オブジェクトを作成する XmlReader.Load() で得られるのは
"grid01" の Grid オブジェクトなのですが、その子ノードにアクセスする手段がわからないのです。
> 先の Visual オブジェクトから変更する
ってのがよく分からんが、要はFindName?
ありがとうございます。
>>651 はい。何らかの手段で Visual の階層的にしたにあるオブジェクト
(この場合は System.Windows.Controls.Textlock )を取得したかったのです。
FindName で出来そうです。
いまは頭がもう寝てるので明日確認してみます。
おかしいなぁ。本当に穴が開くほどヘルプを見てたはずなんだけど。。。
なんで気づかないかなぁ。。。
なんでそんな保守性の悪いコードを書こうとするのか
ただの実験ならいいけど
655 :
650:2011/06/21(火) 22:08:53.68
FindName で問題なくできました。ありがとう。
>>654 だってその条件でやれってことなんだもん。
2010でAPICodePackでグラスウィンドウ使ってるんだけど、PDBの出力なしにしてビルドするとエラーになる。
GlassWindow.csの
HwndSource.FromHwnd(windowHandle).CompositionTarget.BackgroundColor = System.Windows.Media.Colors.Transparent;
という行で「ArgumentExceptionはユーザーコードによってハンドルされませんでした。ゼロの Hwnd は無効です。」というエラーが出る。
しかし、このまま続行すると普通に起動、使用はできる。
SourceInitialized前に呼び出すとウインドウハンドル取得できず例外が買える
あとはわかるな
> Rectangle Fill="Azure"
Styleのトリガの設定よりプロパティの設定の方が優先される
MSDNの「依存関係プロパティの概要」
トリガで変えるのならStyleのSetterでデフォルト設定しとく
>>659 無事に動作しました。ありがとうございます!
TriggerはWPFの重要な要素だと思うのですがいまいち情報が少ない気がします。
助かりました。
>>660 まあ、Trigger、ひょっとしたら過去の遺物になるかもしれないし。
VisualStateManager と Behaivior の方が将来性ありつつ、
それはもっと情報少ないけども…
みなさんがお使いのレポート作成ツールを教えてください。
よろしくお願いします。
どこの誤爆ですか
そりゃトリガもVSMも本来人間が触るもんじゃないし
VSMの方がよりデザインツールに向いてるからVSMにシフトしつつあるだけ
となると、やっぱ足りてないのはBlend前提の記事と、
Blend の Express 版提供よなぁ。
無料版は特に必要ないや
DelphiやC#が無料で配布されたせいで、いろいろ問題起こってる
Delphiも消えたし
選民か
WPF用Blendの無料版が出るとは思えないが、
WP7専用のBlendなら無料版も出るかもな
C#の無料版が.NET開発者を増やしたのと同じように
WP7の開発者を増やすという目的があるし
>>668 WP7 版ってすでに無料じゃなかったっけ?
依存関係プロパティに{Binding Mode=OneWayToSource}をセットすると、
コンストラクタでセットした値が初期値に戻ってしまうのですが、
戻らないようにするにはどうすれば良いのでしょうか?
下記URLのソースのようにするとマウス左ボタンクリックでpageではなくhogeが表示されてしまいます。
http://ideone.com/v0UWZ Loaded でセットすればpageと表示されるのですが・・・
素直に StackPanelEx の OnInitialized や Loaded でセットするんじゃダメなの?
Binding 時に古い値は初期値(やソースの値)で上書きされるよ。セットするなら、Binding 後じゃないと。
そういう仕様なんですね。
TypeがObservableCollection とかクラスだったりすると同じインスタンスを共有しちゃうのでコンストラクタで初期値セットするじゃないですか。
それにならいたかったんですが素直にLoadedでセットすることにします。
ありがとうございました。
Rubyバカにしてる子ってさ
変数に$ついてる言語触ってるって事だよね
いちいちSHIFT+4キーおして $ 打ちまくってる感触はどう?
はい次
どこの誤爆ッスか
通報済み
DocumentViewer について教えてください。
これで簡単な印刷プレビュー画面をそのまんま作ったのですが、
プログラムから、「画面全体に表示」とかを指定することは出来ないのでしょうか。
コントロール自体にそれ用のボタンがあるくらいなので出来るんだろうとは思ったのですが、
ヘルプを見た限りではそれっぽいプロパティなどを見つけることが出来ませんでした。
ご教示いただければ幸いです。
677 :
デフォルトの名無しさん:2011/07/08(金) 02:40:40.01
品切れでもそのうち入荷するよ
まあ紙じゃなくてもいいならぐーぐるを英語モードにしてぐぐればタダだけどね
>>678 60秒待ったら落ちてきたサンクス!!(・∀・)
680 :
デフォルトの名無しさん:2011/07/10(日) 23:42:11.73
VS2010のWPFのDataGridってHitTestInfo使えないんですか?
ダブルクリックした行がどれか知りたい場合どうすれば。。。
VisualTreeHelper クラスをググると幸せになれるかも。
使い方は違うようだけど。
そもそもDoubleClick拾えたっけ
CellTempleteならできるだろうけど
>>680 俺も知りたい
解決したら書き込みを頼む
684 :
682:2011/07/11(月) 00:33:09.33
ごめん嘘
たぶんこう
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}" >
<DataGrid.Columns>
<DataGridTextColumn Header="Length" Binding="{Binding Length, Mode=OneWay}" />
<DataGridTextColumn Header="Name" Binding="{Binding Mode=OneWay}" >
<DataGridTextColumn.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<EventSetter Event="MouseDoubleClick" Handler="DataGrid_MouseDoubleClick" />
</Style>
</DataGridTextColumn.CellStyle>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
685 :
682:2011/07/11(月) 00:34:27.26
むしろこっちか
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}" >
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<EventSetter Event="MouseDoubleClick" Handler="DataGrid_MouseDoubleClick" />
</Style>
</DataGrid.CellStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="Length" Binding="{Binding Length, Mode=OneWay}" />
<DataGridTextColumn Header="Name" Binding="{Binding Mode=OneWay}" />
</DataGrid.Columns>
</DataGrid>
senderにItemsSourceに割り当てられたコレクションのうちの一つが
eの方からDataGridCellが取れるので
ItemContainerGenerator.IndexFromContainerなどを通してIndexに触れるはず
private void DataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
var icg = dataGrid.ItemContainerGenerator;
var c = icg.ContainerFromItem(((DataGridCell)sender).DataContext);
var i = icg.IndexFromContainer(c);
MessageBox.Show(""+i);
}
言ってる事と書いてる内容がむちゃくちゃだ。
とりあえず動くけど。
this.dataGrid.LoadingRow += (s, e) =>
{
(e.Row as DataGridRow).MouseDoubleClick -= OnDoubleClick;
(e.Row as DataGridRow).MouseDoubleClick += OnDoubleClick;
};
void OnDoubleClick(object sender, RoutedEventArgs e)
{
}
690 :
680:2011/07/11(月) 22:38:19.06
691 :
デフォルトの名無しさん:2011/07/12(火) 14:08:57.95
Style の EventSetter 書くときに、Handler を自動生成してくれる方法ってないの?
コントロールだったら、Click= って入力したときに出てくる、
<新しいイベントハンドラ>とかいうポップアップが出てくるんだが。
PostMessage的な感じで、次のキューにイベントの処理を任せる事ってできないの?
エクスプローラからD&Dさせたときに長い処理があって、エクスプローラへはすぐに処理を返したいんだが、D&Dされた方はビジー状態にしときたい。
そりゃ、その処理を別スレッドにして、処理中操作不能になるようにしときゃいいんだけど、そこまでするほどの物じゃないと思って。
適当にDispatcher拾ってきてBeginInvoke
>>693 ディスパッチャーって言うんスね。
…匿名関数と組み合わせると、なんて便利な…
695 :
692:2011/07/13(水) 18:02:33.33
button.HorizontalContentAlignment = HorizontalAlignment.Stretch;
button.VerticalContentAlignment = VerticalAlignment.Stretch;
したButtonでContentをセンタリングすることって出来ませんか?
サイズは親要素いっぱい、文字は上下中央配置と云うことです
意味が分からん
文字列しか表示しないならサイズも何もないと思うのだが
Contentはなんなのさ
textblockがセンタリングできないよーとかそういう話だろ
699 :
デフォルトの名無しさん:2011/07/16(土) 22:49:17.67
親ウインドウから下記のコードで子ウインドウを表示ししています。
private void Button_Click(object sender, RoutedEventArgs e)
{
var fooWindow = new FooWindow();
fooWindow.ShowDialog();
}
で、子ウインドウでは下記のように例外を発生させても
何の表示もなく普通に子ウインドウが表示されてしまいます。
private void Window_Loaded(object sender, RoutedEventArgs e)
{
throw new NotImplementedException();
}
例外が無視されてるみたいなんですけど、これで正常なんでしょうか?
親のloadedで例外出しても同じだろ
loadedまでは内部でcatchしてるんだろ。理由は知らんけど。
loadedまでのエラー無視はその動作で正しいよ。コンストラクターまで無視されたかったっけ?あっちはアプリエラーになったっけ?
そもそもロードでエラーなんてアプリ続行していいレベルを越えたエラーだから、そういうソースを書く方が悪いといえば悪い。
702 :
699:2011/07/17(日) 23:50:41.63
>>700 そうなの?親のloaded はIDEがエラー発生箇所に飛ぶけど、子だと飛ばないんだよ。
>>701 画面の初期表示時にコントロールに値を設定したくて、
その中で使ってるメソッドに実装してないのがあったから、
NotImplementedException 投げてたんだけど、
そういう処理って、Loaded でやらないほうがいいの?
>>701は読み込み時のTypeInitializationExceptionやMissingMethodExceptionとかの話じゃないの?
質問内容を見ていると、協力会社に使わせるのは心配になるよ。
こなれてるのこれ?
モノはいいけどWinFormsみたいにtipsコピペでは使えないよ
コード書く方がまったくこなれてない
前提知識がものすごく多い
アプローチ全然違うからね…
開発環境がそもそも未整備もいいところ
Blend程度に金出すくらいならFlexBuilder買うわ
こんな体たらくじゃあそらSilverLightも普及せんわ
WP共々撃沈がオチだな
慣れるとらくだしイベントドリブンで書くのが面倒になってる自分がいる…
WinFormも途中まで概念取り入れてるしそんな難しいもんでもない…
>>708 スレ間違えてないか?大丈夫か?
710 :
デフォルトの名無しさん:2011/07/20(水) 15:44:42.07
データバインドは良いけどコマンドバインドウザ過ぎだわ
もっと簡単に掛けるようにならない物かな
そんなことがウザいと感じるならVM使うのが間違いだろ
コードビハインドにプロパティ定義してバインディングだけ使えばいいよ
VMはあくまでテストの手間を勘定すればメリットがあるというもの
モデルがINotifyCollectionChangedやIPropertyChangedを実装してて
それをビューにバインドしたいだけだったらVM使わなくても
コードビハインドからバインド先のコントロールのDataContextに突っ込むのが楽だよ
714 :
704:2011/07/21(木) 08:34:10.07
>>706 >>705 確かにそんな印象です。
経験者がいないとリスク高そうですね。
VS2012に期待
つかコードビハインドがうざい
お金を払って勉強させてあげてる状態だなw
自社でアプリとか作りまくってノウハウあるならいいだろうけど
テンプレートエンジンでWebアプリ書いてる連中とか、AdobeAIRとかやってる連中の方が馴染みやすいと思う
Formsの延長では絶対にねえもん
だが、それがいい(AA
円グラフを描く一番簡単な方法を教えてください
紙に書け
真円が書けないとか言うなよ
うっさい黙れ
このスレ役に立たないから落とそうぜ
アスペ的には
一番簡単と言われても世界中に存在するグラフ用のライブラリを確認しないと一番を決めるのは云々
そもそも俺の簡単と質問者の簡単は違うかもしれない云々
Microsoft Chart Controlsでも使えばいいんじゃないの
725 :
デフォルトの名無しさん:2011/07/23(土) 14:19:04.77
Gridで区切った行間、または列間に罫線を引きたいんだがいい方法ないかな
>>725 borderを置く
borderのverticalalignmentやらgrid.columnspanやらを適切に指定
727 :
デフォルトの名無しさん:2011/07/23(土) 15:53:22.75
728 :
デフォルトの名無しさん:2011/07/23(土) 23:25:30.89
WPF + Entity Framework で作ったDBアプリのサンプルどっかにないだろか?
Northwind 的なやつ。
Microsoft patterns & practicesとか?
技術サンプル色が強くてあんまり実践的じゃないけど
731 :
728:2011/07/24(日) 09:40:43.05
ありがとう。さっそく見てみるよ。
通知とコマンドとビヘイビアがどうにかできれば何でもええねん
ContextMenuにコマンドバインディング設定しにくいのどうにかしろ
殺すぞ
734 :
デフォルトの名無しさん:2011/07/25(月) 00:56:02.56
Model には郵便番号が7桁の文字列として入っています。
これを View に 〒[xxx]-[xxxx] みたく、3文字と4文字のテキストボックスにわけて
Binding したいと思います。
ViewModel で、二つの文字列型プロパティにわけて、Model に書き戻すときにつなげる
・・・という方法は思いついたんですが、もっと簡潔な方法ありませんか?
Silverlight5ではマルチカラムテキストみたいなコントロールが追加されるらしいから
そのうちWPFにもフィードバックされるかも
>734
InputMan 使えばいいんでないかい?
>>734 自分だとコンバーター使ってプロパティは一つにする方法とるかなぁ…
たぶんDBとか使うだろうし、VMでの入力時チェックも楽だし…
俺はModelのプロパティ分けるわ
View依存でモデルを変えるってのは無いな
モデルはあくまでDBなり出力先に合わせる
>>740 同意。エンティティをそのままバインドできなくなるしね。
DateTime型をDatePickerとテキストに合わせるときも
>>738のようにした。
なんで出力先の型のままモデル作って…というかDBだと自動で作ってくれて、それにVM合わせるって形だね。
742 :
734:2011/07/25(月) 23:10:21.69
みなさんレスありがとうございます。
>>735 今回は郵便番号と電話番号だけなので、それぞれに UserControl
作っちゃうのが早いのか・・・という気がしてきました
>>737 なにそれ?と思って調べたら・・・
それは高い。
>>738 Converter って1対1以外の変換もできるんですか?
View から Model に戻す処理が Converter ではできない気が・・・
(私が知らないだけかもしれませんが)
ConvertBackとConveterParameter使ってできるよ。
というか、郵便番号レベルならテキスト二個並べてConveterParameterとか使えばチェック含めてすぐできそうな気がする…
744 :
デフォルトの名無しさん:2011/07/26(火) 11:11:46.72
>>732 さっそく見てみた。
Model が特定のクラスを継承している必要があるってどうなの?
既存のクラス使おうとすると、M-VM の間に Livet用Modelの層つくんなきゃいけなくね?
と思った。
国産だしちっと使ってみようかなぁ〜と思ったのに、残念だった。
>>744 あれ?
ViewModel クラス(名前通り、VMの基底)のことでなく?
M も何か継承必要だっけ?
この作者ってMVVMの目的を理解していない馬鹿が多いと言ってた人だよね
Modelに特定の基底クラスを要求するとかありえない設計だなw
>NotifyObject
>変更通知機能を持つオブジェクトです。主にModelの基底クラスとして利用されます。
たぶんこれの事を言ってるんだと思うが
単なるINotifyPropertyChangedのヘルパーで継承は義務じゃない
勝手に勘違いして貶すとか低脳すぎんだろ
>Modelの発生させる独自イベントをLivetのNotificatorを通じて発生させる必要があります
つまりフレームワークにモデルを合わせることを前提にしてるわけだよ
一通り読んだけど継承って単語すら出てこないな…。
Notificatorってのが気になったけどこれは単なるプロパティだ。
>>748 それは別に問題なくね。
今問題にしてるのは「既存のクラス使おうとすると、M-VM の間に Livet用Modelの層つくんなきゃいけなくね?」って部分。
>>748 んなこと言ってたらINotifyPropertyChangedすら書けないじゃん
INotifyPropertyChangedは標準ライブラリのインターフェイスで
特定の実装技術に依存してることにはならんだろ
別にMVVMではModelがINotifyPropertyChangedを実装してる必要はないし
特定の実装技術に依存するのはよくないって
ならフレームワークって何のためにあるんだよw
そんなこと言ってたら外部のライブラリ一切使えなくね…。
Modelが特定のクラスを継承〜の指摘が見当はずれだったから話をそらし始めただけ。
>>732見てないけどMにINotifyPropertyChanged付けるのって一般的なの?
話ぶった切るけどローカルの画像をBitmapImageに非同期で読み込ませる方法ない?
BitmapImageはUriSourceでHTTPのスキームじゃないとだめっぽ(file:はNG)
FrameworkElementがスレッドに依存するからスレッドプールとかタスクにやらせると引っ掛かっちゃうよママン
ファイルの内容だけ読み込んでUIスレッドに渡してやりゃいいだろ
>>756 自動生成されたエンティティをモデルとするような場合は
ついでにINotifyPropertyChangedを実装しちゃうのが一般的
UIへの通知のためだけに手書きで実装するならMよりVMに実装したほうがいいと思う
>>757 Dispatcher.BeginInvoke使うとかBackgroundWorkerのRunWorkerCompletedイベントとか
BitmapSource継承してロードする部分だけ自分で書けば行けるんじゃね
System.Drawingにデコードさせればスレッドの問題はないはず
WPFの範疇のクラスでスレッドに依存しないデコーダーがあれば最高だけど、あるのかは知らない
>>758-
今はそうやってんだけどねー
ガクガクしちゃってこれが
IOで遅延しないだけ大分マシではあるんだけど
MemoryStreamに読み込み→Dispatcherを介して初期化
>>757 >BitmapImageはUriSourceでHTTPのスキームじゃないとだめっぽ(file:はNG)
ここの部分だけで他行は無視w
var img = new Image();
img.Source = BitmapFrame.Create(new Uri(filePath, UriKind.Relative));
とかでローカルを読める。
ちなみにBitmapFrameをキャッシュ化したりしてみたけど無意味だったから辞めた。
>>761 がくがくしちゃってってどの程度かわかんないけど、
>>763のConverter利用したTwitterアプリだけど全然気になならい…
使用環境がデスクトップのCore-i7(GPU差し)、ノートCore-i7(GPUなし)だから性能にあぐらかいてるだけかもしれんがw
前に似たような所で引っかかった記憶がある。
ListBoxに画像をバインドしようとした時だ。
>>764 画像がでかいからが一番の原因だろうな
どれも壁紙サイズだから
>>757 適当なワーカスレッドで非同期にImageSourceを読み込んでFreeze()する。
後はUIスレッドでImageのSourceに突っ込むだけ。
Freeze()していないとスレッド間で扱えない。
768 :
デフォルトの名無しさん:2011/07/28(木) 02:44:05.61
VMが一つでVを複数仕様って大丈夫かな?
メディアプレーヤーなんだが、複数のプレイコントロールビューを配置したんだが
しかもVは場合によっては途中で破棄する場合もある
別にいいだろ
プレイリストや再生リストがVM持つのはともかくプレイコントロールにVM必要かなあ
ほとんど役に立たない気がする
ユーザーコントロールとコードビハインドでよくね
まずモデルとしてIMediaPlayerServiceやIPlaylistServiceなどがあって、
再生ボタンが押されたらIMediaPlayerServiceのインスタンスを取得して
Playメソッドを呼ぶっていうのが筋でしょ。その処理をVMに書くか
イベントハンドラに書くかだけの些細な違い。
で、VMを使っていればIMediaPlayerServiceを差し替えることで
Vなしでその処理をテストできるというのがMVVM。モデルに書くべき処理を
メインのVMに書いてしまっているから、それを利用するためにメインのVMを
共有したいということであれば、1VM複数Vの是非以前の間違いだと思う。
そういうわけじゃないならVが複数でも全然問題ない。
772 :
771:2011/07/28(木) 15:53:32.49
IMediaPlayerServiceをモデルというのは不適切かも
再生機能を実装するのは最終的にはもちろんビューだよ
ともかく、いろんなVMから使いたい機能はVM受け渡したりしないで
MVVMと無関係な別のクラスが提供したほうがいいってこと
773 :
768:2011/07/28(木) 19:31:00.07
作っているのはPCとテレビ2画面に対応したプレーヤーで、PC側のメインからでも
テレビの方の画面にあるコントロールでも操作可能になっています(一応動いていて今はリファクタリング中)
それとコントロールをVとVMに分けたいのは、Vを取っ替えて見た目を変更可能にしたいから
現状は
>>770さんの言っているようなコードビハインドで書いています
趣味悪いよなぁ
これ考えた奴
こんなのビジュアルツールで設定できるようにしろよ
MSー!Blend買うてくれー!
776 :
デフォルトの名無しさん:2011/07/31(日) 14:21:39.58
ExpressionBlendのUIが黒すぎるんだが・・・・
なんであんな見づらくしたんだろう黒がカッコイイとでも思ってるのか
格好いいと思っているんだろうな
設定で黒くないのに変えられるだろ
デフォで表示されるのがあれだからな
781 :
デフォルトの名無しさん:2011/08/02(火) 11:13:44.20
Blend 2はバーゲン価格だったのに、何でここまで値上げしたんだ?
アップグレード版はVS2008Std同梱で15,000円しなかったぜ
強気になれる要素があったんだろうなあ…
あったの?
まあ高機能であることだけは確かだからな
ライバルがいまいちだったんだろ
ToolBarに追加されたComboBoxのWidthを、HorizontalAlignment="Stretch"のように可変にするにはどうすればいいんでしょうか?
DockPanelに追加するイメージなのですが、そうするとComboBoxのデザインが変わってしまいます
ListViewの行の高さを変えるにはどうすればいいですか?
789 :
デフォルトの名無しさん:2011/08/03(水) 22:56:13.45
TreeView のような HieralcicalDataTemplate に対応したコントロールを
ItemsControl から派生して実装したいと思います。
どこかにサンプルコードあったら教えてください。
toolwindowをnoresizeにしたらタイトルが消えた
791 :
デフォルトの名無しさん:2011/08/07(日) 00:37:58.39
48x48 の Foo.png を下記のようにして、Image に表示させると、
2倍くらい大きく表示されるわけなんですが、なぜ大きくなってしまうのか
ご存じのかたがいらっしゃいましたら教えてください。
<Window x:Class="TestApp.MainWindow"
xmlns="
http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="
http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>
<Image Source="/TestApp;component/Images/Foo.png"></Image>
</Grid>
</Window>
Imageのfittingだかを指定するか、width,heightを指定する
画面と画像のdpiをちゃんと設定しろ
795 :
791:2011/08/07(日) 09:54:39.50
>>793 ご指摘のとおりでした。
画像の dpi を確認したら 56x56 でした。画面が 96x96 なので、
このせいでほぼ2倍だったんですね。
画像の dpi をそろえようとすると、ものによってバラバラだったり
そもそも設定されていないのがあったり、使用許諾で改変不可
だったり(dpi変えるだけで改変に当たるかは疑問はありますが)
するのでプログラム側で指定できれば楽だと思いました。
WPF にはリソース内の画像をすべて 96x96 dpi であるとして扱う
楽な方法はないでしょうか?
一番手っ取り早そうなのはImageのWidth/HeightをSourceのPixelWidth/PixelHeightにバインドすることか?
BitmapSourceはDPI読み取り専用だからうぜーよね
DPI変更とかでググってもこんな無駄な方法しか出てこない
private static BitmapSource convertDpi(BitmapImage bitmap, double dpi)
{
int width = bitmap.PixelWidth;
int height = bitmap.PixelHeight;
int stride = width * 4;
byte[] pixels = new byte[stride * height];
bitmap.CopyPixels(pixels, stride, 0);
return BitmapSource.Create(width, height, dpi, dpi, PixelFormats.Bgra32, null, pixels, stride);
}
使えねー
後はBitmapSource継承してDpiX/YとWidth/Heightを調整できるようにするくらいか
ラスターイメージなんか使うなってことだよ。
言わせんな、恥ずかしい///
だってベクターだとフリーアイコン少ないんだもーん。
実際ツールバーにあるようなアイコン群をベクターにしてもパフォーマンスは問題ないの?
フレーム毎にレンダリングしてるわけじゃないからあんまり関係ない
ツールバーなんてめったに再描画されないんだから
コントロールを利用して画像を作成保存しようと考えてます
コントロールをウィンドウに配置し、表示した状態で保存することはできたのですが、
コントロールをウィンドウに配置しないで(オブジェクトだけつくって)やってみると、真っ黒になります
コントロールをウィンドウに配置しないでコントロールを描画させて画像を保存する方法はありますか?
C#初心者スレにこんな流れがあったけど、こういうことじゃないのか
350 名前:デフォルトの名無しさん[sage] 投稿日:2011/07/16(土) 05:36:22.73
Gridをモニターに描画させないでGrid内のコントロールを含めた描画イメージを裏でスクリーンショットを撮るにはどうすればいいんですか?
351 名前:デフォルトの名無しさん[sage] 投稿日:2011/07/16(土) 05:44:06.65
GridからVisualBrushを生成する
DrawingVisual作ってRenderOpenしてDrawingContextにVisualBrushでDrawRectangleする
RenderTargetBitmapを生成してDrawingContextをRenderする
RenderTargetBitmapを保存するなりなんなりする
たぶんこれでおk
352 名前:デフォルトの名無しさん[sage] 投稿日:2011/07/16(土) 06:14:44.30
>>351 できたありがとう〜
情報ありがとうございます
やりたいことはそれです
TRYしてみます
できましたが、描画してから保存するまでの間にWPFの描画スレッド(?)での処理を挟まないといけないようですね
RenderTargetBitmap.Render()以降をCompositionTarget.Renderingで処理するようにしてみました
他にいい方法があれば情報よろしくです
VisualBrush作る直前あたりで描画要素のMeasureとArrangeすればいいんじゃないかな
807 :
デフォルトの名無しさん:2011/08/11(木) 16:33:33.56
livet で V を閉じるときに、M に通知してほしいんですけど、
どうすればいいんでしょうか?
今は、イベントハンドラに直接メソッド書いちゃってますが、
V が VM を直接呼び出すのってよくないのかと思いましてん。
VがVMに依存するのは別に構わないだろん
別に直接呼んでもいいけど依存させたくないんだったらインターフェイス使って
var obj = DataContext as IViewEventAware; if (obj != null) obj.OnClosing();
みたいにやればいいんじゃね
ビヘイビアとして実装すれば再利用もできるよ
Livet、超お手軽にMVVM実装出来て素晴らしいと思うんだけど
いかんせん情報・ドキュメントが少なすぎる
せめて現状に合ったサンプルでも配布されてればマシなんだが
WPFはローカライズのやり方がわからなくて辞めたな
Formsと同じやり方でいいのに何で劣化してんだよ
813 :
デフォルトの名無しさん:2011/08/15(月) 12:45:05.72
>>813 ありがとう。
自分も最初にぐぐる先生には質問してみたので、そこは見たよ。
基本的な実装方法はそこのサンプルでわかるんだけど
応用的な使い方をしようとすると、メッセージとトリガーの書き方によっては
トリガーされないケースがあったり、ハマるポイントがまだまだあるなという印象。
最低限、クラスリファレンスといくつかのサンプルくらいは公式に欲しい。
サンプルは充実させて欲しいよね。
後はソースを読むから。
質問です。
現在別ツールを使用して作成した
3DのXamlデータをGridに表示させています。
しかし、座標を指定する箇所が膨大な行数
となっており、VSがまともに
動作しなくなって困っています。
何か良い解決方法はありませんか?
そもそも、
> 別ツールを使用して作成した3DのXamlデータ
をやる必要があるのか。
XamlReader.Load使う
SilverlightではXNAに差し替えられて無かったことにされていることからもわかるように
WPFの3DのAPIはカスなので、ちょっとした飾りじゃなくガッツリ3DやるならそこだけXNAやDirect3Dを使ったほうが
どうせbamlになるときにコンパイルされとるやろ
820 :
816:2011/08/16(火) 11:50:18.37
レスありがとうございます。
調べさせてもらいましたところ
私の場合ですとXamlReader.Loadが
良いように感じたので、そちらを
使用していきたいと思います。
821 :
デフォルトの名無しさん:2011/08/16(火) 19:24:19.13
>815
常時ツィッターに貼り付いてるみたいだから、直接呟いてお願いしてみれば?
しばらくAndroidに手を出していたけれど、
Androidのアーキテクチャの糞さに嫌気が差した。
WPFは本当によくできている。
823 :
デフォルトの名無しさん:2011/08/18(木) 02:06:33.39
俺は仕事でちょっとしか触ってないけど分業という点ではWPFよりいいと思った。
レイアウトXMLで出来ることが少ない分(笑)
R.id〜とか、はぁ?って感じだよな。
XML でできること少ないとかマイナスだろ。
だから(笑)なんじゃん
できることが少ない=悪、って…オブジェクト指向初期にもそんなのがいたなぁ。
できるべきことができないのは確実に悪だが、できることが少ないのは必ずしも悪ではない。
でも、レイアウトXMLはシラネw
.NET5になったらViewをHTML5/JavaScriptで書いて裏を.NETで書くような
フレームワークが入るのかな
分業という点ではそれがベストかも
XAML全否定っすか
WPF無くなるってこと?
SLが途中からHTML+JS+.NETになって
WPF残せばすっきりする
最終的にHTMLになっていくのが正道だよね
XAMLで分業って理想は分かるが夢のまた夢だな。
仕様をまず任せようと動きのある部品の見た目をデザイナに考えろと言っても考えれる奴は一握り。
実装まで任せようと動きのある部品を作れるだけのベースとなるXAMLを渡すぐらいお膳立てしても無理。
「じょうたいせんいずってなーに?」レベルでも合理的にデザインできる高機能なツールが必要だw
blendのサンプルのようなアニメーション作ってくれれば上出来だろ
実際XAMLがHTML+CSS+JSになっても誰も困らないよね
デザイナは掃いて捨てるほどいるんだし
JSでバインディング機構用意すればMVVMだって問題なくやれる
今以上の変態コードになりそうだからWPFのは残してほしいな
まぁ仮にそうなったとしても、まず.netがどこに入るんだ?プラグイン拡張?
JavaScriptから.NETのオブジェクトを操作するくらい
SilverlightのページでもWPFのWebBrowserでも普通にできるよ(逆も超簡単)
ViewのコードビハインドとXAMLがそれぞれJSとHTMLになるだけ
ごめん、説明が足りなかった…
思ったのは
>>838のようにOS上のCLRからのスクリプティングや、ブラウザ上のsilverlightにのっけてるCLRからのスクリプティングじゃないんだ…
ブラウザのHTMLをベースにした場合、CLRがないからオートメーションに入り込むのかとふと思ったんだよね…
でも考えてみたらブラウザベースになるとは限らないから勘違い?との結論に達したw
XAMLの問題はそれ自体で完結出来ない点
どれだけシンプルなビューでもIDEが生成する最低限のコードビハインドが必要になるし
いくつかの機能はXAMLでは実装できず、コードビハインドで実装する必要がある
いっそのこと、WPFは完全にMVVMありきの形にしてしまって、
ビューで共通的に多く使われる実装パターンはXAML側で完結出来るようにしてほしい
簡単につくれるようになるんならなんでもいいや
早く完成させて
簡単に作れるようになればなるほど求められるレベルも上がっていくジレンマ…
んでその新しい手法を身につけないとどんどん取り残されていく現実…
御託はいいから早く頼むよ
HTML5で何倍も時間掛けてショボい上に互換性問題ありまくりの画面つくるよりは
WPFの知識でほぼ作れるSilverlightの方がいいな
別にスタンドアロンアプリに使うならブラウザの互換性は関係ないでしょ
Silverlightが生産性高いっていうのはVSとC#が使えるからで
WPFベースだからとかいうのはあんまり関係ないよ
XAML のいいところは、FrameworkElement 継承したクラス書くだけでタグが増やせるところよ。
HTML5 は、HTML5 のタグとして定義されてないものをやろうとした途端に難易度跳ね上がるし。
あと、データバインディングの仕組みもないと、結局つらい。
今は JS にも jQuery あるにしても、まだまだ「コードで UI 要素作る」感が酷い。
にしてもDataGridが遅すぎだな
ブラウザ互換はなくても、今ならHTML5のバージョン互換があるだろうね。
こないだもセキュリティで突っ込まれたから動作変わるだろうし…
というかHTMLじゃなくてXAMLでいいよ。
データバインディングですむところをコードビハインドやイベントドリブンで書くとか煩雑すぎるし、ボタン一つにしても標準デザイン使わないし…
>>831 そだね。自分もそう思う。
最大公約的な技術の組み合わせが最大多数の幸せに繋がると思う。
理想と現実だな
クラスを作れない名前空間もないhtmlがいいとかおまえらがいかにxamlを使いこなせてないかよくわかる話
そこそこ対応してるスマホですら
HTML5でやろうなんてのは一部マニアだけ
そして結局後悔してる
HTML5でやろうとは思わないな
HTML6くらいでいろいろできるようになるだろう
XAMLがHTMLに置き換わるのは、まあやがてそういう方向に向かっても構わない
でもコードビハインドにjavascript使わされるのはマジ勘弁
>>863 いつの話だろうなw
2020年は余裕で越えそう。
HTMLにWPF相当の機能を期待するくらいなら、WPFベースのHTMLレンダリングエンジン作るわ
寝言はマトモに文字をレンダリングできるようになってから言えw
HTML5の話題でスレが埋まってるな・・・
なんでHTML5とWPFが比べられるのかわからん。
WPFはクライアントアプリケーションのUIフレームワークで
HTML5はWebブラウザー上のUIフレームワーク。
クライアントアプリが滅んでWebになるっていうならまだわかるけど、
WPFがHTML5になること無いだろ
>>859 HTML5の用途をあえてWebブラウザ上に限定する理由は無いんじゃないの。
もしUIフレームワークの基盤を1本に統一できるなら、それに越した事は無い。
いいかげん夢から覚めなさい。
そしてWebProg板に帰りなさい。
>>860 で、いつそのサンプル前提という話が出てたの?
>>863 突然何言ってるんだ?
君、日本語分からないの?
xmlで会話しろ
xmlじゃダメだろ、XAML使えXAML
C/C++/C#/Javaで会話する自身はあるが、XAMLは無理。
Cなどでは読めば分かる、は十分可能だが、XAMLは無理。
意図したとおりに書けないから読めない(小技が必要だったり冗長だったり)。
見かけたら読んでみたいが地元には入らないだろうからなー
>>867 ん?意図して書けるでしょ…
まぁ書くより描く機会の方が多いけど…
>>869 AmazonのKindleでオンライン購入して読むのが通。
HTML5でクライアントアプリはJavascriptしか出来ない、
HTMLしか書けない技術者の裾野を広げる意味しかないだろ。Node.jsみたいに。
XAMLもほとんどASP.NET由来だろ
何を言ってるんだ
結局XAMLが何か分からずに騒いでたってオチ?
DataGridColumnってなんでFrameworkElementじゃないんだよ
Visualを持ってないから
別に困らないだろ?
HTML5の話が出てるのはWin8のMetroUIがHTML5で書かれているって話があるからってわけじゃなかったの?
HTMLがWebブラウザ上のUIフレームワークだからWPFから置き換えられる事は無いってのは話の前提が変だろ。
俺も置き換えられて欲しいとは思わんが、あり得ない話でも無いだろ
HTML5「も」使える、ならともかく
置き換えとかMSも作り手もユーザーもみんな不幸になるだけだろう
100%無いわ
98seでもデスクトップにhtml貼り付けられただろ確か
バインディングもまともに書けないからhtmlとかいうんだろうけど無理ならformsに帰れよ誰も責めないよ
アクティブデスクトップはまた土俵が違うだろうw
バグ多すぎてあれはね
まぁ、ちょっとしたランチャーとかはHTMLApplicationは便利だ
XPは長いこと使ってたけどアクティブデスクトップなんて最近知ったわ
置き換えはないだろうけど、将来的にVSでHTML5+.NETでのクライアントアプリ作成が
サポートされることは十分ありうるな
>>876 DataGridってDataGridRowが並んでいるItemsControlがあって
DataGridRowの中がDataGridCellが並んでいるItemsControlになっている構造なので
ColumnがVisualになる余地が無い。
MSのRibbonWindowって配下のフォントサイズおかしくならない?
なんかコンマ以下の誤差出てる感じでにじむ。
Fluent使うからもういいけど
4.0じゃないからじゃねーの
Visual Studioリボン化まだかよ
889 :
デフォルトの名無しさん:2011/08/25(木) 01:03:16.74
ListBoxのselectionmodeをMultipleにして使っているんだが、
右クリックでコンテキストメニュー出したときも反応してしまう
選択したのがメニュー起動で非選択になってしまうので使いづらくて困っています
何か良い対策有りませんかね?
890 :
デフォルトの名無しさん:2011/08/25(木) 02:42:54.78
WPFって需要あるの?
ノ
WPFで食い繋ごうと思ってる人には需要あるよ
可哀そうなほど先見性ないけど
え、html5+jsで受注しちゃうの?
WinFormで止まってるんだろう
WPFはそこから後向きに進んでいる気がするが止まってはいないな
.net3.5 WPFで書いています。
NavigationWindowを用いてPageを遷移する
ものを作っているのですが、
ページ切り替えの効果(フェードなど)は、
WPFの機能としてありますでしょうか?
TransitionType fade などで検索していますが、
希望の結果は出てきません。
よろしくお願いします。
プレイベントでvisualコピーしてHLSL書けばいいんじゃね知らんけど
はよMetro UIライブラリ配れ
899 :
デフォルトの名無しさん:2011/08/29(月) 13:28:53.25
WPFはアーキテクチャー的には良い線行っているけど性能が出ない
消えていった技術の典型ではあるな
Blendを無料化すれば或いはとは思うが
とりあえず代替技術発表まではWPFでいいわ
>>899 いや、古いグラボ使ってなければ性能は出るだろ。
あと開発環境で F5実行は遅いが、直接exe叩けば速いぞ
Zune SoftwareってWPFだよな?
903 :
デフォルトの名無しさん:2011/08/29(月) 20:43:02.67
え?WPF終わるの?
WPFで2ちゃんブラウザ作っている俺の立場は・・・。
WPFを理解さえすれば、WinFormなんて戻れないけどな・・・。何が不評なんだろ。
windowsアプリの時代はある程度去ったという感じ?
企業向けとかだとあるのかもしれないが
一般向けはすでに開発済みのVBやVC++やJavaのソフトがあるし
実際2chの専用ブラウザだってリメイクしたものはないはず
WPFがオワコンだとは思わないが、Blendの機能はVisualStudioに統合してけれ。
>>903 まあ、現在の形そのままで WPF が残るかと言われると微妙だけど、
WPF が終わったとして、WPF から9割型のコードそのままで移植できる
新しい何かができるのは確実だから安心して WPF アプリ書けばいいよ。
不評なのはリリース時期的な問題かねぇ。
WPF が作られたのって、脱ネイティブに偏りすぎてた時期で、
かつ、OS によってハードウェアスペックを吊り上げないといけない
(でないと新しいPC売れない)時代の産物なので。
今は、如何にネイティブとの共存するかって時代に揺り戻しが来てるし、
ハードウェアの主戦場が PC から携帯機器に移って、性能向上が停滞してる時期なので。
つまるところ、「WPF 重たい」ってのはそういうこと。
おまえらが一生使いこなせなくても、formsスキップして入ってきたゆとり世代が書いてくれるだろ
問題ない
今さらWinForms戻るぐらいならDirectXで直書きするわ
>>907 ゆとりにゃハードル高杉だろがw
インテリセンスったってどれが何か覚えてなきゃ使えねーぞ
>>909 それはFormsでもいっしょじゃね?
まあ、MVVMパターンとか使うとインテリセンスに頼れない部分多い
(特定の属性つけてるといいことあるよ、とか、インターフェイス実装してるととか)
のでつらいけども、それもまあ、Forms で MVP したい時とか ASP.NET で MVC したいときでも一緒だし。
大丈夫大丈夫
もうFormsは忘れろ
WPFで2ちゃんブラウザ作るくらいならHTMLでブラウザで動く2ちゃんブラウザでよくないか?
913 :
デフォルトの名無しさん:2011/08/30(火) 07:17:41.89
>>912 HTML5でいろいろと試してみたら操作が激重。
あとやはりクロスドメイン問題で解決しないといけない問題が山盛り。
Javascriptなので作業効率が悪い。
特に最後の作業効率。
俺は仕事をしていて、休みの日に組むので、C#+VSレベルの快適な開発効率が無いと厳しい。
それにWPFの表現自由度の高さ。
是非WPF2ちゃんブラウザを完成させたい。
前にItemsControlで2chブラウザ作ったつう人が、複数のレスにまたがるテキスト選択が面倒くさいって言ってたな
WPFもJavaScriptも知名度の高い言語は色々と趣味でやって成果物出してるけどJavaScriptでの作業は効率いいけどなー
CoffeeScriptで短くかけるしデバッグも楽勝だしさ
WPFはBlendやT4,PrismのようなMVVMフレームワークが必至なようにJavaScriptにも色々ある
何でもそうだけど他のものを貶して言い訳にしちゃうとみっともないよー
それこそWPFは重いーとか言って停滞してる人と同じです
それ3つともMVVMフレームワークじゃないよ
Prismはただのサンプルだけどそれはまあ許すとして、
BlendもMVVMのテンプレートがあるから百歩譲っても、T4てw
Metroが出たら速攻移るんでよろしく
>>916 MVVMフレームワークはPrismの事しか指してないがなー
作業効率のお話で出てきた各種便利な何かのお話なのにもっとちゃんと読めよー
んで軽くAMQP的な仕様も取り入れるPrismはMVVMフレームワークです
もっとお勉強しましょー
FlowDocument の改行がよくわからんなー
TextRangeのText に改行コード足しちゃ駄目なのかしら
920 :
デフォルトの名無しさん:2011/08/30(火) 14:52:18.14
ComboBox の高さが高すぎる(文字の大きさに対して余白が多すぎる)
気がするんだが、余白だけ小さくする方法ある?
>>919 LineBreak
>>920 標準コントロールの見た目なんて有って無いようなもので、
テンプレート編集すれば好きなように変更できる
ほぼBlend必須になるけど
Blend使ったことないんだがMVVMで必須環境なのか?
使い分け面倒臭そうなんだが
MVVMに限らず、バインディングを活用するならBlend必須。
見た目に関してWinForms以上のものを求める場合も必須。
使い分けは実際とっても面倒臭い。
ComboBoxの余白調整ごときにBlendなんざいらん
VS Premium買えない貧乏人はVS ProとExpression Studioでいいんだよな?
バインディングレベルで必須ならProで欲しいわ
>>924 そんな細かいこと気にする人がどうせそれだけで済むわけないじゃん
手書きのテンプレート編集は地獄だぞ
MSDNにのってるやつは実際と違うから、まずXamlWriterでデフォルトのテンプレートを取得して…
とかそんなレベルから始まる
927 :
デフォルトの名無しさん:2011/08/30(火) 19:37:47.00
>>926 いや、VS2010でプロバティーウインドウから、「値をリソースに抽出」すれば
簡単にテンプレート抽出できるぞ
Blendとの使い分けめんどくせーよなー。
やっぱVS単体である程度できるようになって欲しいわ。
むしろBlendのエディタをもっとマシにしてほしい
なんでVSのコンポーネントをそのまま使わないんだよ
分業を促してるんかね
どうせデザイナーもVS要りそうだが
Blendで作業してたらXAMLを手で編集したくなったとき
インテリセンス効かないからVSでやったりとかアホらしすぎるわ
926じゃないけど本当に出来てワロタ、今までの俺の苦労は一体……
>>927ありがとう
ただコントロールによっては抽出出来ない?のは何故だろう
Silverlight5に合わせてBlend5でるのかな
無料化してVS統合の流れにしてほしいわ
MSを見てれば、プログラマーもデザイナーもVSとBlendを買えって事だろ。
http://windowsclient.net/wpf/wpf35/wpf-35sp1-more-effects.aspx ここのGreyScaleEffectのサンプル見ると、GreyscaleEffectクラスのInput依存プロパティを
サンプラーレジスタと関連付けてて、このInputプロパティの値がシェーダーにかけられるってのはわかった。
MainWindow.xaml.csでは、このGreyscaleEffectインスタンスを1つ作って、それをすべての要素で使いまわしてる。
ここでわからないのは、インスタンスを使いまわしてるのになんで各要素の画像がちゃんとサンプラーレジスタに送られてるのか。
明示的にInputプロパティへ代入しないといけないのでは?と思うんだけどどこにもそんな処理書いてない。
一体どういう仕組みでInputプロパティが更新されてるんでしょう?
WPFが内部で勝手にやってる
別にInputプロパティが更新されるわけじゃなくて、勝手にs0に入力が来る
>>936 なるほど、ありがとう。
試しにInputプロパティに関する項目をコメントアウトしてみても動作しました。
でもs0レジスタに送られるのはImageインスタンスの画像だけでした。
ちゃんと依存プロパティ用意してUpdateShaderValue呼び出さないとうまく動かんようです。
未だ詳しい動作を掴めずにいますが気にせず先に進むことにします。
Windowの中にGridがあり、
その中に他のコントロールを配置しています。
ここで、フォーカスが別のウィンドウにある状態から
今作っているアプリに移ったときに
発生するイベントってありますか?
gotforcusがそれかなと思い
WindowやGridにトリガ置いてみましたが駄目でした。
具体的には、Grid内においたButtonを
押すとイベントが発火したようでした。
希望のイベントはあるのてしょうか?
よろしくお願いします。
>>938 window.Activetedとか?
>>939 ありがとうございます。希望の動作になりました。
Activateって、そうか、そういう活用なんですね。
FlowDocumentが遅すぎる
942 :
デフォルトの名無しさん:2011/08/31(水) 23:08:48.49
ListBox を ICollectionView を使ってソートして表示しています。
縦方向にある程度スクロールさせておいて、画面表示に表示されてない上のほうに
アイテムが追加されるとスクロールしてしまいますが、画面に表示されていない
範囲にアイテムが追加された場合はスクロールしない設定ってできますか?
簡単にいうとツイッターのタイムラインで、スクロールして下のほうを見ているときに上のほうで
アイテムが追加されても画面がずれないようにしたいんです。
EnsureVisibleすれば
MVVM LightとPrismどっちがおすすめ?
Prismは勉強用
ResourceDictionary 内のデータテンプレートの中から、Window の Converter を呼びたいんだけどどうすればいい?
LabelでもTextBlockでも良いのですが、
文字色を途中で変えることはできますか?
コードでもXamlでも構いません。
今は泣く泣く、
StackPanelに、Width=Autoのラベルを並べています。
>>958 TextBlockの中のInlineに色を設定
951 :
デフォルトの名無しさん:2011/09/02(金) 19:17:42.78
多分RichTextBox使うのが用途に合っているんじゃないかな?
>>948 ラベルの方がいいよ
ソース動的を考慮するなら、テキストはラベルほど色々できない…
普通にTextBlockとInlineでできるだろ
RichTextBoxはFlowDocumentだからともかくLabelなんて
テキスト描画自体はTextBlockよりずっと貧弱で
細かいことやろうと思ったら結局中にTextBlock入れるんだぞw
Vだけや簡単なVMならテキストのが楽なのは知ってる…
ただ画面仕様で複雑なVM等になりえるならテキストはきついってだけ
貧弱じゃなくて性質の違い
色変え、改行のみならテキストのがラク
WPFってWindows XPじゃ無理なんだっけ
956 :
デフォルトの名無しさん:2011/09/03(土) 02:33:08.92
問題ない
無理ではないがパフォーマンスはかなり落ちる。
958 :
デフォルトの名無しさん:2011/09/04(日) 10:12:21.92
WPF 4.0 で ListView と DataGrid の使い分けって
どうやって決めるの?
編集は必要ないんだけど、ソートはしたい。
表示するデータの件数は数万件・・・となったら
どちらを使うべき?
WindowsFormsHostでDataGridView
960 :
デフォルトの名無しさん:2011/09/04(日) 13:16:48.21
まあListViewに数万件表示するとしたら設計に問題有るだろ
DataGridViewを万単位のデータで使うんなら必然的にDataTableだね
LINQで数万は遅すぎてムリ…
まぁそんな画面は見たくないって事の方が本音だけど、仕様だからで強硬されたりするからなぁ…
>>958 ListViewは列の仮想化ができないからDataGridのみを使う。
963 :
デフォルトの名無しさん:2011/09/05(月) 16:42:16.21
>958
xamDataGrid でFA
正直xamはお勧めしない。
>964
何故に?
バージョン上げないと不具合直らないのにバージョン間の互換性がないとか多い気がする。商用コントロールならもっと互換性とか気をつけてくれ。
今となっては標準のDataGridに比べて利点があまりない。
タッチパネルを繋ぐだけで落ちたりするみたいな環境依存のバグも引きやすい気がする。
ScrollViewer で現在表示されている項目を取得ってできないですかね?
表示されている項目にバインドされているものが取得したいのですが。
>>967 PART_VerticalScrollBarを探してValueとViewportSizeで表示範囲を調べてとかやって取得した。
もっと手軽に判別する手段がほしいところ。
糞所
コマンド リンク コントロールって無いのか
971 :
デフォルトの名無しさん:2011/09/07(水) 14:18:06.39
>>971 それWPF無関係だと思ってスルーしてた
サンクス!
WPFなしでリボンUIってつくれるんですか?
それを何故ここで聞くのか
MFC用ライブラリは公開されてる
リボンwindowってウィンドウアイコンダブルクリックしたらアプリごと終了するから困る
blend 4.1きてるな
>>975 左上のアイコン?それってリボンに限らず規定の動作だよ。
アイコンを髑髏マークにしておけば問題なし。
リボンはタブ複数にするとデザイナでアイテム選択できなくなるのが困る
CP潰せ
ボタンコントロールの輪郭をぼかしたいのだが、
Blendを使うか、画像を使うしか方法は無いでしょうか?
できればApplication.Resourcesで
全てのボタンに対して行いたいです。
TreeViewめんどいね
>>981 Application.xaml に Button の ControlTemplete 設定しとけばいいんじゃね。