WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part6
一向に普及しないユーザーインターフェースシステム
Windows Presentation Frameworkについて語るスレ。
.NET4.0もリリースされたけど別に盛り上がってはいないよね…。
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, .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/
1000 名前:デフォルトの名無しさん[sage] 投稿日:2010/05/21(金) 16:32:29 1000ならWPF終了 残念ながらこのスレは終了しました Microsoft先生の次回作にご期待ください
このスレッドは天才チンパンジーなんたらかんたら
WPFを使う前にシルバーライトで十分で無いか確かめるべき
それはある・・・
INotifyDataErrorInfoがSilverlightにはあるのにWPFにないのが不思議
トリガにて、プロパティをアニメーションさせる場合 Trigger.EnterActionsとTrigger.ExitActionsそれぞれにStoryboardを放り込むわけだけど、 トリガがアクティブになったときはアニメーションを使わず、 アクティブでなくなったときにだけアニメーションさせたい場合でも EnterActionsのほうにStoryboardを入れる必要があるの? 現状それ以外にやり方がわからんので、とりあえずDurationが0秒のアニメーションを適用してるけど、 Setterなんかでちゅるっとできんかなーと思ってる。
>>6 DataGridのようにSilverlightから逆輸入がこれからのトレンド
うーん。。。 標準DataGridイケてねえなぁ。 なんでグリッド内でのコピペを実装するだけでこんなに面倒なんだ。
コピペして使うかもしれないからどっか俺の見える所に貼っとけ
XAMLでもC#でも出来ることはどっちでやればいいんですか? XAMLを覚える必要ってあるんでしょうか?
基本的にXAMLでやる。 XAML優先。
デザイナが使いたかったらXAMLしかない VS2010なら直にXAMLを触らなくてもWinForms程度のUIなら問題無く作れるけど そんなに難しくないんだから覚えとけ CLRのオブジェクトをXMLにマッピングしてるだけなのでXAML固有の事項はごく少ない
やっとC#で見えてきたのに・・・ XAMLも徹底的に勉強します ありがとう
15 :
デフォルトの名無しさん :2010/05/25(火) 21:47:16
>>14 そんなにかわらないよ
xamlって今までだとIDEのデザイナーが書いてた部分に相当するだけだし
C#と.NETとXMLがきちんとわかってればXAMLはだいたいわかるはず XMLがわからないのはプログラマとして問題外
17 :
デフォルトの名無しさん :2010/05/25(火) 22:01:18
>>16 C#と.NETとXMLがわかってる奴なんてどれだけいるんだよ
えっ
XMLは外出しのカスタマイズ性のある定義ファイルを作成する案件やれば携われるっしょ
XMLなんかWPF以前の問題でしょ それこそ「XMLがわからなくて何作れるの?」ってレベル
XMLとHTTPの違いがよくわからない
大根と八百屋くらい違う
>>21 LINQ to XML 勉強を進めてみる
XMLもLINQも分かって、XAMLや集合の概念が掴めてお得
XAML より LINQ の方が慣れるのに時間かかったなぁ。
XAMLはUI側だけど、LINQはBL側だからねぇ
嬉し恥ずかしボーイズラブですか
Business Logicですぜ、旦那
盛大に釣れた
犠牲になったのだ・・・
31 :
デフォルトの名無しさん :2010/05/26(水) 07:08:16
クソスレ
BLワロタ
33 :
デフォルトの名無しさん :2010/05/27(木) 22:50:22
WPFで動的にコントロールを差し替える場合ってスマートなやり方ってありますか?
DataTemplate
35 :
デフォルトの名無しさん :2010/05/27(木) 23:21:25
>>34 ありがとうございます
しかしWPFってwinformほど情報が蓄積されてないのが痛いですね
つくづくネックだな
>34 DataTemplateはリストとかでアイテムを表示するための定義という認識なんだが。 コントロールが何らかのアイテムと結びついてない限りそれを使いまわすのはなんか違和感。
VはVMと結びついてるから気にしたことがなかった
IHogeView view = (IHogeView)ViewProvider.GetViewFor(typeof(Hoge)); view.SetViewModel(hogeViewModel); MVVMならこういう風にViewにインターフェイス被せるのがMVVMの目的からいって正しいんだろうと思う
40 :
デフォルトの名無しさん :2010/05/28(金) 00:38:26
まあやりたいことは2chの専ブラのsubjectの表示や スレッドの部分なんですけどね 速度的な面を考えると一つを使いまわすよりインスタンスを その都度追加してアクティブな物だけ前面に表示する形を 取りたいんですけどどうもWinForm的なやり方しか浮かばなくて・・・
42 :
デフォルトの名無しさん :2010/05/28(金) 01:10:55
>>41 ありがとうございます
なんというか・・・上で言ったデータの蓄積っていうのは
検索エンジンに最適回に行き着くような学習データの蓄積ができてないと
言い換えればいいのか・・・
WPF入門 WPFある程度やった人
この間を埋めるのがまだまだな感じなんですよね
このスレですら割といい加減な回答される品
俺も入門したばっかりだけど、WinForm知ってるなら探し方が悪いだけだじゃないかと… WPF ListBox 仮想化 でググって2番目に出たページにリンク乗ってた。 仮想モード に変えてググると前スレが引っかかるw
MVVMってのが飲み込めない。
46 :
デフォルトの名無しさん :2010/05/28(金) 01:48:13
>>44 お恥ずかしい話だが仮想機能を使ったことなかった
まあ
>>41 みてまあ仮想化機能は当たり前だなあと思ったw
ゲームなんかでも描画の必要が無いところはスキップするしね
なのでヒントもらえるだけでもかなり感謝してるよ
prismきたか これないとちゃんとしたMVVMにならないから必須だわ
MEFに押されて消えていくかと心配もしたけど、2.n系列の開発が続いてて安心した。 Prism 4.0ではUnity+MEFの利用もできるように開発してるみたいだし。
50 :
デフォルトの名無しさん :2010/05/28(金) 20:55:18
Prismってなぁに?
51 :
デフォルトの名無しさん :2010/05/28(金) 20:57:50
よくわかんないから俺にはまだ必要ないな
モジュール化の仕組みだから、 それなりにデカいものを作りたいのでなければいらないでしょ。
このてのまともなソースは軒並みソリューションフォルダーなんてものを使ってるから Expressユーザーはまともに開けず涙目
一画面でもヘッダフッタメニューとちゃんと分けてモジュール化出来るからprismは重宝するじぇ
>>54 リファレンス実装のStockTraderはExpressだといくつかのモジュールが動かないけど、
クイックスタートのデモのソリューションフォルダはライブラリのソースだったり、
テストプロジェクトだったりするから気にせずビルドして、どんなもんか試せるよ。
Prism自体は、複合アプリを作るためのフレームワークだから、
アセンブリ参照してExpressでも利用できるしね。
57 :
デフォルトの名無しさん :2010/05/30(日) 23:24:04
DoubleAnimationUsingPath など、UsingPathを用いたアニメーションはXAMLでしか記述できないのでしょうか? コードビハインドで書かれた情報を見つけることが出来ません。
いや、他の要素と同じようにコードで記述できるが
VMからVを閉じる必要性があるんだが VMがVの参照を持ってなかったら閉じれない様な気がするんだけど何か方法あるの? 具体的に書くと VMでBackgroundWorkerが走っている RunWorkerCompletedと同時にVを閉じたい 今はVの参照持って閉じてる 疎結合にするだけが目的ならこのくらいは別にいいのかなー(Closeの無いWindowは無いわけで)という気もする 何かアドバイスくれ
なんでVirtual Machine?
いやVisualMode
何かややこしく考えすぎている気がするww
Vのインターフェイスを定義して、VMでその参照を保持する VMにCloseRequestイベントを定義して、Vでハンドルする
>>64 上は今と大差ないので下を採用してみようと思う
66 :
デフォルトの名無しさん :2010/05/31(月) 22:27:49
MVVMでXamlのイベント(たとえばWindow.Loaded)をVMにバインドする場合ってどうすればいいのかな? ButtonはCommandがあるから出来るけど他のイベントってなんかうまくいかないんだよな
なんか何でもかんでもCommand化する奴がCodeProjectかどこかに無かったっけ
正直、普通にコードビハインドでイベントハンドラ書いて その中でViewModelのメソッド呼べばいいと思う やってることは本質的にCommandと同じだからMVVM的には全く問題ない
WPFで作った物ってXPにも対応してる? VMの上で動かすと描画がおかしいので気になる…
71 :
デフォルトの名無しさん :2010/06/01(火) 00:47:17
どのVMかしらんがVMがエミュレートしてるGPUは相当古い物だぞ 実マシン上のXP上だと問題なく使える
ViewModelはと紛らわしい VMってVMware?
>>71 文字が滲んで見苦しかったのでそれが聞けてよかった
サンクス
バーチャルマッスィーン
ん?WPFってGPUが貧弱だと描画がおかしくなるのか?
76 :
デフォルトの名無しさん :2010/06/01(火) 00:59:59
>>75 いや
VPCとかの上で動かしたんでしょ
あれってGPUが相当古いし
xpはtoolkitの一部のコンポーネントが動かないけどね 例えばアコーディオンは親のリサイズ時にサイズが追従しない等のバグがある
Trim S3 (VRAM 4M) のはず。
80 :
デフォルトの名無しさん :2010/06/01(火) 07:09:51
>>68 ありがとう、ありがとう
>>69 やっぱりコードビハインドで書かないとダメだよな、ここらへん問題になってると思うんだけどなんで何もないんだろう
xamlがよくわかりません だれかxamlをC#で表現してみてください DataTemplate はC#だと foreach...だよ 見たいな感じで
82 :
デフォルトの名無しさん :2010/06/01(火) 07:40:47
>>81 xamlはwinformでいうところのIDEが直接さわる
Form1.Designer.csと同じポジション
それをhtml+CSSの仕組みをヒントに新しく設計したのがxaml
DataTemplateなどはCSSみたいな働きをするものかな
Styleあたりも同じ
あれ? VS2010だとアコーディオンが出てこないぞ?? ToolKit入れてるのになんでだ?
xamlはオブジェクトをインスタンス化して配置するためのもの
xamlはプログラムっていうよりデザインを作るもの
デザインをプログラムするものって方が近いよな。
だろ、だろ だからC#風に表現したらxamlがわからないって言ってるやつも理解できると思うんだ
88 :
デフォルトの名無しさん :2010/06/01(火) 21:18:31
だからそれってhtmlだろ jsからだとインスタンスいじれるんだし
親ウィンドウにピタっと揃える感じで子ウィンドウを置きたいんだが、 以下のコードだとウィンドウの枠の半分くらいがかぶる。 ActualWidthやHeightはウィンドウの枠も含めた値だと思ってたが違うのかな。 this.subWindow.Top = this.Top + this.ActualHeight; this.subWindow.Left = this.Left + this.ActualWidth;
this.ActualHeight->this.Height this.ActualWidth->this.Width にしてみればどうか。それでだめなら、コードを呼び出すタイミングが悪いんだろう。 コンストラクタではなくLoadedイベントハンドラに書いてみよう。 一応試してみたけど、うまく揃えて並べられたよ。
Aeroのボーダー周辺のシャドウをウィンドウ枠扱いしてるとか無いだろうな、まさかな
92 :
デフォルトの名無しさん :2010/06/01(火) 23:21:36
いや、そうであってもWindowに隙間ができることはあってもかぶることはないんじゃ・・
XAMLが分からんとは言わんが MSDNでサンプルコードを見たとき別々に書いてあるから頭の中でバインドするのが面倒くさい
デバッガで止めて値を確認してみれば一発じゃん たぶん
96 :
デフォルトの名無しさん :2010/06/01(火) 23:44:42
97 :
デフォルトの名無しさん :2010/06/01(火) 23:45:32
18 :名無しさん@どっと混む:2010/01/07(木) 09:26:06 ID:5NL2jyJpO
高根はMASKRでレイプ仲間募集するのやめたんだね
mixiで募集中か
21 :名無しさん@どっと混む:2010/01/10(日) 19:36:45 ID:FdRwgXUTO
風俗店やってるってことは高根社長は暴力団と繋がってるんだね
どこの組にいくらみかじめ料払ってるんだかw
23 :名無しさん@どっと混む:2010/01/23(土) 03:43:12 ID:Pdcv8aq0O
タカネ社長未成年に酒飲ませてレイプ
24 :名無しさん@どっと混む:2010/01/29(金) 18:16:06 ID:zMwtdkIsO
高根社長のレイプ趣味は病気だから治らない
25 :名無しさん@どっと混む:2010/02/01(月) 01:39:32 ID:uaH5mo2nO
前科者
26 :名無しさん@どっと混む:2010/02/09(火) 00:52:46 ID:JwGmN2cG0
>>25 容疑はレイプ?買春?管理売春?公然猥褻?薬物?脱税?詐欺?傷害?
28 :名無しさん@どっと混む:2010/02/14(日) 22:56:30 ID:lykq8x1VO
どこかのスレで人を死に追いやったと書いてあった
33 :名無しさん@どっと混む:2010/03/04(木) 12:49:19 ID:J8YxaRGO0
金がないって脱税がばれて追徴課税でも来たか?
せっかく脱税の隠れ蓑にプレジス営業してるのに残念だったなw
38 :名無しさん@どっと混む:2010/03/12(金) 21:09:53 ID:L0W4+sivO
首吊り首絞めプレイ大好き高根英哉
98 :
デフォルトの名無しさん :2010/06/01(火) 23:46:14
53 :名無しさん@どっと混む:2010/05/17(月) 13:14:06 ID:E/7OZVtz0
>>18 高根英哉blogでレイプ仲間募集中
私とともにマスクの女どもを弄ぶ仲間を募集する
急に思いついたら連絡をして、集まれるような仲間だ
だから、複数名募集するし、いついつという日時があるわけでもない
条件は以下のとおりだ
・SMを実践している、または興味がある
・マスクを用意できる
・都内でイベント参加できる
・イベント内容およびこの仲間を通じて知りえた情報を口外しない
・成人男子である
・携帯電話および携帯メールアドレスを私に公開できる
・酒が好きである
希望者は私宛にメールを送ってほしい
全員が参加できるわけでもないので、こちらの選択に任せてもらう
なるべく想いを書いてもらうほうがわかりやすいし
経験や顔写真も歓迎。
r
[email protected] [email protected] [email protected]
コピペ君って馬鹿だな、まで読んだ。
>>90 ありがとう。Loadedイベントハンドラの中で書いててWidth、Heightで試してみたけど
結果は同じだった。
デバッガで値見たけどWindowタグ内で指定したWidth,Height値と同じ値だったので
いけると思ったんだけど…。
それぞれ5pxずつ増やすとちょうどぴったりになる。
と、書きながらふとWindowタグで指定してたResizeMode="NoResize"を消して試したところ、
ちゃんとした結果が帰ってきた。
NoResizeモードだとなんでずれるの・・・
ふーん・・・変だね。 ResizeMode="NoResize"をつけてみても 私の環境(XPsp3 VS2008 TargetFramework=.NET3.5または3.0)では問題がない。 なんでだろうね・・?
あ、すんません、俺の環境は Win7 x64 VS2010 .NET4 Client Profileです。 ResizeModeの指定の有無で結果が変わるのでおそらくこいつが原因だと思うんだけど…。
Vista x86/.NET4でもResizeModeによる違いも問題もないなぁ
104 :
デフォルトの名無しさん :2010/06/02(水) 00:48:50
BeginAnimation で Margin を移動させている最中に Manipulation によって強制的に Margin を変更させても もともとの到達地点だったところまで Animation で移動させるには どのように記述したら良いのですか? WPF4 の資料が少なくて、よく分かりません。 Manipulation に関する情報もほとんどなく、 見つかる情報は全て情報が重複しています。 みんながみんな、同じソースをコピペしているのだろうな、 と思えてしまうほどです。 WPF4 使っている人でも使っていない人でも よろしくお願いします。
以下のコードで、テーマを適用しようとすると、コンパイルは通って、実行結果でもテーマも適用されるのですが、次のようなエラーが出て、デザイナーに表示されません。
ファイルまたはアセンブリ 'file:///C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\WPF.Themes.dll'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。
VisualStudio2008Proを使用して、WPF.ThemesとWPFToolkitのアセンブリ(.net3.5用)は参照しています。
上記のフォルダに、アセンブリのインストールが必要なのでしょうか?
<Window x:Class="WpfApplication1.Window1"
xmlns="
http://schemas.microsoft.com/winfx/2006/xaml/presentation "
xmlns:x="
http://schemas.microsoft.com/winfx/2006/xaml "
xmlns:themes="clr-namespace:WPF.Themes;assembly=WPF.Themes"
themes:ThemeManager.Theme="ExpressionDark">
<Grid>
<Button>ExpressionDark</Button>
</Grid>
</Window>
そのソースどっからコピペしてきたんよ
つーか、WPF.Themesを同じソリューションで作業してるんじゃ無けりゃ DLLはしかるべき場所にコピーしないと鳴らないと思うよ
>>108 入れてます。参照もしています。
>>109 参照設定でローカルコピーもTrueにしているのですが、実行するとテーマは適用されているのに、デザイナに表示されないのが不思議です。
いやだから参照設定はデザインとは別じゃない そのプロジェクトでできたWPF.Themes.dllを ...\Common7\IDE\にコピーしてVS2008再起動してみたら? うちではそれでうまくいったけど
なるほど、そういうもんなんですね。 うまくいきました。ありがとうございます。
Rating: No reviews yet Downloads: 1
もちろんPrism 4.0系列はキックオフしたばかりのDev status: Alphaです
4.0って2系と何がちがうのん? 英語が苦手なぼくちんに教えて下さい><
>>116 ・MEFの統合
・MVVMサポートの拡張
・WCF RIA Services、WCF Data Servicesなんかの取り込み
・design-timeサポート
MVVMパターンは今でもできるけど、リボン・ポップアップとかのサポートも提供していくっぽい
MVVMがわかりやすく説明してあるサイトかわかりやすいサンプルコード、教えてください
>>117 ありがとん!
MEF統合はありがたいのー。
design-timeがサポートされたら地味に便利 リボンとかポップアップとかダイアログはフレームワークレベルで対応してくれたらほんと使いやすくなるなぁ
チミたちMVVMはどこで勉強したの?Web漁ってもいまいち掴みどころがわからんちん
つかMVVMをチートシート並に纏めて欲しいんだよ 1200字ぐらいで MSDNとか数十キロバイトの文章でだらだら説明してナメてんのか
そんなことより必要な情報になかなか辿り着けないのがな。 Formsなんか既に情報が蓄積されてるし、前時代のAPIの知識も流用可能だから 大雑把な検索文句でも目的地には着くんだが。 WPFだと「まずどれを使うんだよ?」の答えに辿り着かない。 ドアに取っ手がない。
それは壁や
「DataGridのデザインとバインド何処に書くんだよ?」 「何処にでも」 ・・・ちょっと前まで、マジこんな問答だったよな。 一休さんでも敬遠するっつーの。
126 :
デフォルトの名無しさん :2010/06/03(木) 16:13:32
まあxamlにも書けるし、C#側にも書けるしで悩むよね xamlに書いた場合はほぼ性的になるだろうし C#に書くと動的だよね
イヤーン
とりあえずエッセンシャルWPF読んであとは適当に海外のブログぐぐればなんとかなる
129 :
デフォルトの名無しさん :2010/06/03(木) 17:25:36
WPFを何だと思ってるんだ システムの音量なんかWPFとは全く関係の無いこと
>>130 そういう台詞は、WPFが何なのかを語りながら吐くものだ。
C#とWPFを並列に語ってる時点で相手したくなくなるよね
>>125 敬遠球をランニングホーマーにするんだね
プレゼンテーション用のファウンデーションなんだから、サウンドだって何とかしてくれたっていいじゃない。
>>129 winmm は Vista 以降に対応してなかったキガス
Vista以降はMixerAPIかな
面白くない
ListBoxとかListViewに、画像ファイルをエクスプローラのサムネイル表示みたいに表示させるのってどうやればいいの?
データテンプレートを使う
>>139 ViewBaseから継承してGridViewのように使えばいいと思うよ。
Styleも必要な気が
>>139 ItemsPanelとItemTemplateのコンボでいけるよ。
例えばこんなん <Window.Resources> <asm:ViewModel x:Key="viewModel"/> <DataTemplate DataType="{x:Type asm:ImageItem}" x:Key="listBoxDataTemplete"> <Image Width="128" Height="128" Source="{Binding Path=FullName}"/> </DataTemplate> <ItemsPanelTemplate x:Key="listBoxPanelTemplete"> <StackPanel Orientation="Horizontal"></StackPanel> </ItemsPanelTemplate> </Window.Resources> class ImageItem { public string FullName { get; set; } } どっかXAML整形表示できるところないのかしら
使う時 <Grid DataContext="{StaticResource viewModel}"> <ListBox ItemsPanel="{StaticResource listBoxPanelTemplete}" ItemTemplate="{StaticResource listBoxDataTemplete}" ItemsSource="{Binding Path=Items}"/> </Grid> テスト用のViewModelは次のを使ってます public class ViewModel { public ImageItem[] Items { get; set; } public ViewModel() { this.Items = new ImageItem[10]; for (int i = 0; i < 10; i++) { this.Items[i] = new ImageItem(); this.Items[i].FullName = @"C:\Users\%USERNAME%\Desktop\test.jpg"; } } }
レスありがとう。 まだ荒削りだけどこんな感じでいけた。 StyleとかDataTemplateはおもしろいだけに、深みにハマりそうで怖い。 スニペット <Style x:Key="ThumbnailStyle" TargetType="{x:Type ListBox}"> <Setter Property="Padding" Value="5"/> <Setter Property="Margin" Value="5"/> <Setter Property="MinHeight" Value="70"/> <Setter Property="ItemTemplate"> <Setter.Value> <DataTemplate> <Image Source="{Binding FilePath}" Margin="5" Width="96" Height="72" /> </DataTemplate> </Setter.Value> </Setter> <Setter Property="ItemsPanel"> <Setter.Value> <ItemsPanelTemplate> <UniformGrid Columns="{Binding Yoko}"/> </ItemsPanelTemplate> </Setter.Value> </Setter> </Style>
コード書いてたらさらにレス来てた。
>>145 参考にさせてもらいます。
Prism和訳のヘルプがあったと思ったんだけどみつかりゃない…
>>150 サンクス!
たしかにちょっと古いな…
でももうPrismのサンプルみるの疲れた('A`)
ちょっとしたツールをWPFで作ってみたら糞重くて泣きそうになった。 これに適したアプリケーションってかなり限られてるね
マシンが非力か作り方が悪いんだろ 最初WPFでライフゲーム作ってみたときDrawingContextで毎フレーム描画してて糞重くて泣きそうになった
ちょっとしたツールに適した機動性っちゅうもんがあるねん
ちょっとした、ってのがどのくらいの物か解らんけど 何を作ろうとしたの?
ちょっとしたものならC#以外の選択肢もあるだばさ
WPF は最初、その複雑さに挫折し、それを乗り越えた次はパフォーマンスに挫折する。
Direct2Dベースの描画になってくんねーかなー
パフォーマンスに問題を覚えるほど複雑なUI作ってない ただウィンドウが開くのが異様に重いのだけは難点
複雑なUIよりもデータ量を多めにつっこんだ時のパフォーマンスの劣化が痛いと思う。
うちは重たいと思った事ないけどなぁ。 仮想マシンの上で動いてるからビデオカードは最低レベルだしIOもホストの1/2しか出ないけど起動がちょい遅いだけで快適。
重いって言ってるのは世代的にVista以前のマシンじゃないの
入力データの検証を行いたい場合はどのタイミングでおこなうべきでしょうか? ●UI側のイベントを利用して行う ●BindingのConverterで行う ●BindingのValidationRuleで行う ●BindingのUpdate系イベントで行う ●モデル側のクラスが値を代入された時に行う バインディングを利用した場合は上記のような場所で、 値の検証が行えると思います(他にもございましたら指摘お願いします)。 またWPFを学ぶ上で、MVCのようななんらかしらの モデルなどはございますでしょうか? よろしくお願いいたします。
TextBlockのレイアウト計算が遅すぎる 大量のテキストが表示されるようなアプリケーションを作るときは TextBlockを使わずに、独自のコントロールを作らないとやってらんないよ
DirectXだよ
166 :
デフォルトの名無しさん :2010/06/07(月) 07:55:43
たしかに大量にTextBlockを生成するよりLabelの方が軽いわ Labelより独自コントロールの方が軽いのかな
WPFアプリ内でDirectInputを使おうと思ったんですがうまくいきません。 参照設定にMicrosoft.DirectX、Microsoft.DirectInputを追加し、 Windowクラスに private Microsoft.DirectX.DirectInput.Device didev; を追加するまでは大丈夫なんですが、InitializeComponent();の 呼び出しのあとに、 didev = new Microsoft.DirectX.DirectInput.Device( Microsoft.DirectX.DirectInput.SystemGuid.Keyboard); と書くと、 System.Windows.Markup.XamlParseException はハンドルされませんでした。 Message="アセンブリ 'TrackX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' で定義された 'Window1' のインスタンスを 作成できません。 呼び出しのターゲットが例外をスローしました。 マークアップ ファイル 'Window1.xaml' 行 1 位置 9 にエラーがあります。" Source="PresentationFramework" LineNumber=1 LinePosition=9 と表示されて異常終了します。 トレースしてみるとそもそもInitializeComponent()呼び出しまでもたどり着いていないようです。 詳しい方どうか解決方法を教えていただけないでしょうか?
> マークアップ ファイル 'Window1.xaml' 行 1 位置 9 にエラーがあります。" こう言われてんだからまず確認してくれよ
>>168 脊髄反射ありがとうございます。
そこに問題が無いことは確信を持っております。
ちょっと試してみたよ。
>>167 は64bit環境じゃない?
MDX使うなら、x86にしないとダメだよ。
構成マネージャから新規作成でx86作ってみそ
>>170 おまえはエラーを出したことがない天才プログラマーのようだな
173 :
171 :2010/06/07(月) 13:28:17
あ、書き忘れたけど、AnyCPUからx86ね 2010からはデフォルトがx86になったけど2008以前だと AnyCPUだからね
>>170-171 レスありがとうございます。
確かに64bit環境です。エスパー感謝いたします。
ただいま構成マネージャ捜索中です。
もしかしてVisual C# 2008 Express Editionでは無いのでしょうか?
EEもあるけど、設定変えないと出てこなかった気がする オプションのツールのとこ。
えーと、メニューからツールのオプション選んで 左下の全ての設定を表示にチェック入れて 一番上のプロジェクトおよびソリューションの全般選んで ビルド構成の詳細を表示、にチェック入れる。 ツールバーに出てこなかったらツールバーも編集いるかも
>>175 何から何まで恐縮です。
ツール - ユーザー設定の中に構成マネージャを見つけたので、
めにゅーへ追加しました。
しかし、グレーになっており選択できないようです。
まだ頑張って調べ中ですが、取り急ぎ中間報告いたします。
>>176 見逃していました。その通りにしますと、グレーにもならず、
ビルドメニューに構成マネージャが新たに追加されました。
実行も問題なく出来ました。
数カ月の謎が一気に解けました。皆様本当にありがとうございました。
179 :
163 :2010/06/07(月) 14:08:59
たーすけーてくーださーいorz
うるせーな適当に答えるぞ ・値の検証 ValidationRuleでやれ そのためにあるんだろーが ・モデル MVVM
>>166 Labelの方が軽い、というのはなんか変だね。
TextBlockはFrameworkElementから直接継承していてずっと軽い。
LabelはContentControlであって、Stringを放り込んだ場合、自動的に内部にTextBlockを作る。
メモリリソース、実行効率から言ってLabelが軽いはずはないんだけど。
一体どうなってんのかね?
レイアウト関連のプロパティのデフォルト値がTextBlockとContentControlで違うとかじゃね
やっぱり遅さの元凶はDependencyPropertyとリフレクションなんかなあ。 ただでさえマネージドコードは遅いのに。
だろね。
そんなことがボトルネックになるようなアホなつくりにはしないだろ やってることがもともと非常に複雑だから仕方ない 仕様にハードの性能が追いついてないんだよ
186 :
163 :2010/06/08(火) 11:24:31
>>180 どもです、やっぱりValidationRuleでやったほうがよいのですね。
もでるについてはMVVMでググって見ます。
ありがとうございました。
まあDirectXとかは先に仕様ができてからハードがついてくるしなあ
グラフィックレンダリングに関しては、今後のハードウェアの性能が上がれば描画も早くなろうが・・。 ただ、バインディングやらレイアウト処理やらのマネージドコードで書かれた内部メカニズムに関してはCPUのコア性能があがらんことには どうしようもない。WPFのViewレイヤーを担当する部分は(基本的には)分散できずにシングルスレッドで走らすしかないから CPUのコア数があがってもどれほどの向上が見込めるのやら・・・。
今の実装がシングルスレッドだからって、将来にわたりマルチスレッドで走らないなんて事はないだろ。
いや、WPF開発チームは当初マルチスレッドも許容するようなGUIライブラリに組むことを考えて設計したけど あまりに複雑になりすぎたので断念した、という経緯がある。
またそのうちチャレンジするだろ。
COMとの連携なんかでSTAThreadにせざるを得なかったとか書いてあった希ガス
yet another doomed libraryてことにならんことを祈る。
さわってておもしろいけど、おもしろいでおわっちゃう
FlowDocumentって作成したスレッドからしか触れないんだな。 別のスレッドのオブジェクトを操作するには、BeginInvoke使えとか言ってるけど、 ビューアーコントロールはそんなもん使ってくれないし。 データーを裏でロードしたり、構築したりしたい事って結構あると思うんだけどな。 ググったら、MemoryStream使って渡す例があったけど、 実際にやってみたら遅くて本末転倒だった。
CPUコア数の増加に進んだ Intel が悪い。 本当なら今頃 16GHz のCPUが出ている筈なのに。
どこのCPUメーカーもそうなんじゃない?結局技術的に頭打ちになってるんじゃなかろうか・・・。
ネタにマジレスされても困るが、並列プログラミングの難易度の問題から コア数増えてもクロック数あがらないとあまり効果でないってのは分かりきったことで このままコア数増え続けていっても有効活用できないだろうし、CPU以外の 部分に足ひっぱられるだろうしで、何かしらの打開策はいるんじゃなかろーか。
WPFもCOMコンポーネントを捨てればマルチスレッド許容できたが 現実問題として捨てられないから妥協した、みたいな書き方だったよね マルチコアに進んだからシングルコアの性能が上がらないんじゃなくて 逆じゃないっけ。 シングルコア性能向上の限界が見えたからマルチコアに進んでるんじゃないの
そのうちCPUは太陽表面並の温度になるってギャグがあったなあ
単位面積あたりの発熱量が原子炉を越えたじゃなかったかな?
Prismでアプリケーション設定やユーザー設定を、モジュール間でやりとりするのってどんな方法がありますか? Unityコンテナに登録して、各モジュールでインスタンスを取り出すとかかなって考えてますが、いいやり方ってありますか?
204 :
デフォルトの名無しさん :2010/06/09(水) 23:38:58
メインのウィンドウから、別の Window を ShowDialog() で呼び出し、 モーダルとして表示しています。 当然、そのWindowの×ボタンをクリックすればWindowは消せるのですが、 Windowの外の領域をクリックすることでもそのWindowを消したいです。 WPF用デバッグツール snoop なども使ってみましたが、 領域の外をクリックしたことを取得する方法は分かりませんでした。 可能でしたら、手段をお教えください。
フォーカスがなくなったよイベントでCloseじゃだめかのう。
最前面じゃなくなったよイベントがあったようななかったような
モーダルっつってんだろクソどもが!
209 :
204 :2010/06/09(水) 23:56:02
>>205 私も同じことを考えたのですが、
モーダルの場合はフォーカスを失ったとは見なさないようです。
>>206 調べてみます。ありがとうございます。
>>207 最前面かどうかの判定では難しそうです。
モーダルの場合でそのような挙動をするダイアログボックスはあまりみたこがありませんが・・・ モードレスへの変更を検討すべきではないかと思います。
非アクティブになったら消えるウィンドウがモードレスかモーダルかなんて 利用者から見て違いあるかな?
212 :
204 :2010/06/10(木) 00:15:59
>>210 アドバイスありがとうございます。
現在、以下のようなストーリーを考えているのですが、
モードレスでも記述かのうでしょうか?
・メインウィンドウから他のWindowを表示
・メインウィンドウは Window が閉じられるまで操作停止
・Windowには OK と Cancel があり、DialogResult でいずれかを受け取る
・OK or Cancel により、メインウィンドウにてその後の動作を変える
よろしくお願いします。
213 :
204 :2010/06/10(木) 00:17:25
すみません、追記です。 Window の外をクリックした場合も、(例えば)Cancel であると見なしたいです。
ユーザーエクスペリエンスの破壊を目的とするわけか
WPFで簡単なもぐら叩きを作っているのだが、 1分間Gridがクリックされなかったらメッセージボックスを 表示することってできる
216 :
デフォルトの名無しさん :2010/06/10(木) 01:53:52
>>215 スタートしたあと1分間のカウントアップでもカウントダウンでもはじめて
クリックがあればカウントターをリセットすればいいだけちゃうの?
217 :
215 :2010/06/10(木) 02:12:26
カウンターリセットとかどうやんの? WPFのタイマーっつーと DispatcherTimer を思い出すのだが、 この Completed で MessageBox呼ぶようにしても Intervalのキャンセルなんてできるの?
219 :
デフォルトの名無しさん :2010/06/10(木) 02:25:49
>>218 WPFのタイマーはよくしらんが標準のタイマーをうまくコントロールできないなら
タイマーから一定サイクルで呼び出される関数で自分の用意したカウンター
を+(もしくは-)にしてってやればいいだけちゃうの?
タイマーとしてみるよりは一定サイクルを刻むクロックとみなして・・・
>>218 カウンタっつーか普通にタイマを一度止めて再開すれば良いんじゃね?
みなさん、WPFをどうやって勉強してます?MVVMとか。 やっぱり、CodeProjectかCodePlex?
このスレ見て
3割質問、1割回答、6割がただの煽りのスレで勉強とな
ヘルプ見りゃ大体判る
でも、WPFって大規模開発でしか使われてないのかも。 数人で作るんだったら、フォームで作っても問題無いような 仕様(それか予算)しか出てこないでしょ。 このスレでも出てきたPrismとか、そんな感じ。
WPFのTextBlockやListViewが使いたくなるような要求は結構出てくるよ 「WinFormsだと結構手間がかかるんですよねー」 「でも、WPFで1から作る予算はありませんねー」 で、結局仕様には盛り込まれず、WPFは使われないんだけど。
しかし、この先GPUによるアクセラレートはWPFでしか行われなくなりそうなのに、 いつまでもFormってのもなあ。
今度、1から作るプロジェクトが始まるんで、WPFで作ろうかと調査中。 MVVMとか、他人に分かるんだろうか‥‥
229 :
デフォルトの名無しさん :2010/06/10(木) 10:58:14
>>228 推し進めるくらいなら布教してまわればいいじゃんw
それができないならwinformでやるしかないような
>>229 布教とかめんどくさいじゃん。
欲しいのは金と技術であって、正直、他人のことに興味無い。
231 :
デフォルトの名無しさん :2010/06/10(木) 11:03:40
このスレの状態とネットで検索した状態を見ればおおよそ回りの力量とか状態は把握できそうな物だと思うが・・・
>>228 とりあえず採用する前に、パフォーマンスの評価だけはやっといた方がいいよ。
予想以上に遅いから。
このスレって、本職の人多いの? 4割が学生、4割がサンデープログラマー、1割がマイクロソフトの人、 1割が通りすがりの人、ぐらいにしか思ってないんだけれど‥‥。 うちみたいなフリーダムな場末の会社じゃないと、仕事で2chとか無理でしょ。
>>232 そんなに重いかなぁ。
SIだから、動作環境指定できるので大丈夫。
表示されてるコントロールの量が多くなるとすんごくトロくなるね
236 :
デフォルトの名無しさん :2010/06/10(木) 11:09:56
>>234 ああ糞SI様か
下に負担だけはかけないでください
新しいことやるならそれなりに予算をください
>>236 嫌なら下りてください。
代わりはいくらでも居るんだから〜。
238 :
デフォルトの名無しさん :2010/06/10(木) 11:12:53
SIが目をつけるってことはWPFは糞でいいな Javaなんかも実際そうなってしまったし
Javaはまだまだ使われてるだろ? ベンダーロックイン出来ない公共系はJava指定ばかりだ。
240 :
デフォルトの名無しさん :2010/06/10(木) 11:19:15
Javaは第2のCOBOLになりそうだな
それは、長い間、金になるってことでは?
VB6.0からの移行は.netじゃなくて、Javaにする例が結構多いみたいだな。
243 :
デフォルトの名無しさん :2010/06/10(木) 11:25:12
>>241 金にもなるけど未だに使うのかよとやっかまれつつ
AndroidやiPhoneでもXAMLが使えればなあ
html5でいいよ
AdobeがFlashのHTML5コンバーターだせばいいんじゃね?
247 :
デフォルトの名無しさん :2010/06/10(木) 11:45:00
Flash以上に中身丸見えだけどな
WPFは単純に重いというより、何をすると重くなるのかが知られてないんだと思う WinFromsだって、大量にコントロールを貼って、節操無くInvalidateしまくったら重いだろ WPFの場合、測定と配置の仕組みを理解していないと 再測定と再配置の嵐で遅くなる
>>248 そこんところをやさしく解説してください
SharedSizeGroup は重くて使えないよねぇ。下手すりゃ、整列してるのがアニメーションで見られるぐらい。
結局カスタムレイアウト使うことにしたが、何かコツあんの?
>>248
>>234 端末200台あるような場合でも最新のハイスペック揃えってくれって言えるのはSIer様だけだよ、まったく。
TPOというか、コスト削減につなげるためにシステム入れるってことちょっとは弁えて欲しいぜ。
>>251 今時、WPFが軽く動く端末の金額なんて、人件費に比べれば誤差だろ。
そこでコスト削減とか訳のわからないこと言っている企業は、
潰れるべき、っていうか、もう延命しようとも詰まれてると見るべき。
いくらハイスペックにしても、シングルスレッド性能は上がらないから、 遅いままなんだけどなあ。 GPUもあんまり効果無いみたいだし。
つーか、1から作るって書いてあるじゃん。 セキュアな状態が必要だから、ネットワークから敷き直すの。 だから、端末代なんて誤差。 別に、SSLでも良いと思うんだけれどね。
つーか、WPFが遅いって言っている人は、自分の技術の無さを自覚するべき。 駄目な奴は何を作っても駄目。いつの時代も遅いって言っている。
いつまでも他人のせいだよな お互いにw
>>256 FlowDocumentが重いんですが、速くする方法を教えて下さい
>>250 再配置の連鎖が起きないように気をつけるだけだよ。
SharedSizeGroupなら、
動的にサイズが変わるコントロールや動的に生成されるコントロールを含む部分には
SharedSizeGroupを適用しないように気をつける。
それと、カスタムレイアウトは別に悪くないんじゃない?
どうせ簡単に作れるんだし。
260 :
デフォルトの名無しさん :2010/06/10(木) 12:45:49
>>256 余計なこといわなきゃいいのに
駄目と切り捨てた以上はテクニックを披露していけよ
そしたら認めてあげるわw
つーか、まず、その遅いというソースをうpするしかないと思うんだが‥‥。
MSDNや書籍を含めてろくなドキュメントが無いんだよな どれもMSDNのチュートリアル止まり 残念なことに、 配置と測定に関してはMeasureOverride、ArrangeOverrideで検索して 断片的な情報を集めて行くのが一番早い
つーか、NDAとかでソースが出せないのだったら、 CodeProjectで参考にした記事でも良いよ。 そっから検討すれば良いから。
どうも、FlowDocumentのHyperlinkが、上をマウスカーソルが通過するだけで 全体の再配置が起きてるようで困ってる。 色変えや、アンダーバーがいけないのかと思って変わらないようにしてみたけど、効果なし。 継承してOnMouseEnterを潰してみたけど、効果なし。 カーソルがリンクの上を通過するたびに一秒くらい固まる。 同等な物をhtmlで表示した場合は何の問題も無いのになあ。
怪しいコントロールがわかってるときは、 そのコントロールをカスタムレイアウトの中に入れて、 強引に配置動作をカスタマイズしてしまえばいい しかし、標準のTextBlockですら変な挙動を見せるので この手法が役に立つという始末 フレームワークのセンスはいいけど、 個々のコントロールに品質は悪すぎですよ・・・
266 :
デフォルトの名無しさん :2010/06/10(木) 13:07:26
htmlなどをヒントに作ったであろうxamlがなぜここまでむごいのか
WPFは重くないって人は
・恵まれたハード環境でしか動かしていない。
・ラベルとテキストボックス貼っただけのしょうもないものしか作ったことがない。
・ただの煽り
のどれかでしょ。
>>248 みたいに何かをすると重くなる、という言い方ならともかく、
ただ一言重くないなんてただの無知。
StackPanelにFlowDocumentを持つUserControlを100個近く表示させてるけど重くないよ
Atom270で開発しているおれに謝れwメモリは2GBだけど。 開発環境はおもたいけど、WPFアプリケーションはまあそこそこのレスポンスは発揮してますよ。 ぬるぬるはうごきませんが破綻しないレベルです。
まぁ、速度に鈍感というか寛容な人もいるよね。
「恵まれたハード環境とWPFがあれば多少無茶をしても重くならない」 そう思っていた時期がありました 実際は明文化されていない作法みたいなのがあって、 それから外れるとどんなハードだろうと遅くなる
>>271 > 明文化されていない作法みたいなの
これから改良される(変わる)可能性があるから明文化されてないんですかね?
具体例を示して、この部分ハードウェアの性能に影響を受ける、と言うならともかく 単にハード云々を言っても説得力は無いわな
>>272 なんか極端すぎてあんまり参考にならない例だな
MSのライブラリではいつもの事なんだけど、 シンプルな書き方と最良の書き方が一致してないんだよね シンプルな書き方 = 最良な書き方 って発想はRoR以降に広まったものだから 2001年から設計されたWPFに求めるのは酷かもしれないけどさ
リストボックスに単純に1万も項目追加したら、 WPFに関係無く重くなるんじゃね? そもそも、そんな設計してる時点でドキュソだろ。 新卒しかしないって。
>>278 ScrollViewer.CanContentScroll="False"
を消せば1万行追加しても早いわ。
言い訳ばっかりしてないで包茎の皮切り取って来い、チンカス。
だいたい、過負荷テストぐらいしないのかよ。 テーブルに100件ぐらい追加して「パフォーマンスに問題なし」とかほざいて納入しては 数年後に100万件超になってきてパフォーマンス障害が出たので何とかしてくれ、なんてなきつくアホ多すぎ。 どうせSIer様は買い替えの時期です、とかDQNなこと言うんだろうが。
Formsでいう、SuspendLayoutがWPFに無いから、 無くても大丈夫なように設計されてるのかと思ったら、 全然そうじゃなかったという・・・
WPFは常時SuspendLayoutしてるようなものだよ。 ただし、WinFormsとは重くなる原因が異なるので WinFormsだと○○すれば軽かった みたいな経験は通用しない。
まぁ大抵の場合WPFを止めるという選択肢しか無いけどな。
>>280 そりゃ要件定義の段階でその程度の仕様要求する方が悪いぞ
そんなところまで面倒見るわけねえだろ
典型的なおいしい仕事とカモの客だな。 そういう所がもっと増えればよい。 無茶も言わなくなる。
相変わらず人のせいですね お互いに
>>284 絵に描いたような典型的なSIerさまでワロス
>>280 パフォーマンステストは、100万件はやるだろ、普通。
1億円ぐらい貰っているならば。
100万件がDBのある種の性能閾値だからな。
つーか、データの件数が何百万なのかは関係無いだろ。
WPFの話なんだから。
ビジネス層で何百万あろうと、UI層へそのまま持ってくるのが
頭おかしいって話。
百万件を同時に表示して処理できるユーザがいるのかよ。
件数が多いですが表示して良いですか?さらに絞り込みますか?
てな画面遷移を入れれば、済む話だろ?
そこで、必要に迫られて表示OKを選ぶ客は、
何分待たされても文句言わないよ。
>>287 何か文句があるのかよカモ
ツーといえばカーで作って欲しいなら自社開発してろ
あれだ、Googleの検索結果に”約1,000,000件”と表示されていたとして 実際に100万件表示されてるかっていう
そうカッカするない
なんで100万件の一括表示なんて変な話になってんの? 画面数ページレベルの表示でも十分重いのに。
>>288 その「多いですが表示して良いですか?」の閾値が多いか少ないかの話だろ。
「100万件」はテストの話で出しただけで、WPFとは関係無いところで言ったのは確かだが。
SQL SERVER Management Studio じゃテーブルの直接編集が「先頭200行表示して編集」なんてメニューになりやがった。
>>289 生憎とSIerさまとのお付き合いはさせて頂いておりませんw
100万件の話は、データ量増えてきたことを全く考えずにインデックスはらなかったり腐ったSQL書いてる奴がいるって話で、 それと同じで、たかだか、数十行のデータ表示させて重くないとか言ってんじゃねーよ、と言いたかっただけだ。
なんかWPFのパフォーマンスに問題がある事がばれると、 凄く困る人がいるみたいだな。 ロクなテストもせずに、導入決定しちゃった人か?
数十行のデータ表示させてってのは違うな。 実際、Virtualizing が効いてれば1万行でも軽いわけで、「たいした処理もせずに重くないって言ってるだけ」と。
だから、重いと言っている奴はソース出せと言っているのに。
>>276 は1万件で重いって言っているし、
>>292 は数ページで重いって言っているし。
少なくとも、数ページで重いとは全く思わないが。
つーか、全世界で高給取りのプログラマで使っている奴がいるのに、
日本で日本人しか使わないコード書いている零細ソフトハウスが、
ソースも無く重いとか言っても、低学歴低所得の僻みにしか聞こえんだろ?
せっかくソース提示してやったのにアンカーまで出しておいて無かったことにすんのなw 軽い処理だけ走らせてほら重くないでしょ、ってかww メッセージボックス表示してGDIのどこが重いんだ、DirectXいらんでしょ、とか言ってるレベル。 WPF は重いけど、重くならないような仕掛けや仕組みを提供してるだけ。 そこから外れる(しかも簡単に)と途端に重くなるわけだが、それを知らない無知だけが重くないと主張する。
仕掛けや仕組みを知らない無知が重いと主張してるとも取れるな お互いに相手を非難するばかりで自己を省みないね
いい感じでまとまったな この調子で重くなるパターンと改善策をどんどん出して欲しい
さっぱり言いたいことが分からん。 あのサンプルコードに意味あるのか? しかも1万件って。 普通に業務で使おうとしたら、1万のオブジェクト生成するだけで重いと思うが。 それに、ググったら日本語ですらTreeViewを使う解法出てくるじゃん。
>>301 だからなぁ。
とりあえず俺の示したサンプル動かしてから言ってくれる?
動かしもせずに、WPFは重くないとか1万行は重いとか言ってるのお前だろ。
俺は、サンプル示して、WPFは場合によって重いけど、1万行でもやり方次第で軽く表示できる、と示したの。
それがどうして
>>299 やら
>>301 の結論になるのやら。俺が意味わかんねーよ。
だいたい、何を嫉むんだよ。
お前の言うその「全世界で高給取りのプログラマ」様でさえ「200行で限界」だと認めたのに。
もう1万行じゃなくていいから、
>>276 のソースを1000行とかにでもして動かしてみろ。
ネットブック程度のマシンならカクカクするから。
3000行ならネットブックじゃなくても重い筈。1日の受注が3000明細あるとこぐらいあるだろ?
あのままだと、受注明細表出したら重くてつかえねーわけだ。
ぶっちゃけページャー使って30件ぐらいしか一度に表示しないと思うの 10万record/dayだとしても
「重くならないように作る」のと、「重くない」の区別つかない人だったのね、ごめん。
>>298 最後の行が矛盾してるんだよ
> そこから外れる(しかも簡単に)と途端に重くなる
これには同意する。
だが、簡単に外れるなら、無知な奴が実際より軽いと誤認識する可能性は低いだろ?
だから、根拠もなしに「重い」と言ってる奴と「軽い」と言ってる奴がいれば、
「軽い」と言ってる奴は仕組みをよく理解してて
「重い」と言ってる奴は仕組みをあまり理解していないのではないかと考える。
視点が違うんだな 俺はベンチマークが目的じゃないんで、 作法に沿ったプログラムで十分な速度が出る事が重要なんだ 仮想化によってWPFの利点が損なわれるなら、 仮想化OFFの性能も考慮する必要があるが、そうじゃないだろ? 下手なプログラムが遅かろうがどうでもいい
自称玄人は黙ってろってこったな
30件しか表示しないとか言ってる馬鹿の目の前には 2chの板一覧とスレッド一覧は無いのかな
10万件しか表示しないとか言ってる馬鹿の目の前には 2chの板一覧とスレッド一覧は無いのかな
>>306 >だが、簡単に外れるなら、無知な奴が実際より軽いと誤認識する可能性は低いだろ?
>>267 いや、なんか疲れた。視点が違うのは間違いないな。
でも、日本のプログラマの8割はその下手なプログラムなんだぜ。
700スレくらいかな 100万よりは30の方が近そうだね
日本語変になっちまったよ。
フリーザの戦闘力並
極論同士の無意味な熱いバトルです。
こんな時間にスレの勢い伸ばせるなんてうらやましいです。
書いた本人がDBテストの話でWPFの事じゃないと言ってる100万件にいつまでも拘ったり、 30件しか表示しないとか現実離れした事言ったり、 なんかすごいWPF擁護に必死だね。
仮想化でどうにかなるような100万件の話じゃなくてさ、 WPFでパフォーマンスを追求したけど結局ダメでした って話は無いの? WPFのせいでプロジェクトが頓挫したとか、酷い製品ができあがったとか そういう話が聞きたい。
採用されても無いから失敗した話も無いね
ハハハ WPFそのもののプロジェクトが頓挫しそうじゃないか
だれうま
WPFが停滞してる原因がsilverlightに人員を取られたってのが何ともな・・・ もっとマシなUIフレームワークは無いものか
作る側からしたら、WPFとSLはほぼ水平に移行可能だろ? まず、1年目はプロトタイプを少ない拠点で展開し、 ユーザからのフィードバックを受けて好評なら2年目でWeb化。 というプロジェクトの場合、1年目も2年目もお金を沢山もらうけれど、 内部のコードは共通です、みたいなー。
このスレが伸びてるのはWebに代わってFormの時代がくる予兆か
ゲームのグラフィックなんか永久にWEBでは実現できないからな
Brian Noyes
途中で送信してしまった。気の済むまでなじってくれ Brian NoyesってWinFormsで二冊本出してWPFでもMSDNに寄稿までしてる人が 2, 3年ってよっぽどだなw
>>325 HTML5&Canvas&JavaScriptでそのうちできるよ。
レンダリングにハードウェア支援を行う予定だし、
JavaScriptはホットスポットを動的コンパイルで
ネイティコードを実行する方向にいってるしね。
一世代前くらいの携帯ゲーム機並みにはなると思われ。
また、低学歴低所得が枝葉末節に拘っているな。
>HTML5&Canvas&JavaScript 造る側からしたら地獄だな…('A`)
>>331 ちゃんとしたデバッガがないと厳しい。
あと誰から各ブラウザの挙動を吸収してくれるライブラリかいてくれないとね。
実装の中身が見えちゃうのがいやだなあ・・・。
ソースがみえて本当に困る人が出てくれば、暗号化の話とか、
またでてくるかもね(MSがやってメジャーにならなかったけど)。
現状C#でWPFよりよくできたGUIライブラリってないよ。 いまさら糞ダサいFormsなんかさわってられるかっての
まともに触ってないからそんな事が言えるんだよ
WPFはGUI組み立てるのにいいと思うけど、そのアプリを使う側のこと考えたらそんな良さどうでもいいわけで
見た目が綺麗なものが作れるというのはあるだろ WinFormsでも頑張れば同じように綺麗な見た目やアニメーションもできなくはないけどやっぱりWPFより重くなるよ 使う側のことを考えるならもちろん直接DirectXで作るのが理想なわけだが
337 :
デフォルトの名無しさん :2010/06/10(木) 22:13:24
javascript変態だなぁ、webプログラマの苦労は絶えない html5のcanvasでGPUの支援があるのって今はIE9くらいでしょ、他のブラウザも追随しそうだけど時間がかかるだろうなー普及率の問題もあるし そのうちゲームはDirectXじゃなくてIE9を同封して配布するのかな
338 :
デフォルトの名無しさん :2010/06/10(木) 22:17:22
スレチ
Formは、コモンコントロールのラッパーによるダサさがあるし、 WPFは、突貫で作ったような、コントロールの設計の甘さがあるし、 どっちもどっち。
好きな方使えよってことだね とりあえず相談室にでも消えてろ
WPFのWindowのWidthとHeightが枠の部分を含めているのに違和感がある。 枠の部分の面積はWindowsのテーマに依存する部分で、さまざまに変化してしまうからデザインを考えたときに使いにくい 例えば枠がめちゃくちゃ広いテーマにしたらWindowの中が全て枠になる可能性もある
なにか問題でも? 枠内のはWindowのContentに入れた要素で調べられるし。
調べられるから何?
米Microsoftのやることに間違いはないんだよ
たまにMSDNが間違ってるのは擁護できない
世間はiPadで湧いてるけど、 MicrosoftのOrigamiってどうなったの?
WPF早く滅べ
>>344 枠を含めない領域を指定できるから、枠だけしか見えないウィンドウが作られる心配はない。
>>348 WPFが滅んだとして次はなにがくるんですか?
XULとか?
JavaFXですね
WPFはUIのフレームワークとしては柔軟性とかよさげだけどパフォーマンスが微妙だ・・・ いまのOS Xとかはどんだけナイスなフレームワークになってるんだ?
WPFアプリが起動しなくなる度に OS再インストールするのに疲れた
4年ぐらいWPFで開発してるが聞いたことないな
もしかしてXP? XPの時代にはDirectXがまともに動かない、腐ったグラフィックドライバが結構あったからなぁ・・・
パフォーマンスというか、起動時間がネックだな。 起動時間以外は工夫次第でどうにでもなる。 何が原因で起動がこんなに遅いのやら。
2回目からは速いというか遅くはないよ
速いマシン使っていればそんなには遅くないかも
何回目だろうがWinFormsと同程度の速さにはなって欲しいな。 VSTOでExcelのプラグイン書いた時に、UserControlをWPFにするのとWinFormsにするのとで 起動速度が結構違って笑っちゃった。 それでも最初期のWPFと比べればだいぶよくなったけどさ。
SilverLightをデスクトップで使えるようにしたら 軽くなるんじゃね?
362 :
デフォルトの名無しさん :2010/06/11(金) 02:42:15
>>361 それ4だよ
toolkitの日本語版がこないのでやってないが
AIRみたいにブラウザアプリをインストールという形で
ローカルでも使えるようになるとか
SLがこんな感じなのでもしかするとWPFって本当に・・・
WPFは自分が作る分には楽でいいが 他人が作ったのは重くて使いたくないな
それはあるな。 SLのOOBの方がパフォーマンス優れてるなら置き換えてもいいんだけどWPFの方がVS開くだけでいきなり始められるから導入が楽でSLには手が伸びない感じ。 これからどうなるか。
VS2010には最初からSL3が入ってるぞ ExpressもVWDには最初から入ってる
>>362 3でもブラウザ外実行はできるけど使い物になるのは4から
4はCDなどからのローカルへのインストールもできるので
Silverlightで作れる範囲のものならほんとにWPFいらなくなった
VSのIDEもSilverlightに置き換えて 軽くならないものか
SLもWPFもコード的にはほぼ共通な実装が出来るだろ?
SLがどうとかWPF不要とか、そんなこと言ってるの日本人だけ。
http://compositewpf.codeplex.com/ ローカルファイルに自由にアクセスしたいならWPFしかないし、
Webアプリにしていきなりブラウザ閉じられちゃったりしたら、
困る業務アプリだってあるだろ。
逆にユーザのアプリ導入の敷居を下げたいならSLの方が良い。
客の要求に合わせるしかないだろ?
>>368 重くなるよw
レイアウトが複雑なものをSilverlightで作ると糞重くなる
WindowsFormsHostでWinFormのwebbrowserを使うと、 スクロールバーがクラシックスタイルになってしまうのですが 見た目を変えるにはどうしたらよいのでしょうか?
System.Windows.Forms.ApplicationのEnableVisualStyles
ありがとうございます。 Styleプロパティになんか設定するのかと思って調べて行き詰まってました
WPF版のWebBrowserがあるのに、 なんでWinFormの使うの?
( ゚ρ゚ )<WindowsFormだいすきあうあうお〜
ここを一体何スレだと
Broserのないバージョンをサポートするためだよ
Hostを使うとスクロールバーに問題なかったっけ?
>>374 HTMLを取得してフォームに値を入力してポストするみたいなのが面倒&やり方が分からないからです。
調べたらwinformのブラウザ使える方法があったのでそれでやろうかと。
スパムアプリか。
いや作りたいのはブラゲのBOT
犯罪者乙
ConverterParameterって依存関係プロパティじゃないからバインドできないので、 MultiBinding使うのが定石?っぽいんだけど、 Converterに依存関係プロパティを実装して、そいつにバインドさせるって問題ある?
そろそろSilverlightにもDrawingContextを用意して欲しいなぁ。 任意の図形を単一のVisualに収める仕組み、まだ無いよね。 Controlも全然足りない。Menuすら無いってどうよ。
>>384 INotifyPropertyChangedじゃいかんのか。
>>385 DrawingContextはDrawing作ってるだけだからなあ
Drawingだけサポートした方がいいと思う
DrawingContextは勘違いしてSystem.Drawing.Graphics感覚で使う奴が必ず出てくるし
>>387 DrawingContextのほうがコードであれこれできるから自由度高い。
BitmapCacheもあるし、昔ほど毛嫌いする必要もないんじゃない。
>>386 なんでINotifyPropertyChanged?どう使うの?
>>385 Menuは確かに欲しい
折角OOBに力を入れてるんだし、基本的なコントロールは一通り欲しいよな
WPF使ってたらメニュー要らないと思うようにならない? メニューのあるデザインは間違いだとさえ。
メニューってたしかにそんなに重要じゃないかもなあ メユーからコピーだの貼り付けだの選んで使ってる人なんていないだろし
キーボードのみで操作出来ないと気持ち悪いっつーかストレス溜まるっつーか まあ一般ユーザは逆なんだろうけれど
395 :
デフォルトの名無しさん :2010/06/12(土) 08:28:29
タッチパネルなどを意識するのであればwinodwsのようなメニューは 捨てるべきだなあ どっちかといえばUIはゲームに学ぶべきだと思う
しかしメニューを捨てたOffice2007は激しく不評
アイコンを大量にずらずらと並べるよりは、メニューの方がマシだと思う しかしSilverlightだと、Altキーを押しても SLアプリじゃなく、ブラウザのメニューバーにフォーカスが移りそうな気がするがなw
398 :
デフォルトの名無しさん :2010/06/12(土) 08:42:56
>>396 そりゃofficeそのものがタッチ向けのソフトじゃないからだろw
中身で考えろw
つーより、何で急にタッチパネルの話になったんだ あんなもん、業務アプリじゃとても使い物にならんと思うが (ハードウェアからして、専用のが必要だし)
VWD2010EE+SL4Tools と、 VC#2010EE でツールボックスを比較してみた 間違いは有るかも ■共通 [ ポインター ][ Border ][ Button ][ Calendar ][ Canvas ][ CheckBox ] [ ComboBox ][ ContentControl ][ DataGrid ][ DatePicker ][ Ellipse ][ Frame ] [ Grid ][ GridSplitter ][ Image ][ Label ][ ListBox ][ MediaElement ] [ PasswordBox ][ ProgressBar ][ RadioButton ][ Rectangle ][ RichTextBox ][ ScrollBar ] [ ScrollViewer ][ Slider ][ StackPanel ][ TabControl ][ TextBlock ][ TextBox ][ TreeView ][ Viewbox ][ WebBrowser ] ■WPFのみ DockPanel DocumentViewer Expander GroupBox ListView Menu Separator StatusBar ToolBar ToolBarPanel ToolBarTray WindowsFormsHost WrapPanel ■Silverlightのみ AutoCompleteBox DataPager HyperlinkButton MultiScaleImage DomainDataSource
Separator無いのかよ・・・
SLはListBox有るのにSeparator無しか
SL専用のコントロールで羨ましいのは、MultiScaleImageくらい?
メニュー・ツールバー・ステータスバーは アプリのひな型としてとりあえず入れるものだと思ってる。 作ってるアプリに最適なUIが見えてきたら不要にできるかもしれないけど 一番最初はどんなUIが最適かわからんものだ。 とっかかりとして便利なんだよ。
> ■WPFのみ > DockPanel、Expander、GroupBox って、おもいっきりよく使うところじゃねーかw Silverlight使いはどうやっているんだよw
WPF標準のコントロールやパネルってWPFとC#だけで作られてるの? どういうつくりなのか想像もつかん
>>405 Silverlight Toolkitというものがあってだな。
Silverlight、メニューもツールバーもステータスバーも無いのな。 まあTextBlockとかで代用出来なくも無いが…。
>>406 極端な話、マウスやキーボードなどによる入力の検知と
最終的な画面への出力さえあればなんでもできる
そこだけはもちろんプラットフォーム呼び出しに頼って
あとは全てマネージコード
DockPanelなんかドッキングウィンドウなUIでない限り要らないだろ そこまで大袈裟なUI作るならDockPanelの有無なんか些細な問題だし Silverlightでそこまでやらんでしょ
>>410 むしろGridだと大げさすぎてパフォーマンスに懸念があるところで
DockPanelやStackPanelのような軽量レイアウトをつかうんだけどなぁ。
WrapPanelくらいは有っても良いかもなあ。 Webブラウザは、クライアントアプリに比べてウィンドウサイズを動かされる率も高いだろうし。
ObservableCollectionにRectangleの位置、形状をもったオブジェクトをもたせて それをxamlで参照してRectangleを描画させたいのですがどうしたらいいですか?
>>413 カスタムのItemsControl作らないと無理じゃないか。
そーですかorz 俺には無理ですか><
ObservableCollection<RectangleInfo>みたいなこと?自分なら 1. ItemsControlのItemsSourceにObservableCollectionをbind 2. ItemsControl.ItemsPanelにCanvasを入れIsItemsHostにする。 3. RectangleInfoのDataTemplateを定義してRectangleに変換 でできそうな気がする。そんなことやったことないけど
>>416 試してみたがダメっぽい。
ItemsControlをそのまま使うとItemのコンテナはContentPresenterになるんだけど
コンテナの縦横が0だから表示されないという事態になるっぽい。
418 :
デフォルトの名無しさん :2010/06/12(土) 21:55:59
>>417 あぁそうか、Canvas.Topとかで指定しないとダメか。
んじゃ、Rectangleの代わりにPolygonにして座標直接指定か、
ItemContainerStyleでCanvas.TopなどをBind。
気になって超適当な検証コードかいて行けた。
ItemPanelをCanvasにすればいいんじゃないの
ありがとう たすかりました
読み込んだ値によって、使用するConverterを切り替えるにはどうしたらいいですか? たとえば、 設定値が1の場合:EvenConverter 設定値が2の場合:OddConverter といった感じに切り替えることがやりたいです。 もしくはConverter内で、設定値が1の場合、2の場合と処理を分けてもいいんですが、 その場合、Converterにどのように設定値を渡せばいいんでしょうか?
読み込んだ値って何さ 設定値ってどこの何さ
>>423 複数の引数渡せるコンバーターがあったような
何を目的としているのか分からないがDataTriggerは使えないだろうか
>>425 固定値ならConverterParameterで渡せる(Bind不可)し、
IMultiValueConverterもある。
>>421 ItemContainerStyleという手があったか…
些細なものでもひとのコードを読むのは勉強になる。
結構XAMLでは苦労するよなあ。 デザイナとプログラマの担当部分の分離なんてやっぱり無理なんじゃないか? もうデザイナにはStyleだけ作ってもらうようにするしかない。
デザイナにも高いレベルでXAMLを理解してもらうしかない。 Webデザイナだってhtmlとcssを理解しているんだから 同じレベルでxamlを理解してもらう必要があるだろうね。 ファイルを.xamlと.xaml.csに分けたから分離完了なんてわけにはいかないさ。
そもそもデザイナを別に雇うとか考えらんねぇ
作るGUIの内容によってはそういう所もある。 ただ未だに「動かせるのにたえうるStyle」を作れるデザイナなんて見たことがない。
ウチはアットホームが売りなくらい小規模だからな
PCメーカに行くと優秀なデザイナがたくさんいるよ
おれのところはデザインの人たちに xaml を意識させることは無いな。 どうせ理解できないから。 各パーツと、それをどう配置するかの詳細情報のみもらう。
>>434 それが現実的だろうね。
xamlはどのみちプログラマの仕事になる。
>>407 あれのNumericUpDownは最高だ
つまりデザインとプログラムの分離は失敗したということだな
プログラマーがデザインセンスを磨けばいいんじゃね?
コードに美しさを求める(よな?)人種だから素養はあるはず、たぶん
バカいうな
デザインとプログラムが分離されてるおかげで UIを担当するプログラマとビジネスロジックを担当するプログラマとで分業できるじゃないか
xamlはデザインをプログラムするものだから、デザイナーにプログラム脳を要求してしまっている 完全に分離できているとはいえない
芸術系の奇抜なデザインならともかく、産業系の工学的なデザインなら、 プログラマーだろうと、誰にでも出来るだろ? 大勢が見たときに、最も万人ウケするデザインにすれば問題無い。 客観的に見て、最も違和感を感じないようにさせれば良いだけ。 正直、それ以上は、デザイナのセンスより、ユーザからのフィードバックの方が重要。 そんな訳で、他人が見て違和感を感じさせるデザインしか出来ない奴は、 他人の気持ちが分からない人か、本当に頭が狂っている人のどちらかだと思っている。
よしじゃあ、お前のデザイン晒してみろ
普段何かする時にも、これはいいとかこれはこうした方がよくなるとか 考える人ならいいものができると思うよ。
どうしたら他人に受け入れられるか程度も分からない人は駄目だよね。 つまり、会話が面白くなく、自分語りしか出来ない人は、デザインも駄目だと思う。 面白い話が出来ない人は、自分勝手なデザインしか出来ない。
WPF Toolkit と Composite Application Guidance ってどうやって使い分けてます? 両方ともCodePlexで公開されてるんですけれど。 CALの各モジュールの中でToolkitを使いたい人は使うって感じですか?
冷静に考えてみると、CALってUnityでDIしてるだけのフレームワークだよね。 となると、MEFがある現在、CALの存在意味ってあんまりない? CALのDrop2が出たけれど、MEFとMVVMが目玉になってるし。
>>444 > 芸術系の奇抜なデザインならともかく、産業系の工学的なデザインなら、
> プログラマーだろうと、誰にでも出来るだろ?
いきなり工業デザインて専門分野を否定してきたけどさ、
製造業で働いてるデザイナと仕事したことあるか?
まあ言いたいことはわかるんだがちょっと現実離れしてるぞ。
あるが デザイナー「無効状態は文字を灰色で」 俺 「じゃ編集済み未保存は?」 デザイナー「それは赤で」 俺 「え?編集済み未保存かつ無効状態は?」 デザイナー「青」 俺 「ぇえ!?」 二度とやりたくない。
>>451 悪かった。想像を超えるレベルみたいだ。
製造業で働いているデザイナって、情報系以外の話かな。
試作品に数十万、量産用の金型に数百万や数千万かかる製造業と、
簡単にUIが修正出来るIT系は、ちょっとデザイナの重みが違うと思うが。
>>451 みたいな例もあるし、
最終的に重要なのは、ユーザからのフィードバックじゃない?
誰か、CAL使ってる人はいないの? WPFが遅いとかいう話になると、めちゃくちゃレスが付くのに‥‥。 そういえば、使えないプログラマの特徴に、こんなのあったよね。 ・新しい言語、フレームワーク、開発環境のデメリットの情報だけは早い。 ・問題が起きると、大抵マイクロソフトの所為、ということで落ち着く。
CALってクライアント・アクセス・ライセンスでよいのか?
エネルギーの単位だと思う
>>454 CALのほうがMEFより守備範囲が広い。
MEFにはIModuleもなければRegionもない。
CompositWPFEventもない。
ただし、MEFは.NET標準装備のDIコンテナだから将来も安心。
以上を踏まえた上であんたのアプリに必要なものを使えとしか言えないな。
俺はMEFと統合するまではCALを本気で使う気は無い。
他の話題をブッタ斬ろうとした上自分の話題が無視され逆ギレし「使えないプログラマ」呼ばわりとはw
>>453 たしかにその通り。でも、ユーザーからのフィードバック=手戻り。
デザイナーの知識・経験を反映させることで精度を上げ、そのリスクを軽減させることが重要じゃないか?
デザイナー自身が反映させる知識・経験を持っていなかったり、その責務を理解していないことも珍しくないがw
アプリケーションユーザーインターフェースに関しては、 「綺麗なビットマップを作れる人」が良いデザイナーというわけではないのだけど 美しさ以外は自分の責務ではないからよろしくやってくれというデザイナも稀に生き残っているね。 UXという言葉はもうちょっと広まってくれていい。
もっともユーザのフィードバックだって正鵠を得てるとは限らんしねえ。 要件決めるときとおんなじで本当は何をしたいのかってのがわかんなくなってることままあるよね
WPFやSLのインターフェイスデザインなんて Expression Blend 使って標準コントロールの ControlTemplate いじくるだけじゃないの? コントロールの配置や画面遷移とかはプログラマの領分でしょ。
そこのところがあいまいだからxamlが複雑になって失敗した
xamlは複雑じゃないだろ wpfのアーキテクチャは複雑だけど そこのところがあいまいだとわけわかんねえだろ
Xamlなんてたかだかオブジェクトツリーをつくるだけの言語じゃん。 なにが複雑なのやら。
いちいちBlend使わないと まともに作れないのが気にくわん
466 :
デフォルトの名無しさん :2010/06/17(木) 22:56:15
SnapsToDevicePixels
>>467 おぉ、こんなプロパティがあったのですか。
ありがとうございます。
469 :
デフォルトの名無しさん :2010/06/18(金) 07:42:25
>>464 コントロールのツリーを表現するのは別に複雑とは思わないが、crlオブジェクトの
参照やバインディングの表記はわかりにくく且つうざすぎるじゃね?
>>469 それぐらいは仕方ないんじゃね?
他に、神がかり的な表記法があるとも思えない。
まぁ、インテリセンスを改良して、Binding指定の時も候補出すとか、
インテリセンスで候補をコードじゃなくUIのプレビューで表示するとか、
そういう改善ぐらいしか出来ないのでは?
本来的に静的なXML構造に動的なバインド持ち込むからとっ散らかった見た目(&仕様)になるんだと思うな 表示は何でもかんでもCSS!!ってやってピンポイント修飾がやり辛くなってるHTML5と似たような感じ
attached propertyとmarkup extensionとか触らずに三日経てば忘れるレベル
expression blend使えば小洒落たGUI作るのは簡単です? 見た目が重要だ!とか言い出してる顧客がいるんだけど外に丸投げだから簡単じゃないと厳しい
簡単ではあるがセンスがいる
自分が作った社内アプリケーションをコード書けない同僚がblend使って改変した時といったら…… かっこいい!おしゃれ!市販ソフトみたい!と賞賛されていた。そいつだけが。マジで
XAML手打ちに慣れ過ぎて、Blendが使えない。
478 :
デフォルトの名無しさん :2010/06/18(金) 22:29:46
おまおれ
そのセンスを用意するのが一番面倒臭いんだけど
Windows 7に付属してるソフトでWPF製のソフトあるの?
PowerShell ISE
7じゃないけど2008R2のAD管理センターもWPFなんじゃないかな
じゃあやはりMS自身もあまり使ってないのか
既存のものは既存のものをベースになってるし、異なってるのはDirect3Dを使うようになった標準ゲームぐらい。 たとえば比較的新しい部類に入る Windows Media Center もマネージド アプリケーションだし、WPF が使うのは InBox アプリケーションはこれからでしょ。 実際 Windows Vista から新規に追加された実行可能ファイルなんて PowerShell ぐらいだし。
485 :
デフォルトの名無しさん :2010/06/19(土) 09:00:18
デザイナーにセンスとかいらねーだろ、どっかのデザインぱくればいいだけだしwww お前らも嫌々言ってないでデザインぱくってくればいいよ
>>485 パクるのもセンス。
それをあわせるのもセンス。
不要と思うなら自分でやればいいよね。
デザイナーの美的センスが嫌なんじゃない。 不条理で非合理的で無茶苦茶な要望を平気でいうデザイナーと、それを精査せずに受け入れる上司が嫌なんだ。 「チェックボックスが○でラジオボタンは◇」とか 「すべての部品がアニメーションでうにょぉぉおーん!」とかありえないことを要求する。
ListViewとかGridViewとかDataGridでカラム数を動的に変化させたいんだけど (カラム数がコンパイル時は未確定)、どうすればいいですか? DataTemplateとかでできればいいんですが、 コードビハインドでカラム生成してaddしていくしかないですかね。
DataGridならAutoGenerateColumn=trueでよくね?
>>489 AutoGenerateColumnとかあったんですね。ありがとうございます。
ItemsSourceにバインドさせるコレクションを列に対応させて動的に作ればいいのかな。
やってみます。
>>487 そういうのを否定するならWPF使う意味を示せないのでは?
>>487 それはデザイナーのセンスがないんだね。
絵がきれいだけがセンスじゃないからね。
それを良しとする上司では、ご愁傷様です。
一見して用途が解らない、見慣れないUIとか嫌過ぎるな。
WPFだと自由度が高いから、それを作られるリスクも高い。 部品をカスタマイズできるのはいいが、部品のあるべき挙動を理解せずに ものすごい挙動を発明するデザイナーがいるからなぁ。 不自由ってのは愚者でも道を違わぬために必要なものだと理解した。
一度飲まないと始まらない
>>487 まずはAbout Faceでも読ませとけ。
うちのノートだとWPF重いから WPFアプリ増えないでくれ
WPF製ソフトにはうんざり 昔のVB製ソフトを思い起こさせる
そんなに重いか? VGAがカスな仮想環境ですらサクサクなのに
重いっていうなら環境書け
501 :
デフォルトの名無しさん :2010/06/20(日) 08:32:48
今発売されてるPCなら大丈夫だろうけど 古いPCもいっぴい稼働されてる世の中だから
御託はいい 重いというなら環境を書け 愚痴と独り言をこぼされても参考にならん
環境は地球上です
AtomZ520なマシンで色々動かしてみているが アプリ起動とコントロールの動的生成の時は重たいがあとはまぁ何とかなる。 アプリの内容/作り次第では問題にはならないだろう。 だがそれ以上に表示乱れまくりだから、使えないが。
Atomなんて買う奴いるのか
買っちゃったよ。 しかもデスクトップPC・・・ ネカフェとかだとたまにあるわ。
まあ、買う奴が全く見込めないなら商品展開してないわな
508 :
デフォルトの名無しさん :2010/06/20(日) 12:54:45
ネットブックで開発してるけど問題ないなあ vs2010はストレージ食うのでSSDだときついくらいか
expression blend4何時出るん?
正直
>>506 みたいな奴がなぜム板にいるのか分からん
頭の中に何入ってんの?豆腐?
おからでしょ。
というか Atom でも Z シリーズでしょ? むしろマみたいな玄人向けの面白マシンが多い 環境だと思うんだが。
玄人じゃないんだろ
重いと言えば環境を書けと言い、 環境を言えば頭がおかしいと言い。 おイタが過ぎる知将さんなんだね。
頭がおかしいって誰も言ってないし
素手で岩を抱えりゃ重いに決まってるのに 重い重いと1人でわめいてりゃ滑稽にも見えるさ。 「これ重くない?ねぇねぇ素手で持つと重いよ!重いって!」 他の人は荷車で軽々運んでるのに。
【レス抽出】 対象スレ:WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part6 キーワード:頭がおかしい 検索方法:マルチワード(OR) 514 名前:デフォルトの名無しさん[sage] 投稿日:2010/06/20(日) 23:54:54 重いと言えば環境を書けと言い、 環境を言えば頭がおかしいと言い。 おイタが過ぎる知将さんなんだね。 抽出レス数:1 ?
WPFはblend買わなきゃいけないのが好かん 普及させる気がないのだろうか
>>518 んなわけない。
WinFormと同様程度のデザインならVSで十分だろ?
もっと気狂いじみたデザインをしたい時に、Blendだろ?
Expressionシリーズがこのまま普及してくれれば、
PhotoshopやIllustratorのシェアが減らないかな。
アドビのツールは10万を超えるから、個人で買うのは難しい。
>>518 そのレベルで文句を言っていってる人には普及させるつもりはないでしょうね。
>>519 どこをどうしたらPhotoshopと競合すんだよwwwwww
アホか
Expression Designのフィルタが充実すれば、それで十分だろ?
Winユーザーらしからぬ意見だなw
Expression Designの元になったExpressionってちょっとカルト的な人気があったグラフィックツールだったんだよな シンプルで割と好きだこれ
ExpressionはMSに買収されて死んだ 今あるのはパチモン
>>525 expressionというグラフィックツールがあったって話
WPFはやってないっていうと必ずだれかがファビョるな
実際流行ってないから
Intelがatomなんか出すから悪い
atomで.NETでうちのタイムカードレコーダーとして運用してる こういう運用にはちょうどいいわ
iPadは非力なハードウェアでもサクサクなのに、 WPFは、高性能なPCでなんでこんなに重いの?
MACのUIはそのじつ単純なつくりだからです。
ハード固定なら複雑なレイアウトなんかいらんわな ぜんぶ絶対座標でいける
マルチタスクとシングルタスクの違いも大きい。画面を占有できればバッファやメッセージポンプも最小化できるし。 しかし、実際のところ WPF のアプリが重いと思ったことはないな。 VS2008 から VS2010 に移ったけど、あんまり変わらない。多少軽くなったかもと思えるぐらい。
初期化ってか画面が出てくるまでは重い感じ VSの場合は元から立ち上げ遅いから気にならんのではないか
VSでデバッグなし実行させたときの起動スピードは2010になって速くなったように見える。
WPFが重いという奴は、低学歴低所得で、マシンが非力なのです。 生活が貧しいと、心まで貧しくなり、視野が狭くなるのです。
環境によって重いのは別に否定せんが、 重い重いと喚くだけなのは何の意味もねーよなっつーか何つーか
540 :
デフォルトの名無しさん :2010/06/22(火) 20:25:51
他のアプリに比べて重いだろ認めろよ
出始めの頃のJavaに比べりゃ遥かにマシ、てとこかね
Atomはピンキリ TDP1W以下のやつから、デュアルコアでHT対応してGMA 3150が統合されてるやつまである。 GMA 3150:200MHz〜400MHz/ビデオメモリ256MB/DirectX9.0c/Shader Model 2.0(3.0はソフトウェア対応) もうすぐ発売されるLincroftは、さらにパフォーマンスがアップして、もっと低消費電力になるらしい。
>>541 AWT とか Swing なんて実際遅すぎて流行らなかったってのもあるよね。
クソツールごときで重いって思わせたらだめだろう
なんか、ガページコレクションに起因してるようなトロさはあるな。 ページを連続して替える時はすぐ切り替わるけど。 ちょっとほっといた後に切り替えると、少し時間かかったりする。
それキャッシュのせいだろ WPFは要素が変更されない限り再描画しないから
オラオラ、下請けども、つべこべ言わずに、客の言うとおりに作れや。 こっちは、金出してんだぞ。 それが嫌なら、プライムベンダーに転職しろや。 つーか、わざわざ戦場で足軽に就職するってマゾ?
※触らないでください。
誰かが触らなくても気は触れているからな。
.NET Framework 4でOuterGlowBitmapEffectとかBitmapEffectGroupを使おうとして全然動かなくて非推奨に気付いた。 DropShadowBitmapEffectが動くだけになかなか気がつかなかったよ。
3.5の頃から非推奨扱いになってるよ
非推奨なのにObsoleteになってるわけでもなくドキュメントに非推奨って書いてるものが混じっているという程度で ビルドも通るし非推奨の警告も何も出ないのに動かすと何も動作しないのがひどいなど。 4もサポート対象に入ったままだし。
色をバインドする方法は文字列だけですか?
ValueConverter使えば自由
ナビゲーションにはPageを使うのが向いてるとのことだけど、 例えばゲームでよくある ストーリーモード VSモード プラクティス オプション クレジット というようなメニューがあって、オプションを選択したら、右からにゅにゅっと オプション項目が出てくるようなUIを作りたいとき、Pageを使うのは有効? それとも各画面をリソースとして作っておいて、 Clickイベントをイベントトリガで拾うなりして自分でごりごり書いていくのがいいかな。 後者だと遷移アニメーションはなんとかできそう。でもリソースとしてUIを書いていくのは デザイナ使えないしちょっと大変だな。
メニューとテンプレートで済みそうな気がする ページではないんでないか
線をL本、RectangleをM個かかせたいとき、(L、Mは可変) どうすればいいですか?
なんだこのプログラマとは思えない質問は
559 :
デフォルトの名無しさん :2010/06/25(金) 07:41:55
こういう質問だとよかったかも 線をL本、RectangleをM個かかせたいとき、(L、Mは可変) WPF流に実装するにはどうすればスマートでしょうか?
(´・ω・`)
線をL本、RectangleをM個書いてはどうか
マジレスすると情報が少なすぎて 何をしたいのかわからないんだよ
WPF勉強中です。 System.Windows.Controls.Controlから派生した複合コントロールの作成を目指しています。XAMLを使用しない条件です。 VisualCollection m_Children; public コンストラクタ() { m_Children = new VisualCollection(this); m_EditButton = new Button(); m_EditButton.HorizontalAlignment = HorizontalAlignment.Left; m_EditButton.VerticalAlignment = VerticalAlignment.Top; m_Children.Add(m_EditButton); m_ClearButton = new Button(); m_ClearButton.HorizontalAlignment = HorizontalAlignment.Left; m_ClearButton.VerticalAlignment = VerticalAlignment.Top; m_Children.Add(m_ClearButton); } protected override int VisualChildrenCount { get { return m_Children.Count; } } protected override Visual GetVisualChild(int index) { return m_Children[index]; } こんなかんじで追加した要素を表示しようとしているのですが、O番目しか表示されません。 位置とサイズ設定コードは別にありますがそれは問題ないです。 Add順序を変えると勿論変えたO番目だけ表示されます。 実装する上で何が足りないのか問題が解決できずに煮詰まっています。
これは…w
>>563 MeasureOverride と ArrangeOverride の実装どうなってる?試しに下の様にして実行してみたけど表示されたよ。
public MyControl() {
_children = new VisualCollection(this) {
new Button() { Content = "A", Width = 100, Height = 30 },
new Button() { Content = "B", Width = 100, Height = 30 }
};
}
protected override int VisualChildrenCount { get { return _children.Count; } }
protected override Visual GetVisualChild(int index) { return _children[index]; }
protected override Size MeasureOverride(Size constraint) { return constraint; }
protected override Size ArrangeOverride(Size arrangeBounds) {
var rect = new Rect(arrangeBounds);
foreach (var i in _children) {
var c = (FrameworkElement)i;
c.Arrange(rect);
rect.Y += c.Height;
}
return arrangeBounds;
}
あと、Template 使わないのなら Control から直接派生する意味ないので UserControl から派生させれば?
VisaulTree のルートも Panel にしておけば自分で実装する手間は省けるよ。まあ、使えそうな Panel がないなら自分で書くしかないけど。
>>565 ありがとうございます。2個目以降の表示ができました。
それらの実装も書く必要があったのですね・・・。
洋書でMVVM学ぶのにいい参考書あったら教えてください。
568 :
デフォルトの名無しさん :2010/06/26(土) 11:20:15
WinFormならWebBrowser.DocumentTextでhtmlを表示できたのですが、 WPFはどうすればhtmlを表示することができますか?
NavigateToStringあたりでいいんじゃね
こ、こんなまともなスレはWPFスレじゃない! WPFは重い。
>>557 >>413-421 のやり方を拡張して、ItemsSourceにラインデータと四角データを両方入れて
ライン用データテンプレートと四角用データテンプレートで表示させればおk。
通知用に非表示ウィンドウのハンドルがほしい場合って、どうやって実装するのが一般的でしょうか? いきなり行き詰ったorz
線かかせるとコントロールの外まで書いちゃうことがあるんだがなんで? 回避する方法ある?
範囲外の座標を指定していないはずなのに、範囲外に描画されるということか? それなら再現可能なコードを出してくれなきゃどうにもならん
バグだらけWPF MSに報告してもナシのつぶて やってられん
まぁ、バグっつーか不思議な挙動が多すぎだわな。 "VisualTreeをつなぎ忘れてもたまに描画される"とか、 "要素の外に子要素を描画させると、親要素のサイズ次第で子がかかれたりかかれなかったり"とか。 最悪なのがXPとVista以降で挙動がガラっと変わることがあること。
イヤーン
>>575 ItemsControlの中でLine書かせたんだが
やたらとでかいマイナスの座標(Canvasの外)与えちゃうと
上に隣接する別なコントロールにまで線延ばしてくれた
カットされることを期待してたんだけどびっくりした
WPFはそういうもん 親要素でClipを設定する
仕様ですか どもども、お騒がせしました
M-V-VMのコマンドバインディングでイベントにICommand型のプロパティをBindingする時コンバーターを使うことで解決できますか?
どういう問題なのか一切触れてないのにどうやって答えろっちゅーねん
イベントハンドラでコードから直接コマンド呼べばいいよ VとVMの分離という意味ではMVVM的には何の問題もない
WPF初めて触ったけど重いな ネイティブから扱えるようにはならないのだろうか
そもそもWPFはほとんどC#で書かれてるからネイティブから使おうとしたら レイヤが増えて余計に重くなるはず
>>584 View側にViewModelのインスタンスは持ちたくありません。CodeplexにあるCAL4のCommandBehavior<T>クラスを使ってヘルバークラスを用意したらルーティングイベントとコマンドをバインドすることができました。
何言ってんの ViewはViewModelを知っているもの でなきゃ何をどうバインドするんだよ
「VMにVを持ちたくない」なら意味分かるけどなあ。
ViewのDataContextにViewModelを代入しているので、ビハインドコードにViewModelのインスタンスを持ちたくないということです。
事実上完全に依存してるのに全く意味のないこだわりだな 今回のケースでどうかはともかくとして、無理にコードビハインドを避けて Viewの実装の詳細に引きずられてViewModelのインターフェイスが複雑になって 結果的にVMがVに依存してるのに近い状態になるのは本末転倒だと思う
ToolTipの表示位置を常にマウス近傍にある (マウスがある程度動いたらToolTipがマウスに追随して移動) ようにしたいのですが、いい方法あるでしょうか?
>>592 MouseMoveイベントで毎回SetToolTip
ある程度だったか ならそれの制御しないとだな 593はマウスに常に追随する
さらにWPFスレだと言うことに気づかなかった 忘れてくれ
そうですか、残念です とりあえずコントロール前面に透明な物体描いてそれぞれにToolTipもたせて なんとなくそれっぽいことしてみました でも気持ち悪いのでもっといい方法があれば教えてください
正攻法はToolTipではなくPopupを使って自分で制御
OuterGlowBitmapEffect が機能しねえと思っていたら、.NET4.0でコードを書いていた。 それはいいとして、ウィンドウ全体でClearTypeでテキスト描画するように指定する方法ってどうやんの? 初心者な質問ですみません。
>>597 ありがとうございます
Popupで動くようにできました
でもなぜかPopupが真っ黒になります
なんで?
AllowsTransparency=trueにして表示できた へんなの
ウィンドウのリサイズ時に比率を保持させる場合ってSizeChangedイベント使うのでいいの? 試しにこんなコード書いてみたけど private void Window_SizeChanged(object sender, SizeChangedEventArgs e) { Window s = sender as Window; double per = 0.5625; s.Height = s.Width * per; e.Handled = true; } リサイズさせると一部が盛大にちらつく。マウスでドラッグした分を描画したあとに コードで指定したサイズに描画してる感じ。ちらつかせないようにしたいがどうすればいい?
やったことはないけど、Measure/Arrangeでやったらどう? レイアウト計算時点で新しいサイズが反映されるからちらつきにくくはなりそうな気がするけど。
<UserControl> <Canvas> <xxx:NANIKA Width="{Binding xxxxxxxx}"/> </Canvas> </UserControl> でNANIKAのプロパティにUserControlやCanvasのプロパティをバインドさせたいとき xxxxxxxxの部分の書き方を教えてください
{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Width}
<UserControl> <Canvas x:Name="foo"> <xxx:NANIKA Width="{Binding ElementName=foo, Path=ActualWidth}"/> </Canvas> </UserControl>
>>602 ありがとう。ArrangeOverrideに書いてみたけど扱い方がよくわからんのもあって
うまくいかなかった。自由に大きさ変えられちゃうし
OnRenderSizeChangedといいたいところだけど、 こんなぐぐればすぐ出てくるようなのを試してないわけないか
MVVM使ってデータベースに保存復元としたいんだけど これにはどういったアプローチの仕方があるの? モデルの部分をDBと強引にマップして保存するのが一般的なのかな?
MVVMとDBのマッピングになんか関連性あったかいな?
>>609 MVVMMDVMMMM
みたいなパターンがあるのかなーと思って
ICommandってView側に持っていいのかな?
使い方次第。Viewで閉じているICommandもあるし、 ViewModelとやりとりするためのものもある。
なるへそ… ちなみにCommandParameterで二つ以上のオブジェクトを渡す時はどうしたらいいのん? Bind出来る何かを作ればいいぽいけどわけわかめ…
クラスを作って <Button.CommandParameter> <local:MyCommandArg A="a", B="b"/> </Button.CommandParameter>
Commandは本来MVVMのためにあるわけじゃなくて たとえばCtrl+Cとメニュー項目のコピーとツールバーのコピーボタンの処理をまとめたりするのに使う
はぁーん
>>615 サンクス!
これも調べたけれどよくわからない…
Validation.HasErrorをコントロール毎ではなく一カ所でもおきたらグローバルに察知するプロパティが欲しいです
やりたい事はエラーが起きたらあるコマンドを無効といった感じにしたいのですが…
<Canvas><Path Data="M10,10 L20,20" .../></Canvas> →0,0 - 10,10に線が引かれる <Canvas><Path Data="M0,0 M10,10 L20,20" .../></Canvas> →10,10 - 20,20に線が引かれる <Canvas><Path Data="M-10,-10 M0,0 L10,10" .../></Canvas> →10,10 - 20,20に線が引かれる (゚д゚) いや、原理的に予測はついていたけどねw 期待される動作はそうじゃないだろw
Slidebarの変化の最小単位ってどうやって変えるんですか? 細かく変化しすぎてやりづらい・・・。プログラム的に無視すればいいんだけど、slidebar 自体の設定としてできないかな?
SmallChangeとLargeChange
>>622 マウスでぐりぐりしたときはその設定は関係ないですよね。
マウスぐりぐりしたときの変化幅の最小値を1にしたい
Slider? IsSnapToTickEnabledとTickFrequencyがお望みのものかな?
>>624 Sliderの間違いでした。
その2つで実現できました。ありがとうございます
Bindingを使用せずに、TextBoxにエラーの赤枠表示をコードで強制的に設定することってできますでしょうか?
スタイル弄ればいい
そういやTextBoxの赤枠ってどこで定義されてるの? TextBoxのコントロールテンプレートには見当たらなかったが
エラーテンプレート
先生やり方わかんないよ!
<DataGridTextColumn> <DataGridTextColumn.ElementStyle> <Style TargetType="TextBlock"> <Setter Property="HorizontalAlignment" Value="Right"/> </Style> </DataGridTextColumn.ElementStyle> </DataGridTextColumn> これをスタイルに吐き出すにはどうしたらいいのん? <Style x:Key="RightTextColumn" TargetType="{x:Type DataGridTextColumn}"> <DataGridTextColumn.ElementStyle> ←ここが怒られる! <Style TargetType="TextBlock"> <Setter Property="HorizontalAlignment" Value="Right"/> </Style> </DataGridTextColumn.ElementStyle> </Style> <DataGridTextColumn ElementStyle="{StaticResource RightTextColumn}"> こんな風にしたけど駄目だった(´;ω;`)ウッ…
Setter使え
<Style x:Key="RightTextColumn" TargetType="{x:Type DataGridTextColumn}"> <Setter.ElementStyle> <Style TargetType="TextBlock"> <Setter Property="HorizontalAlignment" Value="Right"/> </Style> </Setter.ElementStyle> </Style> トン 早速つかった! でも見つかりませんって怒られるよ???
> <Setter.ElementStyle> > <Setter Property="HorizontalAlignment" Value="Right"/> おかしいとは思わないのか
<Style x:Key="RightTextColumn" TargetType="{x:Type DataGridTextColumn}"> <Setter Property="ElementStyle"> <Style TargetType="TextBlock"> <Setter Property="HorizontalAlignment" Value="Right"/> </Style> </Setter> </Style> 思ったからやった! でも駄目だ!何故だ!
> <DataGridTextColumn> > <DataGridTextColumn.ElementStyle> あるインスタンスのプロパティを要素構文で書く例
先生・・・・ 焦らすのはそのへんして教えてぇ・・・・
> <DataGridTextColumn> > <DataGridTextColumn.ElementStyle> > <DataGridTextColumn ElementStyle="{StaticResource RightTextColumn}"> > <Setter Property="HorizontalAlignment" Value="Right"/> > <Setter Property="ElementStyle"> > <Style TargetType="TextBlock"> こんぐらい並べたら分かる?
全然わかりません
<Style x:Key="RightTextColumn" TargetType="{x:Type DataGridTextColumn}"> <Setter Property="ElementStyle"> <Setter.Value> <Style TargetType="TextBlock"> <Setter Property="HorizontalAlignment" Value="Right"/> </Style> </Setter.Value> </Setter> </Style> こんな風にしてみた! これでいける!と思ったのに駄目、、、 TargetType="{x:Type DataGridTextColumn}"が例外出てコンパイルできない!!! (つд⊂)エーン
あ、出来た なるほどこういう仕組みになってるのか! XAMLすごーい! そしてそれに気づいたわたしもすごーい!! じゃ、もうかえる!
出来たんなら答え書けよな 全然わからない
XAMLすごーい(わかりづらい)!
だから答えかけよ なんでおまえらは馬鹿に冷たいんだ
あぁん?俺がわかんねーことはお前が全部書くのか?
なんで質問した奴が自分で解決して 教えてやる気の満々の奴等が答えかけって宣ってるんだよw
ヒントっぽいのを出してるだけで答えが解ってないからだろ。
ワロタw 結構いるよね、ほのめかしはするけど実は答え知らない自称上級者
ワロタw 結構いるよね、書き込みはするけど実は誤爆してた自称上級者
checkboxやradiobuttonのすっとろいアニメーションが気に入らないのですが どうすればアニメーションを切ることができるでしょうか?
/ ̄\ │34nm | \_/ インテル! _|_|_ n: / \ n: || / ヽ || f「| |^ト | :::\::/::: | 「| |^|`| エーーックス |: :: ! } | <(゚)>::::<(゚)> | | ! : ::} ニジュウゴ ヽ ,イ ヽ (__人__) / ヽ ,イ エーーーッムッッ! \ `⌒´ /
654 :
デフォルトの名無しさん :2010/07/11(日) 23:42:07
wpfは確かに柔軟でパワフルだけど、xml=xamlを基本に据えたのは失敗じゃ なかったのかなあ。コントロールツリーの記述にxmlってのはアリだとしても、 マークアップ拡張とかコマンドバインディングとかをxamlに押しこめたのは無理やり過ぎ だろ。triggerとかsetterにいたっては、もう考えたやつは死んだほうがいい。 ここらへんをIDEで隠蔽しないと、とてもじゃないけど普及はしないと思う。逆にそうするなら xml表現である必然性もないような気がする。xbapとかloose xaml? そんなもん 誰も使ってないし。
本来手で書くものじゃないし xml以外を選ぶ必然性もまったく無い
xaml使いやすいけどな。 htmlと似たようなもんだしブラウザ依存しないからhtmlよりも簡単。 trigger無かったらView内完結出来ないだろjk
Triggerはいらんな 設定ファイルの度を超えてる 最初からVisualStateManagerのような宣言的な仕組みを中心に据えるべきだった
何か知らんけど偉そうな事が言える立場の人達が話し合ってるの?
そういえばつい最近 WPF 2009なるものがあることを知った
>>656 それはいいんだけど、xamlの記述内容をデバッグできないかなと思うよ。
意図したとおりに動いてくれないときにどうやって調べたらいいか途方にくれるというか。
ValueConverterを入れてそこでブレークポイントを入れてみたりするけどあまり効率よく調べられないし。
SetterTriggerがあるのはいいんだけど他に書き様がなかったのかとは思う TriggerはともかくSetterって要素として考えるのが妙な感じ 手続きだし
VS2010はバインディングやSetterなどのような間接的なものも インテリセンスが効くようになってるね 相変わらず精度は糞だけど
663 :
デフォルトの名無しさん :2010/07/12(月) 22:17:26
wpf essentials読んでて違和感あるのは、モデルとビューの疎結合を xamlとコードの分離に直結してることのように感じる。 これって本来は必然じゃないでしょ? それを無理やり等価とみなしているから xamlに変な仕様がどんどん持ち込まれているように感じるんだけれど。
xamlもコードだけどな 宣言的な表現と手続き的な表現を分離しよう 宣言的に表現できる範囲は宣言的にやろう その上で宣言的な表現の文法としてxamlを採用 xamlありきで考えちゃうとどちてどちてになっちゃうよね
>>663 xamlとコードの話で出てくる「ビューとロジックの分離」というのはモデルとビューの分離じゃなくて
デザイナとプログラマの分離っていう意味だよ
666 :
デフォルトの名無しさん :2010/07/12(月) 22:27:49
>>665 それならなおさらひどいな
ビューとロジックの分離じゃなくて ロジックをビューに無理やり持ち込むために
xamlの使用がグダグダになってるわけだから。
WPFに限らずXMLで分離するのが流行りなんだからあきらめろ
WinFormsのようにコードを生成するのに比べて本来ずっとメリットが多いからな 特定の言語に縛られないしツール作りやすいし開発環境から分離できるし
アヌビスcやるじゃん
あきらめたらそこで(ry
分離してもいいけど美しい構造にしてください
xamlはもっとシンプルにしてほしかった。 プログラミング言語でいうとC言語みたいな存在。
XAMLは人間が読み書きするものじゃないから複雑でもおk という建前の元、PGはXAMLを読み書きしてシンドイシンドイ XAMLコーディング作業に涙と血を流す。 自分の書いたXAMLはいいけど、他人の書いたはもう無理ぽ…
XAMLが難しいって言ってる人はどんな作り方してんの? DataContextに適当なViewModelをBindingするあたりまではVM担当のPGの仕事としてやってるけど そっから先はBlendでやるでしょ?しんどくて涙と血を流すような工程なんてどこにあるのさ
さあねえ 糞仕様ってのは流行らなさが証明してるけども
糞なのはWPFであってXAMLではないような
Blend買えない貧乏人が騒いでるだけ? 安心しろExpress出るらしいぞ
>>666 中身空っぽでもそれっぽく動く必要があるからそうなるんだろう
外見は見かけだけと割り切れば、そう深入りする必要もないんじゃないだろうか
まああれだ、流行ってないってのが全てだ。 どんだけ思想的に優れててもバカに合わせた製品作らないと 結局のところ売れないってことよ。
Blendの使い方がわからないんだが・・・ どこみたらいいの?
はやってないのはパフォーマンス的な問題も多いにあると思われ.
まぁ、C++が出た時も、Javaが出た時も否定していた奴はいたからな。 触りたくない奴は触らなければ良いんじゃね? 人それぞれだよ。 つーか、WPFとSilverlightの仕組みを理解して使いこなせる奴なんて、 全プログラマの1割もいないんじゃね? 英文ドキュメントも読めない低学歴低所得下請けには無理っしょ。
XAMLなんて全プログラマのうち1割もいるわけないだろう 高学歴高所得のものなのですから
いや、そういう意味じゃなく、 今からプロジェクト始めるからC#経験者ってお題で派遣を集めて、 2週間後までにWPF勉強しておいて、って課題を出しても、 その中の1割ぐらいしか理解できないんじゃね?ってこと。 WPF経験者で集めたりするの?見たことないけれど。
1割も理解できる奴いないだろ おそらく1%程 現場に身を置けばわかるけど国内のPGはそこまで優秀じゃない
いや、1%は言いすぎだろ。 俺も現場に身を置いているが、国内のPGはそこまで無能じゃないと思うな。
有名な大学出てもif,whileぐらいしか知らない国内PGのどこが優秀なんだよw ブログなんかで情報発信出来るPGなんてほんの一握り
有名な大学の定義が分からないけれど、 旧帝理系や早慶にif, whileぐらいしか知らない奴なんていないぞ。
学生は所詮学生。 レベルが低いのは当たり前。
2週間でWPF把握すんのはそうとう優秀なやつでも難しいだろw HTML/CSSの例え話みたいなこと喋るのはできるだろうけど
Silverlightだけどサンプルのチャート作ったときは1週間ぐらいで一応動いた. でも基本的にXAMLはパネルの定義にだけ使って生成とかTranslateとか描画とかC#でごりごりかいた。 MVVMの綺麗な分離とか使ってあるべき姿で書けっつわれたらもっと時間かかるなー
どんな言語にも言えることだけど、とにかく手を動かして書いてみることだよ。 まずは小さくていいからコード書いてみたら、XAMLだろうが簡単。 でもそっから、自由度高くてなんでもできるWPFおもしれーに進むか、 汎用性持たせすぎて小回り効かねーになるかは、好み次第。
WPFアプリつくってるとき、デバッガつかってても利用出来るソースがありませんとでてどこでエラー起きてるかわからないんですけど、 みなさんはどうやって場所特定してますか?
695 :
デフォルトの名無しさん :2010/07/13(火) 13:09:04
言語仕様に欠陥がある上にIDEのサポートもロクにないんじゃ流行る訳ねーじゃん 2010になってちったーマシになったかも知れんが手遅れだな
どうせ理解できなかったからXAML叩くことしか出来ないんだろ。
698 :
デフォルトの名無しさん :2010/07/13(火) 19:01:37
treeviewにhierarchicaldatatemplateとデータコンバータを使ってフォルダ構造を 再帰的にバインディングしているんですが、こいつを動的に更新する方法ってありますか? treeview.itemssource のbindingexpressionをupdatetarget()しても 更新されないし、treeview.selecteditemのbindingexpressionは空っぽの ようで、方法がよくわかりません。
>>698 動的に更新ってどういう意味?
INotifyPropertyChange実装して、ItemsSourceにバインドしてるプロパティ更新したときに
通知してやれば更新されると思うけど。
700 :
デフォルトの名無しさん :2010/07/13(火) 20:53:14
>>699 HeirarchicalDataTemplateで階層を再帰的にバインドしており、階層の深さは
未知なため、ItemsSourceは階層データのルート要素でしかなく、子要素は
TreeViewItemがexpandしたタイミングで初めてデータコンバータを使って取得されるので、
INotifyPropertyChangedがうまく実装する方法が思いつきません。
observablecollectionをメンバに持つクラス作って、
サブディレクトリを格納してfilesystemwatcherで監視して変更あればobservablecollection
を更新とかするしかないですかねえ。。。。まんどくせー。
しかし誰得なんだろWPFって。 難易度が高くて1%ぐらいの人間しか理解出来ないって時点で 人集まらないからたいしたの作れないってことになっちゃうじゃんね。
>>700 基本的にはその線でいいんじゃねえの
メモリ内ツリーとファイルシステム間の通知オブジェクトはどうしたって必要に思う
WPFのネガキャンと擁護の時が一番もりあがるな。
XP厨が泣き叫ぶ姿を見るとうれしい
>>697 そこ重要
理解できない人がいっぱい発生するものが普及するわけないじゃない
それがどうしたの?
Windows 7 Ultimate x64厨だけど泣き叫んでます
WinFormsの出来が良すぎたんだよな デザイナがC#のコードを生成するなどというアホな仕組みはさっさと滅ぶべきだった
自分の頭で理解できなかったから、みんなも理解できないはずだ と? なんで自分の無能さをアピールしてるんだろう。
あれだろ デザイン画面でボタンクリックしたらエディタが開いてそこ埋めていけば終りってヤツがいい wpfはそういうんじゃないから、去れ
>>708 C#のソースになるからわかりやすいと思うが。
xamlは同じC#のコードを書こうとすると苦労するしobject型のプロパティーがうじゃうじゃ出てきてあってるのだかよくわからないまま手探りでコード書くはめになるし。
だから黙って去ればいいだろうw wpfのデザイナはxamlを吐く→じゃあ使わない なんの問題もない
頭がWinFormsに染まってるだけだろ 未だにMFCに拘ってる化石と変わらん
こういう奴がテキストボックスぎっしりボタンぎっしりの古き良き和製Windowsアプリを作るんだろう
自分で使う分にはともかく、ノウハウがないから人を確保できないってのが痛い。
でもXMLを使えばデザイナーの女性と仲良くなれる可能性もある
キモくて仕事のできない論理性のかけらもないオッサンデザイナーとやりとりするハメになった。 「スタイルを変えたら動かなくなった。PGrの作った部分にバグがある」 ってアホかw そんな座標完全決め打ちスタイルに変更したら、動くものも動かんわボケw 新しい技術なだけに、出来ないことを出来るといっちゃう無責任かつ無能な奴や、 長期的視点で投入されたペーペーの新人が多すぎる。
WinFormsからWPFだと必要がなかったのもあって理解がしにくかったが Silverlight触ったあとだとすんなりと頭に入っていった
そのバグは俺のせいじゃねえって言い切れるのが利点
>>700 例えば、ディレクトリツリーをTreeViewで表現したいのかな?
ルート要素とその子要素を持つデータ型をDataTemplateで指定
(例えば、ルートドライブとサブディレクトリ)
ItemsSourceには、それをバインドで問題ないと思うけど。
ExpandたどりたいならItemContainerGenerator使えばいいし。
ああ 動的にってことか。やっと理解できた。
>>702 の言う通り、ファイルシステムを監視して変更通知を授受する仕組みは必要だろうなぁ。
WPFは流行らんだろうな。 デスクトップアプリは古くさいやりかたでFormsで作る方が主流のまんまだろ。 Silverlightだけでいいよ。
よくはない xamlを改善すればいいだけ
724 :
デフォルトの名無しさん :2010/07/14(水) 09:09:21
>>720 バインディングはHierarchicalDataTemplateを使ってうまくできているんですが
ファイルシステムに変更があった時にバインディングを動的に更新したいんです。
一応上ではFileSystemWatherとObservableCollectionをもつユーティリティクラス
を考えてみましたが、アプリケーション外でのファイルシステムの変更をすべてトレースしたい
わけではなく、アプリケーション内で、フォルダの作成やリネーム、フォルダの削除を
したときに単純にそれを反映するシナリオです。
INotifyPropertyChanged や INotifyCollectionChangedでファイルシステムの
変更を通知する必要はなく、たとえば親フォルダで「フォルダの新規作成」コマンドを
実行した場合にバインディングを手動で更新するというシナリオなので、TreeViewItem
のBindingExpressionをUpdateTargetすればいいのかなと思うのですが、その方法が
よくわかりません。
INotifyCollectionChangedはファイルシステム関係ないっしょ データソースが更新されたことをtreeviewが知らないといけない アプリが反映したいタイミングでデータソース(コレクションの「中身」)を 更新すりゃそれで済むような気がするけど
twowayにしてモデルいじりゃ勝手に追加されるじゃん 何で主導で更新する必要があるの?
XAMLはかなりいいほうだと思うけどねぇ。HTML書くのと比べれば天国ですよ。
ある所をいじると、想定外の部品まで影響を受ける。 細かいことをしようとすると部品の詳細を把握しないと不思議挙動しまくり。 HTMLとは別な意味でシンドイ。
TextBlockに一括適用するStyleでも作ったのかね? 細かいことをしようとすると部品の詳細を把握しなきゃいけないなんてどんな技術でもそうさ。
アニメーションで質問があります。 VMにColor型のColorプロパティがあって、 VのとあるSolidColorBrush.Colorとバインディングしています。 ここでVMのColorプロパティを変更したとき、 SolidColorBrush.Colorを変更前の色から変更後の色にアニメーションしたいと言う場合、 どういう風に記述すれば良いんでしょうか?
そういうプロパティをVMに置くのは良くないんじゃね その色は色自体に意味があるんじゃなくてモデルかUIの状態を反映してるんだろ? その状態を取得するプロパティをVMに定義して、そのプロパティをViewにバインドして View側で色を定義するべき
あ、そのオブジェクトのイメージカラーとかそんなんを考えてました。 確かに実際にはVMにColor型そのものじゃなくて別の形で持っておき、 IValueConverterで変換する形で持たせると思いますが。 疑問の主体はバインドされてるプロパティの変更前の値から変更後の値への アニメーションってどうやるのかってとこなので、その辺は適当に流して下さい。
>>732 VisualStateManager使うとかは?
>>732 アニメーションはDependencyPropertyの世界の住人だから、VMとは関連させずに
素直にColorAnimation使った方がいいと思う。
>>733 しばらくいじってみましたが、これも違う感じです。
紅白二色とかなら問題無さそうですが、VMの提供する色の数が不定なのでStateを書けません。
VisualStateManager内でColorAnimation.ToにBindingできないという致命的問題もあるみたいです。
>>734 VMとは関連させずってのがちょっとよく分かりません。
ColorAnimation使うのはもちろんそのつもりです。
VMの方をアニメーションしたい訳じゃなくて、VMのColorをRedからBlueに変更したときに
赤・紫・青とじわっと色が変わるUIを表現したいんです。
あ、そもそもバインディングしないで直接ColorAnimationを使えって事ですかね?
取り敢えず
カスタムコントロールで依存関係プロパティColorPropertyを用意して、
ColorChangedイベントを発生させ、そのイベントハンドラでColorAnimationをコードからBegin。
VMのColorはこのカスタムコントロールのColorにバインドさせて
SolidColorBrush.Color自体はバインドしない(ColorAnimationのTargetPropertyにする)。
という形にしてみました……。
ColorChangedをRoutedEventにすればXAMLでEventTriggerからStoryboardが使えると思ったんですが、
何故か一個前の色にしかならないというよく分からない不具合のためにお流れ。
こうした方がいいって意見をお待ちしてます。
>>735 その方法でOKと思います。
>>730 を読んだときは
VM内のColor自体を時間変化させて、連続的にNotifyPropertyChangedをFireしようとしているのかと思った…
>>735 「何故か一個前の色にしかならない〜」ってのはイベントの起動を非同期にすれば解決できたよ。
他の Binding が値を更新する前に Storyboard が値をキャッシュしちゃうのかな?
var p = d as UIElement;
if (p != null) { p.Dispatcher.BeginInvoke((Action)(() => { p.RaiseEvent(new RoutedEventArgs(MyColor.ColorChangedEvent)); })); }
>>737 なるほど、Dispatcher.BeginInvokeで巧く動くのを確認しました。
// ネット検索してもそれらしい情報が引っかからない……。
カスタムコントロールの代わりに添付プロパティ&添付イベントのビヘイビアに置き換えて、
EventTriggerで記述できるようになって当初の目的は達成できました。
皆さん色々アドバイスありがとうございました。
トリガ使うんだったらEventTriggerじゃなくて最初からTriggerを使えば済むことじゃないの? プロパティの値が変更されたらストーリーボードを実行できるけど
Triggerはプロパティが特定の値になったかどうかは記述できるけど とにかく変化したときって記述はできないっしょ BlendにはPropertyChangedTriggerなるトリガがあるらしいが
じゃあVMにColorChangedイベントを付けたら?
BlendのExpress版情報はガセか。非常にがっかり
Prism v2.2でVPopupしたViewをCloseしたことをViewModelに通知するのってどうすればいいんですか?
>>744 >>60 あたりはVMからVをCloseしたいって話ですよね。
UserControlをPopup用のRegionに加えてウィンドウを表示してる場合、
ウィンドウが閉じたことをどうやってViewModelに通知すればいいのかなと。
UserControlのUnloadedあたりで知らせるもんなのかな…。
VC#2010+.NET4にてWPFの勉強をしております。 <Application ... DispatcherUnhandledException="Application_DispatcherUnhandledException"> にて未処理例外をハンドルしてみました。 ButtonのClickイベントハンドラ内から例外をthrowすると、期待通りにApplication_DispatcherUnhandledExceptionが呼ばれるのですが、 DropやPreviewDropイベントハンドラ内から例外をthrowしても、Application_DispatcherUnhandledExceptionが呼ばれません。 後者では何か特別な処理が必要なのでしょうか?
<Grid> (他の要素) <StaticResource /> </Grid> ボタンを押したらStaticResourceのResourceKeyを切替えたいとき、 コードビハインドにイベントハンドラを書いてやる手があるけど、 XAML内でやる方法ってありますか? トリガやSetterでやるのかなと思ったけどボタン要素の外側に適用できなさそうで。
うちじゃデザイナーと分業なんてしないし、 VSで全部出来た方がうれしいのに
うちの会社Blend買ってくれへん
え?開発やってるのにMSDN subscription垢を買っていないの?
MS系の仕事はたまにしかやらないって会社の場合はsubscriptionなんて買わんだろ。
元とれんよ。
>>750 だよねー
デザイナーは出入りしているが、デザインをそのままプログラムと合わせて動かせるわけじゃないし、 動かすことを意識した作りにしろといってもデザイナには無理。 結局はプログラマがXAMLを手であちこち直すハメになり、二度手間三度手間になっている。
デザイナの書いたデザインをもとにプログラマが書いた方がはやい気がする。
デザイナがいるところはそうしてるだろう 今は
Blendでコード操作できるのだからデザイナーに全てやってもらうというのはどうか。
Blend使うのもプログラマでしょ
>>752 「デザイナー」っつってもそんな広告ちらしデザイナーみたいのじゃなくて
MSに出入りしてるようなデザイナーを想定してんでしょ
760 :
757 :2010/07/17(土) 10:58:19
つまり分離失敗
そもそもBlendが使いにくい件 VSと差別化できてない
今どきのデザイナーはHTMLやJavaScriptなどの知識は持っているから その延長としてVSは使えるはず
>>761 プレゼンテーション層とビジネスロジック層が密結合になってるせいで苦労した経験とかないのか?
その為のトリガーちゃん
分業するんだったらXAMLは本当にデザインだけにして バインディングが必要なコントロールにはx:Nameを付けさせて 実際のバインディングの設定とかは全部コードビハインドで書いた方がいい気がする
ダブルクリックってcommandバインディング出来ないよな? これ、どーすんの? ここだけイベント駆動でViewModelのメソッドを呼び出すのか?
>>767 クリック系は部品によってはできたり出来なかったりだから仕方ない。
コードビハインドが嫌なら、ダブルクリックイベントに反応する
添付ビヘイビアを自前で実装してしまうのがスマートかな?
任意のイベントに(コマンド)バインドするという話しは、過去にも何度かあった 過去ログ見るかぐぐるかすれば、その記事が見つかるはず
おー、こんなのがあるのかー。 しかし一つのイベント書くのに随分と長く書く事になるんだな…。
WPF難しいな。 覚えたらサクサク組めそうなんだけど敷居がたかすぐる。
TabItemのContentに設定した値に対応するUIElementを取得したいのですが どうすればいいのでしょうか? Contentに直接UIElementを設定した場合は var ui=(UIElement)tabItem.Content; で取得できるのですが、 ContentTemplateを使用した場合にも使える方法を 探しています。
ItemContainerGeneratorじゃダメなの?
774 :
772 :2010/07/17(土) 19:41:01
TabControl.ItemContainerGeneratorで TabItem.Contentに設定される値からTabItemを取得することはできるんですが、 TabItemのコンテンツの部分に相当するUIElementも取得できるんでしょうか?
すまん、誤読した。欲しいのはContentの値じゃなくてContentTemplateから生成されたTreeItemの子供ね。 なら、VisualTreeHelperじゃダメ?
776 :
デフォルトの名無しさん :2010/07/17(土) 20:57:37
XAMLのMouseBindingで戻るボタン(XButton1 ??)をgestureに 関連付けるにはどうしたらいいですか? あとXAMLエディタで MouserBingやKeyboardBindingでプロパティエディタが 全く使えなかったり、インテリセンスが効かなかったりするのはバグですか??
View にも View のためのロジックが必要な時点で結局のところ
>>759 なわけだよな。
思うがままにぐにゅーんとかうにょーんとか動かしたければ結局コード書けないと辛い。
プレゼンテーション部分の実装に長けたプログラマとビジネスロジックに特化したプログラマとか
そんな程度の分離で充分ってことでしょ。
http://pro.art55.jp/?eid=1219470 ここのコードのDataTemplate内で<TextBlock Text="{Binding}" />と省略形のバインディング
していて、これのDataContextっておそらくContentPrensenter.Contentのオブジェクトなんだろうけど、
そういうのってどうやって知るわけ?暗黙的に設定されたら訳分かんなくて困る
msdnちゃんと読め
パファーマンスや保守性の観点からちゃんとPath書いた方がいいよ
MSDN読んでくれるような殊勝なデザイナーが欲しいよ
下手すりゃ読まないプログラマーさえいるしな。無理だろ
底辺に与えられるものではないわけだな
マニュアルが回りくどいんだよ 目的、結果だけ書いてあればいいんだ
情報があるだけマシ Javaとかやってみろ ほんとにsummaryしか書いてないぞw
MSDN読むようなデザイナーってなるとかなり特化されたデザイナーだよねえ。 デザイナーがMSDN読んでる暇があったら他のこと勉強しててもらいたいと思うわ。
他人に勉強を要求する前に君が学ぶべきことがあるんじゃないかな?
ごめんなさい
GUIデザイナーとチラシデザイナーで同じの連れてきていいのかよという
違うの連れてくるだけの稼ぎはあるのかい?
HTML手書きできるWebデザイナーつれてきて2週間Blend触らせたらそこそこいい線いくんじゃない。 アニメーションまではきついかもしれんが。
>>789 GUIデザイナーってそもそもピンの職業としてなりたつのか?
チラシデザイナーとかよくてWebデザイナーぐらいだよねえ。
つか見栄えはともかく「使いやすいUI」は設計する側がそもそも知ってないとだめだよな。 デザイナー呼ぶまえに自分で勉強しろよと。
>>780 kwsk パフォーマンスに差があるの?
{Binding}と{Binding .}と{Binding Path=.}はどれも同じだと思っていた。
しかしプログラマ間での意思疎通コストだって大変なのに そこにチラシデザイナーが紛れ込んでるときのカオスって デザイナーだからややこしいとこは免除みたいな線引きが腹立つな
>>779 暗黙的にソースが割り当てられることを書いたページを探してるんだが見当たらない。
ページだけでも教えてくれないか?
>>795 それならまだいいが、チラシデザイナーがXAMLを弄るとか言い出すと最悪。
中身を理解できないのに触るものだからこっちの作ったコードの破壊しかできない上、
フォローのための工数が半端ない。
798 :
デフォルトの名無しさん :2010/07/18(日) 17:32:59
>>794 Binding Path=Textはリフレクション使うので意味ないと思うが、
Binding Path=(TextBlock.Text)とすれば名前解決の処理がなくて
パフォーマンスが上がるということだろうかね。
いずれにせよバインディングが多用されているとソースの可読性が下がって
どこで何をバインドしているのかさっぱりわからなくなってくるから、pathなんかの
要素は極力略さない方が俺もいいと思うが。
WPFってShownみたいなイベントはどこに逝ったのさ
RenderComplatedみたいなのなかったっけ
>>798 TextBlock.TextはDependencyPropertyだからどの道(ry
ってのはさておき、Path=を書いて可読性が上がるかというと微妙なところ。
自分は全部Path=は必ず省略して一番先頭に書く様にしているけど、別段読みにくくはないと思う。
現状としてXAMLのコーディング規約的なものがないから人によって構造や書式がマチマチになりがち、
下手に省略すると読みにくいってのは分かるけど、統一さえ出来ていれば問題になるようなことはないと思う。
803 :
デフォルトの名無しさん :2010/07/18(日) 20:43:39
styleとcontroltemplateの違いが今ひとつよく分からないんですが、どう言う風に使い 分けるもんなんですか?
既存のプロパティを変更するのがStyle 見た目を丸ごと置き換えるのがTemplte
Styleは部品の機能はそのままに見た目を変えるときに使う。 あくまで変更できる範囲は部品の提供している機能の範囲で、それを破壊するような変更はほぼできない。 ControlTemplateは見た目だけでなく部品の機能や内部構造までほぼ無制限に自由に変えることができてしまう。 使い分けの基準ってのは世の中一般にはないと思うけど、個人的に基本はStyle。 ControlTemplateは強力なだけに副作用も多いから極力避けた方が賢明だと思う。 例えばよくある例のようにボタンの見た目を変える程度なら問題ないけど、 元の部品の機能を加えたり変更したりした場合、そもそもそれは既にボタンじゃない、なんてことも。 どうしてもControlTemplateが必須な状況なら、まず別なコントロールor新規作成のカスタムコントロールの方が適切じゃないかを検討する。
ControlTemplateで機能は変えない。機能は同じで見た目や実装を変えるだけ。 見た目変えるだけのためにコントロールは作るなテンプレート使えというのがWPF流。 機能を変えたいならコントロールを作る。
おまえら、本書けよ さっぱりわかんねぇ
>>807 やさしく答えてやるから何が分らないか書いてごらん
DataGridで行番号を表示させる方法を教えてください
AlternationIndexじゃダメなの?やったことはないけど。
情報ありがとうございます でもどう書けばいいかわからない 空白になったり、全部0になったり・・
DataGridTemplateColumnでDataTemplate設定すりゃいいんじゃない
RowHeaderTemplateとIValueConverterで DataGridRowのインデックス+1を表示すればいい
おまえらなんだよ英語ばっかり使って
アーハン
だれもxamlを詳しく書いてくれないのでなんのことだかさっぱりわかりませんでした それで下のようにしました datagrid.LoadingRow += new EventHandler<DataGridRowEventArgs>(datagrid_LoadingRow); void datagrid_LoadingRow(object sender, DataGridRowEventArgs e) { e.Row.Header = e.Row.GetIndex() + 1; }
実現できたならそれでイイんだよ
>>816 それだと、最終行がおかしくならんか?
試しに幾つか行を追加してみ
>>818 ご指摘ありがとうございます
行を追加することないんでこれでもOKです
というか、他の方法がわかりませんwwww
値を読み出すって何? バインディングするんでなけりゃPasswordBox.Passwordを直接見るだけでしょ
>>823 ViewModelと絡めるにはどうするのがベストなの?
スタティックだから他のWindowかなにかに同じようにバインドしたら値がごっちゃにならないかな?
> スタティックだから まず依存プロパティを理解すべし
うーん、やっぱりわかんない
>>819 は添付プロパティを使ってPasswordBoxのPasswordの値をバインドしてるのよねん
んでそれをViewModelとスマートに組み合わせる方法がよくわかんない
もしかしてこれをViewModelに持ってきてどうこうするには
ViewのXAML側でxmlns:vm="clr-namespace:MyProject"として
vm:ViewModel.Password = "{Binding なんとか}"
ってするの?
それとも添付プロパティをstatic定義しなくていい方法がある?
依存プロパティでどうPasswordの内容をXAML上で受け取るのかがわからない…
理解してから出直せ。 > スタティックだから他のWindowかなにかに同じようにバインドしたら値がごっちゃにならないかな? staticなclassでも、「staticな変数」を持っていないなら問題は起こり得ない。
解決したー
>>819 のヘルパーの動きをよく見たら何でもなかったでごわす
MVVMにこだわる人ってほんとにVMの単体テストとかやってんの? View使ってテストするんだったらMVVMなんて何の意味もないわけだけど
こだわるというか標準の形なんだから逆にMVVMを否定してる方がこだわってるだろな
MVVMを徹底しようとすると余計に工数掛かるから中途半端につかってるなぁ
工数にこだわりがあるんですね
>>832 こだわりというより絶対的なものじゃないか?
工数なんてどんぶりですよ。 依頼元もわかってねえからちょいちょいとふえるし。
WPFって本来コードビハインド書くのが前提だぞ 少なくともWPFのフレームワークレベルでMVVMがサポートされてるわけじゃないから標準と呼ぶのは無理がありすぎ
依存プロパティってビベイベアやカスタムコントロール作る時しかつかわねぇよな?
じゃあWinFormsではMVCで作らないといけないのかよ WPFやWinFormsが担当するのはViewの部分だけであって他は関係ない
MS自身がMVVM推奨するような事やってるわけだが それでも標準じゃないと思うのなら、お前の中ではそうなんだろう。
どの程度までコードビハインドと呼ぶかの齟齬のような気がする
コードビハインド書いたら負けとかやってる人は流石にどうかとは思うけどね。 適当なところで折り合いつけたらいいとは思うわ。
コードビハインド書いたら負け 負けでなくとも勝ちには程遠い
つまらん煽りだな
やっぱりちょこちょこっとビューに手続き書きたいよね 故JavaFXがUI記述にスクリプト言語を使ってたのも理解できなくはないな
故WPFの真似だけは避けたかったんだろうね
モデルに結びつかない動作はMVVMにする必要はないんじゃないかな。
>>821 Converterひとつ満足に作れませんでしたwwww orz
前も書いた気がするけど、blend4にMVVMサポート付くってね これが標準になんのかな
お前らタスクトレイのアイコン表示実装したい時どうしてる? 俺今自作中なんだ。
blend4っていつはつばい?
あれ? 英語版blend4ってもう出てるみたい 6/30くらい?
発売は秋 評価版は日本語版もとっくに出てる Studio3をインスコしてるPCに入れれば正規版として認証される
日本語版は今日リリースされたよ
>>849 一つはFormsのものを利用する方法。
もうひとつはCodeProjectに転がっている純WPFのタスクトレイ・ライブラリを利用する方法。
私は後者を使っている。
>>858 XmlnsDefinitionAttribute 属性
ちなみに利用者側が勝手にこの属性を定義することはできない。
>>857 それ拡張機能マネージャから拾ってこれて便利だよね
DataGridで頻繁に数値が変化するデータを表示し、変化するたびにソートさせています 数値が変化するたびにSortDescriptionsをclearして再設定することでソートさせています 約1000データくらい扱いたいのですが、データ数高々20程度でCPU10%くらい消費しているので不安です もっとスマートなやり方はないでしょうか?
>>857 なにこれすごい
そういえばWPF定番のグラフコントロールって何?
SilverlightはToolsに入ってるけどWPFはないよね…
最近のWPF Toolkitにはchart入ってるよ WinForms用でもいいならMicrosoft Chart ControlsをWindowsFormsHostで使ってもいい
先生! DataGridRowのビヘイビア(中身はイベントの設定解除)ってどうやって設定すればいいのでしょう?? TextBlockであれば <TextBlock b:Behavior.Command = {Binding}" /> Buttonであれば <Button b:Behavior.Command = {Binding}" /> というように直接エレメントに挿入するだけなんですが DataGridRowだとどこにどう設定すればいいのかわかりませぬ…。 ちなみに<DataGrid><DataGridRow b:Behavior.Command = {Binding}" /></DataGird> とすると例外が飛んできました!
ハードウェアアクセラレータを無効にする設定とかメソッドってないでしょうか? VisualStudioの視覚効果のオプションみたいに個別に設定できるようにしたいのですが。
WPFでゲームを作ろうと思い、試しにCanvasオブジェクトのChildrenに Xamlファイルから読み込んだものをAddしたのですが、 どうも同じオブジェクトを追加しようとすると例外が発生するらしいのです。 ファイルを逐一読み込ませれば可能ではありますが、それでは効率が悪いので避けたいです。 何かいい方法ありませんか?
同じオブジェクトならキャンセルすればいいんじゃねーの
>>873 例えばザコ敵なんかだと、同じオブジェクトを使う必要がどうしても出てきます。
も一度読めば可能なら、XAMLをMemoryStreamにでも読んで使いまわすと買ってできないの?
例外のメッセージくらい貼って欲しいもんだ
いちいちnewしてからAddすれば問題ないと思うんだけど
Templateにして量産すればいいじゃない
マウスを動かすとテーブルから落ちてしまいます並に頭の痛くなる質問だなあ
880 :
デフォルトの名無しさん :2010/07/27(火) 23:28:15
テキストの縦書きの方法を教えてください。
>>880 つ <ListBox ItemsSource="文字列"/>
っていうか、ググれ
882 :
デフォルトの名無しさん :2010/07/27(火) 23:45:39
オフスクリーンでレンダリングしたいのです
好きにしろ。許可する。
>>872 Xamlファイルから読み込みってことは、XamlReader.Load()を使ってるんだよな?
「ファイルを開いておいて、Load()を必要時に呼んで作成」という手を取りたいものだが、
XamlReader.Load()をしたあとに自動的にファイルが閉じられてしまうようなので無理っぽいね
かといってクローンメソッドも多分ないから、ファイルの内容を一旦文字列として
保存しておいて、そこから随時オブジェクトを新たに作り出す方法がいい
StringReader sr = new StringReader(str); //str:ターゲットのXAMLファイルの内容
XmlReader xr = XmlReader.Create(sr);
//Hoge:読み込みたいXAMLオブジェクトの型
Hoge newObj = (Hoge)XamlReader.Load(xr);
こんな感じ。
部品がどのイベントをいつどのような順序で発火させるか記したドキュメントはありませんか? 入力エラー時にロストフォーカス禁止を試行錯誤で何とか実現したのですが フォーカスとMouseCaptureを色々駆使したために LostKeyboradFocusとかLostMouseCaptureなどのイベントの発火順序にベッタリになってしまい その発火順序の仕様が分からないと動くことが保証できない状態になってしまいました。
886 :
872 :2010/07/29(木) 10:37:42
>>884 うまくいきました!
文字列から作り出せばよかったのですね。
ありがとうございました。
887 :
デフォルトの名無しさん :2010/07/30(金) 12:34:57
treeviwのスタイルで、ターゲットタイプをtreeviewitemに、トリガーで ismouseoverの時にbackgroundを指定して、マウスの乗ったツリーの背景色を変え るようにしていますが、ismouseover(mouseenter イベント??)が親にバブルアップしてしまうようで、親ツリーの色まで変わってしまいます。こい つを、routedeventのhandledのように抑止する方法はありませんか?
889 :
デフォルトの名無しさん :2010/07/30(金) 15:14:45
>>888 thanx!
ドンピシャです。結構めんどくさいんですね。
890 :
デフォルトの名無しさん :2010/08/02(月) 03:14:58
MEF使うとPrismっぽい事が出来るようになるんだけど一つ疑問が… プロジェクト間の通信はどうやるのかわかる方いらっしゃいますか?
プロジェクト間通信でググれ
LocalMessageSenderの事?
Import, Exportすりゃいいんじゃね
ふむふむ そういえば、Many付けないImportっで複数からExportされたらどーなるの? 例外がでる?
例外出たぷ
MEFはAppDomain分けない仕組みだろ 普通にdll参照したりするのと一緒
WPF4で、MS UI Gothicを3.5SP1と同じようなアンチエイリアスで 表示するにはどうしたらいいの? TextOptions.TextFormattingMode TextOptions.TextRenderingMode 両方弄ってみたけど、細いフォントが表示されるだけで、 以前のもわってしたフォント表示にどうしてもならない。
うーん、補間モードのせいかな? WPF 4 で RenderOptions.BitmapScalingMode のデフォルト値が変わったはずなんで。
>>898 ありがとう。
結局あきらめました。
いろいろオプションあってよくわかんないな。
XPがなければMeiryo UIで作るんだけど
みんなどんなフォント使ってるんだろう?
テキストを縦書きする方法を教えてください
これから新スタンダードを目指すメイリオ、メイリオUIを何でXP強制インストールにしなかったんだろ 日本MSだけの問題だから判断力に乏しかったのかな .NET3.5のMSゴシックは酷かったけどメイリオならきれいに表示できたしなあ
Vistaが馬鹿売れすると思ったんだろ
>>901 MSが強制すると文句言う人がたくさんいるから。通信費とかディスクの容量とか、関係ないアプリの互換性まで保証しろって言う人が結構いる。
つまらんこと強制するわりに くだらないこと気にするんだな
ボタン押下時に設定したBackGroundじゃなくて普通のボタンのあれに変わってしまう… これをBackGroundのままにしたいんですけどどうすれば…
906 :
905 :2010/08/03(火) 18:26:21
Labelで代用しました Verticalなんとかプロパティつかって…
>>905 ControlTemplateでボタン押下時のトリガーのBackgroundも指定すればいいかと。
もっと手軽な解決方法がないかと思うけど。
カスタムコントロールを作ったときに デザイナで触らせたくないプロパティを非表示にするにはどうしたらいいのでしょうか?
BrowsableAttributeじゃない?
LightSwitch は SilverLight を取ったみたいね・・・orz
デスクトップ向けに発行したらWPFじゃないの? と思って公式サイトのスクリーンショット見たらSilverlightのOOBっぽいタイトルバーアイコンがw WPFオワタ
なんでListViewにグリッド線引けないの
>>912 グリッドはWindowsForms見たいにプロパティで制御するのではなく、自分でXAMLなりで描画しないとだめ。
>>913 めんどくさいし、ソース見辛くなるから嫌なんだよね
大人しくGridView使えってことかな・・・
915 :
デフォルトの名無しさん :2010/08/06(金) 15:56:49
Menuの同一階層に 固定的なメニューやセパレータと、データバインドによって 展開されるメニューとを同居させるにはどうしたらいいんでしょうか? 固定アイテムがあると、ItemsSouce-DataTemplateは無視されてしまいます。
>>914 WPF4 入れたら DataGrid あるよ。
>>915 CompositeCollectionは?
>>916 DataGridのグリッド線表示はデバッグ用だからやっぱり自分で描画する必要がある
918 :
デフォルトの名無しさん :2010/08/07(土) 09:58:17
>>917 おおお!こんなクラスがあるんだ?
早速試してみる。
>>917 DataGrid と Grid は別物だよ。
ないすセンタああああああああああああああああああ
誤爆
大分ListViewで作っちゃってるけど、DataGridへの移植は簡単かな?
923 :
デフォルトの名無しさん :2010/08/08(日) 23:24:34
CRLオブジェクトのインスタンスをバインディングソースにする場合、XAMLから 参照できるようにするにはDataContextに設定するほかありませんか?
ネームスペースを定義してXAML中でインスタンスを定義する。 <clr:Double x:Key="doubleValue">123.456</clr:Double>
staticプロパティにすればいい
あとコードからリソースディクショナリに突っ込んでもいけるはず
927 :
デフォルトの名無しさん :2010/08/08(日) 23:53:34
>>924 これはリソースの中に定義ということですかね。
>>925 なるほど、staticならx:staticで参照可能ですね。
>>926 なるほど、その手もあるのか。
この場合リソース参照はDynamicResource参照でないと、
コードでオブジェクトを変更した場合、追随しませんかね…。
INotifyPropertyChange実装したオブジェクトならオブジェクト参照が
変わらない限り、プロパティの変更には付いてくるんでしょうかねえ…。
試してみよう。
928 :
デフォルトの名無しさん :2010/08/09(月) 00:14:10
>>926 インスタンスの参照をコードからリソースディクショナリに追加したら
OKでした。INotifyPropertyChangedを実装したオブジェクトインスタンスなら
プロパティの変更にはStaticResource参照でもちゃんと追従してくれました。
ただ、リソースディクショナリに突っ込むのはMainWindowのコンストラクタで
InitializeComponent()メソッドの前でないと、リソースがみつかんねーよって
怒られてしまいますが…。
XAMLからなんでインスタンスメンバを参照する簡便な方法が提供されないんですかねえ。
MainWindowのメンバについては{this:}キーワードで参照できるようにすれば、
結構楽な場面って多いような気がするんですが。
elementname
>>929 >elementname
elementname=MainWindow, Path=...で参照できるのは、子要素のFramewokElement
だけみたいです。
DataContextに突っ込んどいたら?
932 :
デフォルトの名無しさん :2010/08/09(月) 09:19:49
>>931 DataContextでどうも参照できないケースがあるみたいなんです
たとえば MSDNのCompositeCollectionの例のように
Listbox.ItemsSourceの中に
<CompositeCollection>
<CollectionContainer Collection={Binding} />
</CompositeCollection>
というのをおいた場合、このバインディングはListBoxのDataContextを参照してくれず
バインディングは失敗します。
DataContextを参照できるのは、子要素のFrameworkElementだけなんですかね・
上記のやつをリソース参照で
Collection={Binding Source={StaticResource ...}}
とすれば、ちゃんとバインディングしてくれます
アクセサ使えばいいじゃん
ObjectDataProvider ってのもあるよ。
WPFのWindow内のコントロールの列挙って、どうやるの? WinFormのthis.Controlsみたいなの。
VisualTreeHelper
>> 936 できた。ありがとー private void Hoge(DependencyObject dobj) { if (VisualTreeHelper.GetChildrenCount(dobj) == 0) { Console.WriteLine(dobj.ToString()); return; } else { for (int i = 0; i < VisualTreeHelper.GetChildrenCount(dobj); i++) { DependencyObject dobjchild = VisualTreeHelper.GetChild(dobj,i); Hoge(dobjchild); } } }
938 :
デフォルトの名無しさん :2010/08/14(土) 09:22:39
VisualStudio2010ではまだxamlのリファクタ機能はないんですかね? TextBoxを一個準備して、xamlの方の Name を変更してもプロパティーウインドウの方の名前を変更しても コードの自動変更がしてくれない・・・ デザイナは2008よりだいぶ良くなったんだけど
939 :
デフォルトの名無しさん :2010/08/14(土) 09:47:41
xamlエディタのインテリセンス関係はまだまだだねえ。俺はリソースの参照や x:Staticの参照でインテリセンス効かないのとかも、いちいち面倒でイライラする。
<ListView GridViewColumnHeader.Click="columnClick"> <ListView.View> <GridView> <GridViewColumn /> <GridViewColumn /> </GridView> </ListView.View> </ListView> GridViewColumnHeader.Clickのインテリセンス効かないのがムカつく
それどころかwindowをnavigationwindowにしたい時にもインテリセンスが効かないよね いつになったら実用ver出してくれるのかなあ
vs2010スレに誤爆しちゃったw エッセンシャル読め読めって書いてあるから立ち読みしてきた WPFが出来た理由が書いてあったけどあれ本当なの? ビルゲイツが4つのテクノロジー(GDI、Ruby、MSHTML、form)の開発者に給料を払い続けたくないからって?
言い方悪いけども、 「統合されてしまえば必要なくなるような、ばらけたスキルが必要とされるのは非効率だ。 統合されなくてはいけない。」 というようなニュアンスならほんとにそういう発言してそうだなぁ。 MS の目指すところは開発者の負担を下げることで、 そのためには1つのスキルで色々できるってのもきわめて重要なので。
目的に合わせて適した言語を選べ、なんて馬鹿げた宗教がこの世からなくなるならよいことだ どれでもできるんだから、言語は少しあればいい
などと意味不明な供述をしており、捜査本部は更に厳しく余罪を追及していく方針です
>>942 ゲイツはほとんどWPFに関して口出してないだろ、時期的に。
>>946 WPFの草案がいつからあったかわかって言ってるの?
ゲイツはこんなちまちましたことには関心を持たない OSの統合が成功したあたりでコンピュータそのものへの関心を失ってるよ
2001年にWPF開発計画を発表 事実、Silverlightプロジェクトが開始したのは、マイクロソフトがWPFの開発計画を発表した2001年のことだった。 WPFはWPF/Eの前身となる技術である(WPF/EはSilverlightのコードネームだった)。
おまえらWPFエッセンシャルの序文読めよ ちゃんと書いてあるだろうが!
持ってないから引用してけれ
WPFは最初はAvalonって呼ばれてたんだよ 確かにエッセンシャルに 経営者(Bill Gates)って書いてあるよ 微妙に被っててどれも最新技術(DirectX)が使えない で、統合しようとして失敗して4個のグループが5個になっちゃった
まえがきより > From a purely selfish > point of view, Microsoft management (well, I’ll name names: Bill Gates) > was tired of paying four teams to build largely overlapping technologies. 著者がpurely selfish point of viewと言ってることなので 本当かどうか詮索する意味は全くないのだけど 重複の多いテクノロジに並行してリソースを投入するのは ユーザだけでなく経営者にとってもメリットが小さいからゲイツが一本化しようとするのは当然だぬ ちなみにRubyというのは > Visual Basic’s UI model, internally called Ruby, ... > 1. This code name has no relationship to the Ruby programming language.
こりゃWPFとSLの一本化もあるかな
SLの制約がなくなってWPFと等価になるのなら一本化してもいい
確かにその方がいいけどさ、 一つのものを二つにわけたのに… 頭おかしいの?
4つだったものが6つになってるわけで…
ポケットの中にはビスケットが一つ
そうきたか
あれって叩くたびにビスケットが割れてその欠片を数えてるんだ 食糧不足時代にできた悲しい歌なんだよ
叩き続けると何個まで増えるかなっていう量子論の歌だぞ
WPFはいらない子
そんなにおっきいのはいらない///
964 :
デフォルトの名無しさん :2010/08/17(火) 12:40:20
Prismで、同一モジュール内のViewModel同士の通信ってどうやるのがセオリーなんでしょうか? せっかくの疎結合にしてるのに、他のViewModelの参照をもつのなぁと思うんですが、 わざわざEventAggregator使うのもなぁと思いまして。 EventAggregator使えばいいんですかね。
>>962 でもwinformで凝ったことをやろうとするとかなりしんどいんだよね・・・
凝ったことなんて年に1度あるかないか
そんなに頻度高いなら使うべき
sxeの依存ライブラリをチェックして、Client Profileで動くかどうかを 簡単に判別するツールってないでしょうか?
sex
971 :
デフォルトの名無しさん :2010/08/22(日) 21:12:25
WPF 用の RiibbonControlsLibrary がこの間リリースされたけど、VSがクラッシュする…。 Express Edition がダメなのか、それともRibbon バイナリがダメなのか…。 おそらくExpressだからだろう…。
973 :
デフォルトの名無しさん :2010/08/24(火) 16:08:29
ビブリボンか、なつかしいな。
WPF使うならSilverlight 4 Toolkitのインストールは必須 ついでにWPFデザイナも更新される
RibbonControlsLibrary が Express Edition でも使用できた。 MS の発行したサンプルだとうまく使えたので、単に私のコーディングが悪かっただけのようだ。 これで一応使えるのを確認できたのでよかったよかった。
Ribbonに興味があるんだけど、結局使い道が見つからないというか。 クライアントから邪魔とか言われそうな予感w
リボン使いづらいじゃん オフィスで操作方法はわかるけど、どれがそのアイコンか見分けがつかない場合があって疲れる 試せばわかるのになんで見切り発車したんだろうか?
いつものことじゃねえかw
リボンなんかよりVSで使ってるドッキングパネルをタダでくれよな〜
実際のところ、Officeくらい機能多くなるとRibbonみたいなUIないと全機能見れないからなぁ。 あの規模のアプリになると有効だと思う。 あと、開発者向けとビジネス向けの嗜好はかなり違うことも忘れちゃダメだろ。 非開発者向けツールが軒並みRibbonになってる一方で、 VSは絶対Ribbonにはならないと思うし。
981 :
デフォルトの名無しさん :2010/08/27(金) 08:12:18
>>977 リボンは慣れると、単にアイコンがどわーっと並んでいるより使いやすいと思う
けどな。操作系の多いuiを作るとリボンを選択したくなる。リボンの問題は表示領域
を取りすぎることかな。ディスプレイが縦なら悪くないと思うんだけど。
>>980 リボンはいちいちタブ?を切り替えないといけないのはめんどくさい
どのタブに何があるか覚えておかないといけないし
ツールバーだったら必要なものを常に表示出来てたのに、作業効率が悪くなった…
ツールバーだけ復活させてくれないかなあ
983 :
982 :2010/08/27(金) 09:34:50
>>981 あての間違いでした
すみません
表示域はリボンを最小にして使ってる
WIN7のタスクバーのアイコンも小さくしたけど狭い
使う人のための改良ではなく見栄えの良さだけの変更はやめてほしい
0
1
2
1
止めろ
989 :
デフォルトの名無しさん :2010/08/28(土) 09:06:52
VSじゃツールバーなしにしてるし メニューバーはAlt押さないと出ないようにしてるし いまどきツールバーもメニューバーも基本はなしでいいと思うよ
officeは上級者ユーザー向けではないとな…
そうだよ
リボンはメニューの置き換えでツールバーは消えた
パレット代わりといえるツールバーがなくなったのは痛い
>>990 F5押してるの?
OSの方ではクラシックメニューとか残してるのに Officeの方は完全にリボンのみにしてしまったのはアホかと
う
め
ま
す
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。