WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part7
1 :
デフォルトの名無しさん :
2010/08/22(日) 21:11:53 一向に普及しないユーザーインターフェースシステム
Windows Presentation Frameworkについて語るスレ。
パワフルで柔軟すぎるのが敗因か? 正直ついていけないよね…。
Visual Studio 2010
ttp://www.microsoft.com/japan/msdn/vstudio/ Microsoft .NET Framework 4 (Web インストーラー)
http://www.microsoft.com/downloads/details.aspx?familyid=9CFB2D51-5FF4-4491-B0E5-B386F32C0992&displaylang=ja Microsoft .NET Framework 4 (スタンドアロンインストーラー)
http://www.microsoft.com/downloads/details.aspx?familyid=0A391ABD-25C1-4FC0-919F-B21F31AB88B7&displaylang=ja 関連スレ
Microsoft Silverlight その6
ttp://pc12.2ch.net/test/read.cgi/tech/1271580489/ 過去スレ
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part6
http://hibari.2ch.net/test/read.cgi/tech/1274423236/ WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
http://pc12.2ch.net/test/read.cgi/tech/1261879110/ WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
ttp://pc12.2ch.net/test/read.cgi/tech/1245384489/ WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
ttp://pc12.2ch.net/test/read.cgi/tech/1231506876/ WPF(XAML,XBAP,.NET3.5)GUIプログラミング
ttp://pc11.2ch.net/test/read.cgi/tech/1211453941/ 【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】
ttp://pc11.2ch.net/test/read.cgi/tech/1162950198/ コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/
に
4 :
デフォルトの名無しさん :2010/08/27(金) 21:46:28
チェックボックスとボタンがあって、チェックボックスの値(true false)によって ボタンのコマンドを変えたい場合、ボタンのコマンドをチェックボックスの値にバインドして booleanからICommandへのConverterを書くしか方法はないでしょうか? Styleのtriggerのpropertyはターゲット自身のプロパティしか参照できないですよね??
>>4 TriggerはTargetName=チェックボックスのName、Property=IsChecked、Value=Falseを指定する。
SetterのTargetName=ボタンのName、Property=IsEnabled、Value=Falseを指定する。
無理やり埋めるのは美しくない
このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究
WPFToolkitの.NET4版はいつリリースされるのかと。
忘れた頃にだろうな 忘れてたけど
Expressionスレがないから聞くが Expression3→4へ無償UPGキャンペーンってまだやってんの?
Expression3インスコPCにW体験版入れれば製品版になるから 実質永久にキャンペーン中
終了したとは聞いてないからやってるんじゃね
14 :
デフォルトの名無しさん :2010/09/03(金) 15:06:37
>>11 キャンペーンのこと知らなくて、体験版入れたら何時まで経っても使用期限が来ないもんで
登録情報見たら登録済みになっててびっくらこいたよ。
もしかして落とせるようになってたの体験版じゃなくて正規版??とか一瞬ドキドキしたw
Expressionの3とは別にインストールされるみたいだけど、3はアンインスコしちゃって
いいのかねえ???
どうなんだろうね 入れっぱなしだけど…
16 :
デフォルトの名無しさん :2010/09/05(日) 19:22:49
ListBoxItem を RenderTransform.RotateTransform で回転させても ListBox の外枠でクリッピングされてしまいますが、これをはみ出させる方法はありますでしょうか? とりあえず、ListBox と ListBoxItem の ClipToBounds = false にしてみましたが、 これではだめなようです。
ListBoxItemでは多分無理 スクロールバー表示のため制御されてる
18 :
16 :2010/09/07(火) 09:15:51
レスありがとうございました。 難しそうなんであきらめることにします。
19 :
デフォルトの名無しさん :2010/09/07(火) 21:50:55
UserControl を作ってその中に ScrollViewer を入れました。 で、UserControl で、 <UserControl.InputBindings> <KeyBinding Key="Left" Command="HogeHoge" /> </UserControl.InputBindings> としたんですが、ScrollViewer にキー入力をとられてしまい、 HogeHoge が発生しません。 UserControl で先にイベントを取得する方法はないでしょうか? (PreviewKeyDown イベントを使う方法だと、KeyBinding が使えなくなって しまうので、それ以外の方法でお願いします。)
VS2010のプロパティで、"共通"のカテゴリに表示させる方法がわからねえ。 [Category("共通")] 以外あったら教えてくれ。
21 :
デフォルトの名無しさん :2010/09/10(金) 11:37:14
[Category("Common")]
<TreeView x:Name="treeView"> <TreeViewItem Header="aa"> <TreeViewItem Header="bb"> <TreeViewItem Header="cc" /> </TreeViewItem> </TreeViewItem> <TreeView.Resources> <Style TargetType="TreeViewItem"> <EventSetter Event="MouseDoubleClick" Handler="ItemClick" /> </Style> </TreeView.Resources> </TreeView> これだとダブルクリックイベントが複数回発生するんだけどどうすればいいの?
>>22 ActivatedイベントでWin32APIのSetWindowPos関数使ってHWND_BOTTOMにセットするとか
一瞬アクティブになったりもするけど
>>23 e.Sourceで判断する
>MouseDoubleClick イベント ハンドラーで Handled プロパティを true に設定すると >ルート上のその後の MouseDoubleClick イベントは、Handled が false に設定された状態で発生します。 >コントロール作成者がマウスのダブルクリックを処理する場合は、 >ClickCount が 2 に等しいMouseLeftButtonDown イベントを使用する必要があります。 >これにより、要素ツリー内の別の要素がそのイベントを処理する場合に、Handled の状態が適切に伝播されます。 うわ面倒くさ
26 :
23 :2010/09/12(日) 10:32:23
複数回イベントが起こるのはしょうがないから senderで判別しろってことだろ 下位の層でイベントを拾ったら上の層を無視するようにする
28 :
23 :2010/09/12(日) 10:43:42
出来ました ありがとうございました
>>24 自分のやりたい事は壁紙を変更する事だと気づき、最背面はあまり関係ありませんでした。
でも、壁紙変更もWin32APIで出来る事がわかりました。
あまりWPF関係ないですね。ありがとうございました。
iPhoneのようなササッと横に流れてUIが切り替わるようなカッチョいいアプリを作りたいんだけど、 ウィンドウ内で画面遷移させるのってWPFだとどうやるの? UIをそれぞれリソースにしてContent = FindResource("...")とやれば一応動作はするんだけど、 これだとそれぞれのUIにコードビハインド付けられないし使いにくい。 PageはWeb用みたいなかんじだし、UserControlでまとめるのもなんか違う気がする。
カッチョいいwwwwwwww
32 :
30 :2010/09/13(月) 10:50:35
どうやらResourceDictionaryにコードビハインド付けられるみたいね。 それぞれのUIはこれで作ってMainWindowに統合する形でやってみます。ども
LabelってIsMouseOverみたいなプロパティないの?
>>32 普通にUserControlだろ
リソースディクショナリにコードビハインドとかどう考えてもおかしい
36 :
デフォルトの名無しさん :2010/09/14(火) 00:11:17
Grid の中に TextBlock をいれると、Grid の幅いっぱいに広がります。 テキストを表示するのに必要な幅を知りたいので、 これをよこいっぱいに広がらず WinForms の AutoSize = true の ような状態にしたいのですが、そのような設定ができるプロパティ とかありますか? 現在は、StackPanerl(Orientation = Horizontal)の中にいれて 横幅いっぱいまでひろがらないようにしていますが、 そのためだけに StackPanerl を使うのは無駄なような気がして、 なにか方法あるんじゃないかと思ってるんですが。
>>35 たしかにデザイナも使えないしやめたほうがいいかも
それでやってみます
>>36 HorizontalAlignment/VerticalAlignment?
39 :
36 :2010/09/14(火) 00:52:41
できました。 HorizontalAlignment プロパティは知ってましたが、WinForms と同じで TextBlock 内で Text をどこに表示するかという意味だとばかり思ってました。 HorizontalAlignent でコントロール自体の大きさが変わるとは・・・。 勉強になりました。ありがとうございました。
> TextBlock 内で Text をどこに表示するか TextBlockにはないけど子要素をどう配置するかはHorizontalContentAlignment HorizontalAlignmentは親要素に対し自分をどう配置するか
41 :
デフォルトの名無しさん :2010/09/14(火) 02:19:51
クラスはカスタムコントロールで作ってスタイルはリソースディクショナリ。 コントロールが複数ならgeneric.xamlでマージする。
WPFのカスタムコントロール(≠ユーザーコントロール)作るの難しすぎ 特にテンプレートのサポート 中は泥臭くていいからコンポーネントの利用者には完璧なAPIを提供しろっていう いかにもMSらしい思想を感じる
オーバーライドではなく、根っこから記述すれだから、公開されている テンプレートになかったら、自力で書くしかないね。 しかし XAML 使い出すと、フォームはもう使うことないわ。古臭すぎる。
データ仮想化サポートされないかなー
要素が現在画面に表示されてるかどうかを知る方法ってありますか?
BulletDecoratorのBulletってFrameworkElementFactoryで指定できないんだろうか?
WPFで文字の縁取りってどうやればいいの? TextBlock オブジェクトをたくさん作ってずらせば出来そうだけど もっとスマートな方法あるよね。
リサイズ中ではなくリサイズ後(マウス離したタイミング)で発生するイベントってないんだろうか
メッセージフックしてWM_EXITSIZEMOVE捕まえれば?
不正な入力のチェックは、MVVMではどこでやるんでしょう? ・ViewModelでチェック ・ModelをIDataErrorInfoの具象にしてModelで値のチェック ・ValidatesOnExceptionで入力値の型をチェックさせることもできたり ・BindingのValidationRuleでチェックさせることができたり ・ViewのDependencyPropertyにValidateCallbackでもチェックできたり ・ViewのDependencyPropertyにCoerceValueCallbackを登録すれば (チェックではありませんが)入力値自体を正常範囲に丸めたり、不正な入力を蹴ったりできたり と、色々な箇所にチェックを入れれるようで、どれをどういう場合に使えばいいのやらサッパリで…
多く見るのは VM に IDataErrorInfo 実装 + ValidatesOnDataErrors だけど、 HasError とかに何を入れるかよね。 モデルに投げちゃう方式だと、モデルが WCF サービスでウェブ越しとかな時に困りそう。 最近多いのは、VM のプロパティに DataAnntations の検証属性つけて、 HasError とかの中では Validator.ValidateObject/ValidateProperty するだけとかかな。 O/R マッパーのエンティティクラスの方と2度手間になったりするんで、 T4 とか使ったコード生成で対処してる人もちらほら。
57 :
デフォルトの名無しさん :2010/09/23(木) 12:38:05
Chromeでは動かない。 ググってみたらFireFoxをインストールしてパスを通せばChromeで動くようになるらしいけど そんなんで動いても意味ないでしょ。配布先にそんなことさせるの? XBAPなんて完全に見捨てられた技術だからブラウザで動かしたかったらSilverlight使うべき。
それマジで行ってんの?今週勉強したばかりの俺はどうしたらいいんだ
60 :
58 :2010/09/23(木) 14:58:14
ListViewのGridViewな行選択スタイルをListBoxで使おうと考えているのだが、これってやる方法あるのだろうか。
意味が分からんのだがListBoxItemのDataTempleteに StackPanelをOrientation=Horizontalにして使うんじゃ駄目なのか?
Styleだから選択色半透明にしたいとかそういうんでねえの。
WPFスレが伸びないのは使いにくいからですか?
頭でっかちの人たちがつくったもんだからごちゃごちゃしすぎちゃって頭悪い人たちがついていけませんでした
でもWPFの表現力には期待してるよ
表現力なんかどうでもいいからバインディングをどんどん強化してくれ
まあ、新技術の浸透なんて5年10年余裕でかかる。
5年後に数字が+5されてないことを祈るわ
>>65 新しいってだけで思考停止しちゃう
>>66 みたいな第2のコボラーが荒らしに来るから普段は離れてROMってる。
72 :
デフォルトの名無しさん :2010/09/28(火) 08:10:13
表現力はともかく、アーキテクチャがぐちゃぐちゃで実装がきたなすぎて分かりに くい。コントロールのイベントやプロパティも覚えきれないほどたくさんあるけ ど、肝心なところが「え!こんなこともできないの?」と抜けてることもあるし。リ フレクションの多用で型の安全性が大きく損なわれてるのも. net frameworkの元々の 思想から大きく逸脱してる。
IEでは特に設定しなくても動作するが、FireFoxの場合サーバー側でMIMEの設定が必要になる。 IE以外でローカルで動かす方法は知らない。 LooseXAML: .xaml application/xaml+xml XBAP: .xbap application/x-ms-xbap Click Once: .application application/x-ms-application Chromeもこれで動いていた記憶があるが今は環境がないので試せない。 silverlightでは不要なのでブラウザ上でいろいろやりたい場合はこっちのほうがいいかな。
Silverlight(2 以降)の登場後、それでも XBAP 使ってる人ってほとんど見たことないけども。 MIME の設定は、Silverlight の XAP に対しても必要よ。
>>74 xapはプラグインがダウンロードするからMIMEの設定は不要。
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2"
<param name="source" value="xxxxx.xap"/>
MIMEの登録は間違って開かないようにとか、
他のアプリに使われないようにといった意味しかないと思う。
MSDNの資料でWPFを使う前にSilverlightを検討してみてくださいって言われてた
酷いw デスクトップでいいものならやっぱフル版の .NET の方が楽なんだけどもねぇ。
>>68 強化されて乱用されると複数のバインディングの動作順次第で処理結果が変わるなんて
トラブルが多発しそうで面倒見れないから
バインディングやxamlの処理を直接デバッグできるようにするとかを強化して欲しいなぁ。
79 :
デフォルトの名無しさん :2010/09/29(水) 12:41:11
>>78 デバッグは本当に困るね。なんとかならないのかな。
バインディングは鬼門 使ったらだめ
ところでいい加減テキストボックス系コントロールは透過できるようになりましたか
初めからできてたと思うが?
そういう時代錯誤も甚だしい変な制限を一掃するためにWPFが生まれたんだが
84 :
デフォルトの名無しさん :2010/09/29(水) 20:00:19
WPFはWindowsサーバでしか動かせませんでしたっけ? SilverlightはLinuxサーバでも動かせるんでしたっけ?
UIとロジックが分離できるのが長所らしいけど、それぞれが複雑化、冗長化している。 たしかに作業が分担になるかもしれないが、これでは、 『分担しなければ作れない』 になってしまうではないか・・・ 個人でプログラム書くには向いてないねこれ。
そーかね 俺はもうFormsには戻りたくない
俺も。HTML感覚で構築できるのは良い。
でもコードだけでオブジェクト作れるじゃん
Viewをいじるのがだるすぎる ガワ作るのは楽しいけど、ほんとそれだけ
WPFはインフラ整備がクソ過ぎる .NET5にはようやく…
Listboxで選択されているアイテムを再度クリックした時に選択解除させたいのですが、どうすればいいのでしょうか?
SelectionMode=Multiple?
複数選択はさせたくないのです…
ItemsControl.ItemContainerGeneratorのメソッド使えばインデックス取れるよ そこから選択変更できるはず
>>96 すみません、ListboxのItemContainerGeneratorのメゾットを使用して、
既に選択されている項目がクリックされたときに反応する方法がわからないのですが、どうすればいいのでしょうか?
unregisterReceiver 忘れると SynchronousQueue#put が deadlock するとは…
101 :
100 :2010/09/30(木) 18:33:42
ごめん!お隣のタブと間違えた
いえいえ
メゾットにだれも反応しない件について
もう察したからいいんだよ
インストロールと同じぐらい使い古されてるからなぁ
「インストロール手順を教えてください」とメールを送ると 「インスコール手順は以下の通りです」と平気で返ってくるなんてよくあること
メゾットの作り方 1. タマネギはみじん切りにして、オリーブオイル、無塩バター40gで炒める。 2. タマネギが透き通ってきたら、米を入れて中火でさらに炒める。 3. 2に白ワインを加えて強火で煮、沸騰してきたら中火にする。水分がなくなるまで煮詰める。 4. 最初、米がかぶるくらいの分量の水をくわえ、グツグツくらいの火加減で煮る。 メゾットの表面の泡が少し粘った感じになったら最初の時よりやや少な目の水をくわえ、同様に煮る。 5. 繰り返し水をくわえて好みのかたさに仕上げる。好みのかたさに近くなったら、塩小1/2を加えて煮詰める。 6. 5にすりおろしたパルメジャーノを加え、フライパンを揺すりながら混ぜる。仕上げに無塩バター40gを加えて、バターが溶けたら皿に盛る。
リゾット・ネエロ
それリセットだから
ViewModelにBindした添付プロパティを他の添付プロパティにBindって不味いんでしょうか? ・ViewModelのプロパティをViewの添付プロパティAにBind、 ・添付プロパティAを、別な添付プロパティBにコンバータ経由でBind、 として添付プロパティAを書き換えた所、 ViewModelのプロパティおよび添付プロパティAは値が変化したのですが 添付プロパティBは値が変化していないようです(添付プロパティBの変更通知どころかコンバータすら呼ばれないようです)。 しかし以下の場合は2つのケースは動きました。 ・ViewModelのプロパティを直接添付プロパティBにコンバータ経由でBind ・ViewModelのプロパティを添付プロパティAにBindせずに初期値をセット。 その状態で添付プロパティAを別な添付プロパティBにコンバータ経由でBind なんか動いたり動かなかったり…条件がよく分かりません。
どこかコンバートの途中で出てる例外が、WPFのフレームワーク側で握りつぶされてて見えないだけとかは?
ありがとうございます。
>>111 ですか…うーん。関係なさそうなコードをだいぶ削っても起きているので、
なにか根本的に間違えているのかもしれません。もうちょっと調べてみます。
>>112 出力ウィンドウを見てもそれらしいものはないので、それは大丈夫そうです。
>>110 両方のBindのコンバーターにブレイクポイントを置いてデバッグしてみたら?
>>110 です。すみません、そもそもBindできていませんでした。
添付プロパティAを持つコントロールを渡して
そのコントロールの添付プロパティAを添付プロパティBにバインドしているつもりが、
添付プロパティAを持つコントロールがContentControlに入っていました。
お騒がせしました。
おっちょこちょいだなあ… しーね(^皿^)
∧||∧ ( ⌒ ヽ ∪ ノ ∪∪ 遺書 おっちょこちょいで面目ない
Expression4のアップグレード版はVS2010のExpress版も対象に含まれてるよね? MSのページにはExpressを除くというような表現はないけど、Amazonのページだと 「※無料のダウンロード製品および体験版は対象外。」と書いてあってどっちだか わからん。
DataGridのCanUserAddRowプロパティをデザイナから変更してもチェックが変わらないのは、バグなのでしょうか。
WPF 前から興味があって、今日ちょびっと勉強したのでこのスレを開いてみたら 1のやる気の無いコメントで泣いた ('A`)
大丈夫、技術なんてそういうもんだから。 いまだのコボルが現役なんだぜ。 例え WPF 自体が下火になろうとも、知識は Silverlight に流用できるし。
前スレは3ヶ月で潰したのにこのスレ2ヶ月で120レスしかないお( ^ω^)
XAMLの優秀なデザインソフトが無料で提供されれば、 個人レベルのとこからじわじわと着実に広まると思うんだけどな 現状だと一部のオタクがブログでこんなんできたみたいな単発ネタ出してるだけにすぎない
それはすいませんねえ!
>>123 GridとStackPanelあたりを使って配置していくと
XAMLを書きながらプレビュー表示しているだけという感じになって
デザイナソフトとかどうでも良くなってきたよ。
後はMarginやPaddingなどをリソースに設定しておくと
誰が作っても同じような綺麗に揃ったレイアウトになるのでなかなか楽でいいよ。
ChildWindowの外観と同じものをXAML手書きで作れる?
>>125 はプログラマー的感覚、
>>123 は Flash とか使って UI 作ってる視覚デザイナー的感覚なのかな。
大まかには手書きで作れるけど、細かい視覚効果は死ねる
Formsのデザインを模倣するだけなら簡単 しかしWPFで求められてることをやろうとするのは大変だ
アニメーションとか直書きでなんかやってられない
VisualStateManagerなんか完全に人間が扱うものじゃなくなってるからな
グラデーション一つ作るのも大変 VS2010はグラデーションエディタ使えるけど相変わらずスタイルやリソースには対応してないから使い物にならない
でも実際のところ、そんな凝った視覚効果が求めらてるかというと・・・ データ検証とか、検証通るまでボタン押せなくするとかやりやすいだけでも WPF の価値あると思うんだけども。 で、せっかく開発者とデザイナーの協業想定されてるんだから、 細かい視覚効果が本当に必要になったときにデザイナーさんに UI 修正をお願いするとかがいいと思う。
WinForms程度でいいんだったら尚更XAML手書きは要らないと思う VS2010のXAMLデザイナの使い勝手はWinFormsとそんなに変わらなくなった
本当に必要な細かい視覚効果なんてないとおもうんだ
>>135 うん、特に業務だと皆無だと思う。
なので、そういうところよりは分業とかMVVMでのモデル分離とかの方がWPFの利点かなぁと思う。
まあ、コンシューマー系だと無意味に思える装飾も目を引きたいって意味合いで使えるけども。
結局デザイン面においてもWinFormsで十分ってことか
見飽きた流れだ
使ってて楽しいアプリつーもんを目指していかなあかんのですわ
140 :
デフォルトの名無しさん :2010/10/12(火) 17:09:19
>>133 データの検証とかコントロールのオンオフ制御とかは正直wpf関係ないじゃん。wpf
のそれは複雑で、かつ分かりにくすぎる。いかにもmsらしい、無意味にいやらしい
アーキテクチャだよな。へジタンの目指した世界がもうめちゃくちゃだよ。
わかってないのお前だけじゃね? ついてこれないならそろそろ辞める事を考えないとね、君はさ
カスタムコントロールに使う要素の機能を拡張したいってときの実装方法はどうすればいい? 例えば時間を指定するコントロールを作るとして、 時、分、秒それぞれにTextBoxを用意する。 フォーカスを得るとそのTextBoxが全選択状態になるようにTextBoxに機能を追加するとして、 添付ビヘイビアを使うか、TextBoxを継承したコントロールを用意するか、他には何かある?
普通にコードビハインドで書けばいいよ。 DateTimeを指定するだけのコントロールだろ? 単なるビューの部品なんだからMVVMみたいなのを適用するのは不適切。
ユーザーコントロールじゃなくてカスタムコントロールだったら、コントロールテンプレートが差し替えられるから 添付ビヘイビアなんか使えないよ。TextBoxを継承したコントロールを使うのも、 テンプレートに制約ができてしまうから良くない。
試してみたけどカスタムテンプレートでもビヘイビア使えたよ。 <TextBox local:TextBoxBehaviors.IsFocusSelect="True" Text="{Binding Hour}"/> てな感じで使える。 TemplatePart属性使ってコントロールのコード内でやるのもお手軽でいいと思ったけど、 ビヘイビアだとロジックを分離できて、ユーザーから見ても機能の取捨がより簡単にできるし 自由度も上がるんじゃないかと思う。
>>141 >>140 じゃないが、それでお前は、
説明をほとんど読まずに、いろんなことを即実装出来てきたのか?
「なぜいちいちこんなダラダラした書式で書かねばいかんのか」
「なぜこんなことがこんな奥まった位置にあるのか、回りくどい取り付け方をしなくてはいかんのか」
そういう疑念が湧く事など全くないわけだろう。
小物のアプリ一つ動かせたらうれしくて、
「俺ってすごいプログラマ!そしてこれはすばらしい開発システムだ!すごい!」「3流プログラマはろくに動かすことさえできねえんだろうな!」
そういうレベルの話をしているんじゃない。
あるアプリを作るのに、凡庸プログラマならスパゲッティで5万行、そこそこなら1万行、超優秀な設計とコードを書ける人間ならすっきり明瞭高速拡張性大の3千行。
wpfのシステムは、それそのものが2番目程度のものだと(一歩譲っても2.5番目の6千行)、多くの人間が感じているわけよ。
このスレにも痛い奴が来るとはねぇ 要はWPFもメジャーになったって事か
自分の考えが正解と思ってる まだまだ入り口君なんだよ
所詮は受注アプリプログラマのレベルだろw
受注アプリプログラマ・・・なんだよそれ?
まあ、今もう、わかってる人はみんなコード生成でやってるからねぇ。 とにかく、データの定義を一か所に集めたいのよ。 データ定義から、Entity Framework の Entity とか、 WPF 向けの ViewModel とか、 あるいは、DataGrid とか DataForm の列定義/フィールド定義を生成してる。 ViewModel に IDataErrorInfo とか INotifyDataErrorInfo 付けてのデータ検証、 そういうやり方には結構あってると思うけどね。
WPFはプログラミングとは言えない代物 真のプログラマーは使わない
真のプログラマーは何を使うん?
OS/370とFortranかな
それって例のギャグだろ
だね、ギャグ。 プログラム書いて自動化すれば(最初だけちょっと大変だけど以後)数秒で終わる作業を、 Excel 手作業とかで延々と何時間もやってるおっちゃんっているじゃない。 刺身タンポポ的作業。 そこでいう「真のプログラマ」ーって刺身タンポポと大差ないよね。
刺身タンポポって何?
____ / \ / _ノ ヽ、_ \ / o゚⌒ ⌒゚o \ 今日もまた、刺身の上にタンポポのせる仕事が始まるお… | (__人__) | \ ` ⌒´ /
あれは手作業じゃないですよ
だからギャグなんだって。 今時工場ライン化されてるはずの作業を手作業でやってるもんだっていう。
また街路樹の落ち葉を掃除する仕事が始まるお…
あれは食べるものじゃないですよ
また街路樹の銀杏を取り合う仕事が始まるお…
くせーから早く持ってってくれ
WPFは何でも部品としてバラして改造できる柔軟性の高さ故に手間がかかる。 人によっては刺身タンポポに見えるが、人によっては銀の弾丸に見える。 俺にはほぼ刺身タンポポに見えるけどねw
俺にはジグソーパズルだな
何でもバラせるからって、 別にバラさなきゃいけない訳じゃないし。そのまま使えばOK。
俺にはダイヤの原石に見えるね
>>165 まあ、ツールの利用とかコード生成とかが前提よ。
それが WPF 刺身タンポポを回避する方法。
170 :
デフォルトの名無しさん :2010/10/18(月) 11:48:50
WindowStyleをNoneにして最大化するとフルスクリーン?になるんだけど どうすればタスクバーが隠れないようにできるの?
WindowsStyleをNoneにしなければできるの
>>119 ItemsSourceにデフォルトコンストラクタがある型の追加可能なコレクションを設定しないと有効にならない。
デザイナ上は判りにくい動きになるが一応値はセット出来てるはずだよ。
完璧なのはSCCSだけ、だがな。
標準で追加されたDataGridって痒いトコに手が届かねぇんだな。 MVVM推奨するならDoubleClickやSelectionChanged用のCommandプロパティぐらい用意しとけよと。
WPFはSilverlightのデスクトップ用互換環境に成り下がったからな Silverlightのダイエット志向に合わせてる
>>174 ダブルクリックは普通に InputBindings でいけない?
まあ、Blend SDK 入れて、そっちのトリガー使えば何でもコマンドをバインドできる。
.NET 5 では標準入りするんじゃないかなぁ。
ASPのGridよりはマシ
>>176 .NET5とか、それまでWPFの息があるかどうか…Orz
ListBoxのアイテムにコンテキストメニューをつけそこから削除させようと思ったら、 コンテキストメニューから操作した場合はそれが動くけど DELキーの場合はListBox自体のキーバインドが先に動くという微妙な結果に。さてどうしたものか。 部品がどのRoutedCommandを出してどのCommandBindingsが登録されているかってMSDNに書いていないよね?
RichTextBoxのTextChangedイベントでDocument書き換えるとエラー吐くのは仕様ですか?
FocusChangedイベント中にフォーカスを書き換えると書き戻されたり、 そのあたりはいろいろと仕様です。
MSもAppleを見習って、WPFで作ったアプリしか受け付けないMS Storeを作って販売すればいいのに。 そうすれば、一挙に普及する。
そういう商売はやめてほしい
Silverlight&XNAなら普通にやりそう
日本でもやるべきだよな
日本は公式がやらなくても有志がかってにやってくれる萌え先進国だからな
>>185 ほんと、何やってんだかな・・・
まあ、画像は全部保存したけど
声優にオフィシャルにしてくれと言われても、いろいろあってとしか言えない日本。 いろいろあるだろうにやっちまう台湾。 日本のマイクロソフトは情けない。
中国本土と台湾の温度差はすごいなw
独立を公式に認められてないだけで別の国だしね。
WPF上のコンボに対して、 コードからRoutingEventを一律Addするのってどうするの? 以下のコードでは追加できね。 this.AddHandler(ComboBox.SelectedEvent, new RoutedEventHandler(Combobox_SelectionChanged)); ボタンのクリックイベントならAddできるのに、コンボにAddできない理由がわからん・・・
カスタムコントロールでXamlから <Button Click="CustomControl1.Button_Click"/> みたいな感じでコード側にあるハンドラと関連付けることってできないの? コマンド用意するには大げさなときとか、こんなふうに手軽にかければいいんだけど。 どんな些細な操作でもコマンド使うのがカスタムコントロールの流儀なのかね。
FindForm()みたいな、ルート要素を探すメソッドか方法ありませんか。 ユーザーコントロールのどこかから親Windowを捜すにはどうしたらいいんでしょうか。
ぐぐれよw
Window.GetWindow() これか! Windowの方のstaticかー
199 :
194 :2010/10/25(月) 18:29:55
>> 195
Xaml記述ではできるんだけど、タイミングを制御したいのでコードで書きたいのです。
>>196 Window.GetWindow(control)
webbrowserコントロールで一部のjavascriptが動きません。 javascriptの動作はボタンを押すとデータをPOSTするといったもののようなのですが 他のブラウザだとPOSTされたあと画面が切り替わるのに、 webbrowserコントロールでは切り替わりません。 FiddlerでモニタしたところPOST自体はされているみたいです。 WPFでもFormでもどちらも動かないのですが、どうすれば動くようになるでしょうか?
202 :
デフォルトの名無しさん :2010/10/26(火) 06:03:59
IEで試した? IEコアを使ってるからIEで動かない物は動かないよ jsやcssはブラウザ作ってるところ毎で「ぼくのじっそうさいきょう」 やってるから差がある
もちろんIEでも試しました 動かないのは <a href="javascript:void(0);" onclick="hogehoge();">fugafuga</a> こういう感じのコードです。
204 :
デフォルトの名無しさん :2010/10/26(火) 07:38:59
ナビゲートしてないとか
ナビゲートしてないというのはどういうことでしょうか?
206 :
デフォルトの名無しさん :2010/10/26(火) 09:03:57
>>205 動かす予定のjsとかってどういうメソッド使って渡してるの?
javascriptはよくわからないのですが 同じページにあるformをsubmitしてPOSTしてるようです
将来的な c++ + winapi 辺りへの移植を考えたら.net止まりにせざるをえない
ttp://blog.evernote.com/jp/?p=1150 Evernote 4は今までのEvernote 3.5とは全く違います。Evernote 3.5
もたくさんの良い機能を持っていましたが、どうしてもそのままでは直
せない問題がありました。ぼやけたフォント、起動時間の長さ、起動時のメ
モ リー使用量、特定のグラフィックカードとの相性の悪さ等の問題は3.5
が使っているWindows .netとWPFのためになかなか改善する事ができ
ませんでした。皆様がよりEvernoteを便利に使って頂けるような新機能を
追加する前に、改善作業ばかりに追われていました。
なので、もっと早く動く、信頼できるC++で最初から作り直す決心をし
ました。使って頂くと分かると思いますが、すばらしい出来映えになりました。こ
の新しいバージョンがこれから新しい機能などを追加していく基盤になります。
C++でサクサク作れる人はすごいね。
BASIC、アセンブラ、C、C++、JAVA、C#とかの系譜をこなしてきたなら簡単に出来るべ? Java以前はリンカのためのヘッダがたまにうざったいとおもうがな。
突っ込む場所が違うんじゃないかw 要はWPF使えない宣言されたってわけだ
あのフォント問題を長期間放置しておいたのは罪深い
さっさとSilverlightに吸収統合されてほしい
この流れは止まらないだろうなー WPF\(^o^)/
原文は、「私たちが知ってて、信頼を置いていたC++」みたいな感じなのよね。 要は、Evernote 開発者が C++ な人なんで、慣れない WPF で書いて失敗した感じ。 それがなんか日本語特有の主語抜きに翻訳されちゃってて、 全面的に C++ が信頼置けるみたいな文章になっちゃってる。
WPFがC++で.NETに関わらない形で使えるようにしてくれれば面白い。
WPFの他にDirectXを使ったGUIフレームワークってないの?
>>217 つSilverlight+ActiveX
WPF自体マネージコードで書かれてるので.NETに関わらないWPFというのはありえない
ActiveX使うSilverlightって意味なくないか
SilverlightはActiveXコントロール。 だからウィンドウに貼ってCOMでホスティングしてやればGUIフロントエンドとして使える。
エバーノートのスレ見てきたらみんな早いとか喜んでてワロタ WPF捨ててお客様満足度アップだなw
まあ、XP で WPF の起動がもっさりなのも事実だし、 Evernote 的に、.NET 使うのがモチベーション上がらなかったんだろうなぁってのもあるだろうけど。 ユーザビリティ的に劣化してる部分もあって、twitterとかではそれをたたかれてたりもするが。 結局、信者はいい1点だけ見て喜び、アンチは悪い1点だけ見てけなす。
WPF活かすようなナイスなGUIにしてなかったんだったらそもそもWPF使わなくてよかったんだろうし、 使う必要がったなら、自前か代わりの何かを持ってこないとならない。 まぁWPFが微妙にうんこなのは同意。
Windows環境でWPF以外のGUI開発の選択肢ってどういったものがあるの? Formはイマサラ感あるし、QtとかWTLとか?
javax.swing
もっとない
.NET FrameworkはC#で書かれているとかそういうの要らんからネイティブで実装してほしかったな △△は△△で〜みたいなのって誰得
WPFが遅いのは別にC#で書かれてるせいじゃないだろ バインディングとかゴテゴテの仕組みや描画のせいだから何で書いても一緒 SilverlightのGUIはほとんどネイティブだけどそんなに速くないっしょ
描画?軽量だよ。 AtomのPCで動かしてもそこそこいけるしね。
Silverlightはシンプルなレイアウトで描画面積が小さいと軽いけど 複雑になってくるとWPFとは比べ物にならないくらい重いよ Silverlightはシンプルな使い方しかしないことが前提だから軽い
WPFとかまだまだβ版じゃまいか。 WinForms+J2EE(WebOTX)が事実上トレンド。
>J2EE いや、それは無いだろう…
J2EE使うならWin選択する理由がねえ
>>230 WPF は CPU じゃなくて GPU 依存だしね。
あと、Vista か 7 なら軽い。
>>231 Silverlight は GPU の活用度合が低い感じが。
クロスプラットフォームだからある程度仕方がなく。
>>232 いつもの、「MS 製品は3世代目から」ジンクスに従えば、ようやく正式版。
>>234 社会じゃ仕方なくWin縛りの案件ばかりなんだよ、僕。
社外品だろ 早くなったのは起動だけ 他は、、まぁわかるよな
239 :
sage :2010/10/29(金) 19:00:59
ビジネス用途での"Windows XP"シェアは全体の75%だからな、 さらに2014年まで使えるから、 あと2,3年はビジネス用途に絡むソフトにはWPFは鬼門かもしれんね
240 :
デフォルトの名無しさん :2010/10/29(金) 19:11:55
EvernoteのおかげでWPFの普及がさらに遅れそうだな
正直WPF使ってΣ( ゚Д゚) スッ、スゲー!!ってもんをみたことがない・・・ ほかのFWでもあまり見たことないがw
cocoa売ってもらえばいいんだよなw まあそれはなさそうだからwpf使うけど
>>241 スゲー!と思わせてもどうせ2分で慣れる。
重要なのはWhat the fuckの少ない、驚き最小化の原則に乗った動作。
すなわちUIの良し悪しはフレームワークに依らない。
WPFを使うと微妙な挙動が多くてその実現に無駄に手間がかかるがなw
>242 いや別にcocoaはいーやw >243 いやLonghornのデモの時とかなんか色々すごいUIデモしてたような気がしたんだが… まぁそれが使いやすいかどうかは別物だけど.
単にすごければいいだけであれば、 ほとんどXAMLだけでアニメーションゴリゴリで動くものを作ることもできるさ。 限度を越えるとウザいだけだがなw
Windows Media Center みたいな奴か。
ひょっとしてWPFのWebBrowserってウンコ?
ウンコもクソもIEコントロールホストしてラップしてるだけだもん WPFのWebBrowserと呼ぶほどのものでもない
>>247 WebBrowserだけでなくどれもがウンコだろが
WebBrowserはWPFですらないのでTransformなども受け付けなくて残念だったんだよなぁ。
NewWindowイベとStatusTextがホスィ
SilverlightだとエフェクトかけたりできるのはもちろんWebBrowserBrushとかあるんだよな
一方 firefox は Direct2D を選択した…!?
WPFで開発するプログラムって具体的にどんなものが多いの?
VC#2010Expr使ってて、WPFのプロパティウィンドウで値を変更しようとしたら、いつも勝手に日本語入力になるんだけど…
WPFたん・・・orz
ARPANET大勝利
>>254 Visual Studio 2010 みたいなものです。
WPFはまだ終わらんさ。Windowsアプリ開発の標準として揺ぎ無い地位を得るはずだ!はずだっ!
wp7はsilverlightなんだし別に死亡じゃなくね?
Windows Phone 自体が死んでいる
263 :
デフォルトの名無しさん :2010/11/01(月) 22:03:56
3.5で作ったサンプルクラスのお手軽ソフトが4でビルドできない。 そして私はWPFを考えるのをやめた。
次世代GUIまだ〜? (・∀・)
Visual Studio 2012ではWPFのテンプレートは非標準。代わりにHTML5がメインとなりスマートクライアント時代も終息かと。
ウソニュースだしな。
>>264 それ4じゃなくて4 Client Profileとかじゃね?
4 ⊃ 4 CP
WinForm開発中止で、WPFを捨てたら…どこに行くんだよw
WinFormsの方はそのまま4CPに移行成功した WinForms安定だな サクサク起動するようになったし侮れないな
すると MDX2.0 returns がやってくるのか…
どうせ非推奨APIを使用してて、コンパイルスイッチでエラーになる設定なんだろw
// ResourceDictionary.xaml を作って、 <Style TargetType="Button" x:Key="abc">〜</Style> // App全体に適用でおっけー、と App.xaml で <Application.Resource> <ResourceDictionary Source="ResourceDictionary.xaml" /> </Application.Resource> // しかし、UserControl.xaml 等からは見えてないわけで <Button Style="{StaticResource abc}">〜</Button> これが 「リソース "abc" を解決できません」 警告。 更に、このUserControlを使っているWindow.xamlでは 「"〜"のインスタンスを作成できません」エラー。 (デザイナを開かなければ起動できるし意図通り反映もされてる…) 今は各xaml全部に <ResourceDictionary Source="ResourceDictionary.xaml" /> と書いてますが 「App全体に適用でおっけー」を上手くやる方法はありますか。
VSが古くない?
>>275 同じことをしてみたけど、うちでは警告でなかったし、デザイナにも反映されたよ。
.NET Framework 4 Client Profile
Visual Studio 2010 Version 10.0.30319.1 RTMRel
+ Hotfix for Microsoft Visual Studio 2010 Professional - 日本語 (KB982218)
ナンダッテー VS2010Expressです。 ちょっと新しく作って最初から試してみます。
わかった。 Srcフォルダを作って、そこにxamlとcsを全部入れてたんだけど、それだとダメみたい。 普通にプロジェクトフォルダ内なら大丈夫でした。 詳しいことはわかりませんが、参照の基準の場所?みたいのがあるんでしょうか。 試していただいてありがとうございました。
ResourceDirextory.xamlがプロジェクトに追加されてないんじゃ
いやー、ソリューションエクスプローラーから 右クリック 追加 新しいフォルダー、ドラッグでどぼどぼ移動、 ってやったので、プロジェクトは大丈夫だとおもいまっす。 (プロジェクトから除外してみたら例外ですた)
WPFのTextBoxコントロールって右クリックしたときになんか変なメニューでるね。 なんで今までと同じにしないのか理解できない。 IME使わない国には分からないのかな。
OS依存のコンテキストメニューを、自前実装のWPFがわざわざエミュレートするようなことはしない。他のコントロールもそうだろ。
Windows以外で誰が使うんだよ 夢見すぎだ 現実に戻ってこい
とりあえず、APIつーかネイティブな場合、どのようにしてコンテキストメニューが表示されているか知れば答えがわかるよ。 それを知っていれば、君はおかしな事を言っていた事に気づくはず。
技術面でこうだから出来ないというのは三流の言うこと。 ユーザーの実態に合わせないからWPFはこうなった。 どうやら未来もなさそうだ。
やっべ、WPF作った人三流らしいぜ
>>286 自分こそが三流だと思えないとこが三流の三流たる所以
TextBox のデフォルトコンテキストメニューに何で「すべて選択」が無いんだろ? Ctrl+A で「すべて選択」は出来るから、キーバインドはされている。 なんか理由があるのかな?
>>289 一流の仕事なんだから間違いない。
三流は黙っとけ。
>>286 自分でどうにかしたらいいじゃないか。
技術的に無理か?
Linuxがなぜ一般家庭まで普及しなかったのかを感がる時期に来ているね。
一般家庭レベルならしょうがないな
WPFなんだからApplicationあたりのリソースに TextBoxのスタイルのContextMenuに満足のいくContextMenuを設定しておけよ。 もともとTextBoxのメニューなんてあんまり統一されてなかったと思うよ。
TreeViewのイベントが複数回発生するのは仕様ですか?
仕様です
一億総三流時代
299 :
デフォルトの名無しさん :2010/11/04(木) 21:37:50
MainWindowから Showするのに時間のかかるSubWindowを 非同期で表示するにはどうしたらよいのか、お教えください。 private void button1_Click(object sender, RoutedEventArgs e) { Dispatcher.BeginInvoke(DispatcherPriority.Background, new Action(ShowSub)); } private void ShowSub() { SubWindow sub = new SubWindow(); Thread.Sleep(3000); sub.Show(); } こんなコードで実行すると、実行完了まで、MainWindowの操作ができなくなってしまっています。 Dispatcherの使い方が間違っているんだろう…というくらいまでは分かるのですが それ以上わからず手じまいになってしまっています。
無理 SubWindowのロード処理が重いなら、とりあえず表示だけ済ませて 重いロード処理は非同期にするべき
>>299 DispatcherにInvokeを送る=UIスレッドで実行する=時間のかかる処理はフリーズしてしまう
のです。
DispatcherPriorityを設定したからって違うスレッドで実行されるわけではないです。
フリーズしないようにするためには別のスレッドで実行するといい。
例えばThreadPool.QueueUserWorkItemとか。
でも、別のスレッドからだとUIスレッドのコントロールに触ると例外が出てしまう。
そこで使うのがDispatcher.BeginInvokeで、UIスレッドにメソッドを送りつけるわけです。
あきらめてSplash Windowをだしてごまかすとか。 WPFは簡単に出来たはず。
303 :
デフォルトの名無しさん :2010/11/04(木) 22:07:53
>>300-302 即答ありがとうございました。
ThreadPool.QueueUserWorkItemでは STAスレッドではないということで
InvalidOperationExceptionが発生するということは
ググったり、自身で実行してみて理解していました。
自身に配置したコントロール(たとえばListBoxやTextBox)に対して
Dispatcher.BeginInvokeで非同期実行することはできていたので
Windowではなぜできないのか、悩んでおりました。
無理、という事が判明したのなら
アドバイス通り、スプラッシュやらプログレスの表示で回避するのが良策のようですね。
>>303 非同期にやるっつったって、Dispatcher.Invoke の中で重たい処理しちゃいけないのはわかってる?
非同期開始
重たい処理
Dispatcher.Invoke
Window生成&Show
って順でやらないとダメ。
ユーザーの文字入力でその文字のボタンを作成していくものを作ろうと思うのだけど ボタンの作成はXAMLでするの?C#で記述するの?
XAMLでスタイル書いといてC#でボタン作ってスタイル突っ込む
WPFがもっとも苦手とする部分だな
ボタンを追加? データバインディングで Button.Content にテキストをバインドとかでなく? 動的に追加なら普通に C# で書くね。
>>306 スタイルとかよくわからないですがそれでやってみます
>>307 そうなんですか、まだXAMLでどこまでできるかよく把握していないので
ロジック分離するにも境界線がわかっていない感じです
>>308 動的なのかわかりませんが、ラップパネルにユーザーが文字を入力して作成ボタンを押すと
その文字が書かれたボタンが新しく追加されていくという感じです
>>310 そういう用途なら ↓こんな感じでやる。
XAML 側
<ItemsControl ItemsSource="{Binding List}">
テンプレートで
<Button Content="{Binding}" />
C# 側(どこかで DataContext 設定)
View.DataContext = new ViewModel();
C# 側(ViewModel クラスで)
class ViewModel
{
public ObservableCollection<string> { get; set; }
}
>>307 WPF で余裕。
データバインディングと ItemTemplate 強力。
314 :
305 :2010/11/04(木) 23:37:06
>>312 わざわざありがとうございます
覚えなければいけないことがいろいろあるようで
根気よくやってみます
315 :
305 :2010/11/05(金) 19:08:31
>>312 もう少しだけ細かく教えてもらえませんか?
ラップパネルにはItemsSourceもControlTemplateもないのですがどこのテンプレートですか?
それと作成ボタンが押されたらラップパネルにボタンが追加されるようにする方法もよくわかりません
Binding Listも何をバインディングしているのかもわかりませんでした
ViewModelクラスも何のために作成しているかわかりませんでした
一応こんな風にC#で作成ボタンのクリックイベントでボタンを作成するようにしてできましたが
private void button1_Click(object sender, RoutedEventArgs e)
{
Button button1 = new Button();
button1.Content = textBox1.Text;
button1.Background = new SolidColorBrush(Colors.White);
button1.Foreground = new SolidColorBrush(Colors.DarkGreen);
this.wrapPanel1.Children.Add(button1);
}
> ラップパネルにはItemsSourceもControlTemplateもないのですがどこのテンプレートですか? WrapPanelは直接じゃなくてItemsControlのItemsPanelTemplateとして使う で、この場合のテンプレートはItemsControl.ItemTemplate > それと作成ボタンが押されたらラップパネルにボタンが追加されるようにする方法もよくわかりません 考え方が違う A. 自分でやること ・ItemsControl,ItemsControlにObservableCollectionをバインドしておく ・必要なときにObservableCollectionに文字列を追加する B. 勝手にされること ・ObservableCollectionはデータが追加されたことをItemsControlに通知する ・ItemsControlは増えたデータをDataTemplateをもとに作り上げた要素(ボタン)を自分に追加する
318 :
305 :2010/11/05(金) 21:07:11
>>316 >>317 わざわざ作って頂いてありがとうございます
でもデリゲートいっぱい、ソースみても何を書いているのかよくわかりませんでした
それと起動しても追加ボタンが灰色のままで押せないのですが
今の自分にはレベルが高すぎる上、なぜこうすべきかもわからないので
>>315 のやり方でとりあえず妥協します
>>315 コード中でボタン作るのはともかく、コードにColor.DarkGreenとか出てくるのはちょっといただけない
せめてStyle使いましょう
>>318 おいこらw、セッカクつくってもらったんだから妥協してんしゃねえよ。
つかてめえデリゲートごときでなにびびってんだコラ。
はは、まぁ作った奴からすればちょっと悲しいよなw
柄の悪いインタネッツですね
デリケートは昔でいうgotoだから使う奴は初級者
昔で言うgotoは例外ですよ
325 :
305 :2010/11/05(金) 21:23:47
>>319 本当はスタイルしたいんだけど
C# コードでのstyleを作る方法が見つからなかった
XAMLでのコードはあったけど
でも、C#側で作ったボタンにXAML側で作ったスタイルを適用する
方法もわからなかったので
>>320 デリゲートはずっと避けてきてそれでもwinformsならそれなりのツールが
作れていたので、まった無知です
ParallelsとかTaskとかデリゲートだらけに進化してます
>>318 データはビューから分離しとかないと、すぐに管理しきれなくなるよ。
ほんとにボタン足して終わりの単純なアプリなら
>>315 で全然いいんだけど。
>>325 リソースで Style 作っておいて、
C# 側からリソース読み出せばいい。
てか、デリゲート避けてきたって、そりゃかなり酷いぞ。
C 言語でポインターが理解できませんと同レベルにどうしようもない。
わからなきゃ投げ出すとか、ほんとゆとりだな
デレゲートとラムダ式の違いがよくわからんかったな
331 :
デフォルトの名無しさん :2010/11/05(金) 21:38:18
デリゲートね デリゲートを簡単に書くためにラムダ式が
332 :
305 :2010/11/05(金) 21:38:22
>>327 最終的には、追加されたボタンをクリックして色反転
DATAGRIDに並べられたファイルにボタン名(タグみたいな感じ)で関連付けして
xmlで書き出して保存までやりたいです
>>328 >
>>325 > リソースで Style 作っておいて、
これはできます
> C# 側からリソース読み出せばいい。
これがわかりません
> てか、デリゲート避けてきたって、そりゃかなり酷いぞ。
> C 言語でポインターが理解できませんと同レベルにどうしようもない。
C言語の例えはよくわかりませんが、デリゲート知らなくても
それなりのソフトはできてました。使う必要がなかった感じです
>>329 投げ出して一生デリゲートを学ばないと言っているわけじゃないので
試行錯誤の過程を断片的に捉えて煽るのはやめてもらえませんかね?
あなたはすぐデリゲート理解できの?
とりあえず、完成まで持っていきたいから他のアプローチを試す
ゆとりというより柔軟と言ってほしい
333 :
305 :2010/11/05(金) 21:45:41
>>331 簡単に書くというより短く書くだけで
結局、デリゲートがどういうものか理解していないと
よりわかりにくくなっただけって感じ
ラムダ式がなかったころからデリゲートを使っていた人向けで
今から始めた人向けじゃない気がする
そうだね まあ最初はデリゲートを書きなれることかなw
イベントには便利だな
336 :
デフォルトの名無しさん :2010/11/05(金) 21:52:36
というかC#のイベントはデリゲートで実装してるんじゃないの?
337 :
305 :2010/11/05(金) 21:52:50
>>334 でも、使う場面がないですよ?
あらゆるサイトでデリゲートの説明していますが
デリゲートって便利だなと思ったものは1つもない
おまえはイベントを書く時にどうやってるんだよ…
いろんなとこから呼ばれる非同期処理とか
>>337 コールバック処理とかの実装どうしてんだよ。
わざわざクラスこさえて実施するとかJava上がりのバカだけだろ。
LINQにメソッド渡すのは嫌ずら
343 :
305 :2010/11/05(金) 21:57:46
>>336 そういうこと言い出す人がいると思いましたけど
わかってるでしょ?イベントハンドラは自動で作成されるし
別にデリゲートと意識しなくても使えるということを
動的にボタンを作成する場合も必要だけど
それぐらいはわかります。
とにかく
>>317 はボタン追加が押せないということで
間違っているところがあるんですよね?
それにあれだけ長くて難しいコードを書かなくてはいけない理由もわからない
ただ、ボタンを追加するだけなのに・・・
WPFやってみたけど、不満しかいまのところない
IDEは異常に重いし・・・ヒントの数も少ない
入力候補などが出ず手動で書かないといけないところが多い
コレクションを要素の型の特定のプロパティでソートしたいときはデリゲート使わないでどうやるんだろう Comparerクラスを実装するのはデリゲートと同じだから当然理解できないだろうな データセットとか使うんだろうか
345 :
305 :2010/11/05(金) 21:59:22
ふーん 能力がないのを棚に上げて道具のせいとかついったーに書いてろよ
347 :
305 :2010/11/05(金) 22:00:18
>>344 そんなソートをしたいと思ったことがないですね
>>345 理解できなくてすいませんでしたって土下座しろよ。
クソして寝ろ、もうくんなw
>>345 じゃあ今は覚えなくていいよ
必要になったらここで見たな〜くらいは覚えておけば
視野が狭い自慢?
>>344 from n in コレクション
orderby n.プロパティ1,n.プロパティ2
select n
他に出たのはともかくとして
>>344 がいらないって一体何作ってるんだろ
スクリプト言語でちょっとした処理書くときでさえ
>>344 みたいなソートは使わない方が珍しいくらい
353 :
305 :2010/11/05(金) 22:04:24
winformsで簡単で短いコードでできることを WPFでは難しく長いコードになってしまうということですよ
355 :
305 :2010/11/05(金) 22:06:34
>>352 コレクションのソート使わない方が沢山あるでしょ
ラムダ式はいわば簡単にかけるメソッドでしょ デリゲートにおける扱いは普通のメソッドと変わらん。
ソート使わないプログラムの方が少ないでよ エントロピー減らすためにPC使ってるんだで
WinFormsの方が短く書けるってのはWinFormsの方法論でWPF書いてるからですよ 当たり前
360 :
305 :2010/11/05(金) 22:11:28
てか
>>315 の何がだめなの?
他の人も言ってたじゃない
追加するならC#で書くってさ
俺は半分オナヌー用途だが
ウィンホームズの方が他の言語に活かせる学び方ができる
363 :
305 :2010/11/05(金) 22:13:03
まあ、実際、値の変更通知を手動で管理しきれて、 ビューから状態分離しなくてもテストしきれるような小規模なら、 WinForms の方法論で全然問題ないんだけどもね。 それを超えることやってないなら WPF はオーバースペックか。
>>327 辺りが言ってると思うが
お前メクラなの?PCモニタ見るの止めれば?
>>363 ああ、ボタン押せなくしたのはちょい蛇足。
テキスト入力されてないときに、空のテキスト追加しちゃうの?って思ったんで。
ああいう、ビュー内の状態に応じてコマンドの実行可否切り替えるとかも、
割かし GUI ではよくある要件。
367 :
305 :2010/11/05(金) 22:14:52
>>363 同じものWinFormsで書いてから言えば?
書いたら戻ってこなくていいけどw
ヒートアップしてきたな。
370 :
305 :2010/11/05(金) 22:15:58
>>366 ボタン押された場合にトリガー発動させて
ボタン追加じゃだめなの?
371 :
305 :2010/11/05(金) 22:17:32
>>366 文字入力してもボタン押せない状態なんだけど?
>>370 disable になってる理由が明白な場合には disable にしてた方がいいって感じかな。
Word とかで、クリップボードに何もないときは「貼り付け」が disable になってるでしょ。
まあ、ポイントは、実行可否がコマンドの定義の部分に書かれてるってことかな。
「ボタンが押されたときに」ってやろうとすると、ボタンのイベントハンドラー内にコード書くことになるでしょ。
1つのコマンドに対して、実行と実行可否判定の場所が離れるってのはあまりよくない。
>>371 フォーカスはずすと切り替わるはず。
キー入力のたびに切り替えたければ、
{Binding NewText} を {Binding NewText, UpdateSourceTrigger=PropertyChanged}
に書き換えて。
ちなみに、
>>372 の補足。
なんで disable になってるのかパッと見てわからない場合は disable にせず、
実行されたときにアラート出す方がいいらしい。
でないとユーザーは「この機能は使えないものなんだ」って思うとかで。
377 :
305 :2010/11/05(金) 23:05:40
>>316 さんの説明はある一定の知識のある人には丁寧で
わかりやすいんだろうけど、おれのレベルだと
何を言っているのかわからない
俺はただ、追加ボタンがクリックできない状態になっている
テキスト入力しても出来ない状態
だからずっとできる状態にしてほしいの
どこをどういじればそういう風になるのかもわからないレベルなの
初心が遠く昔の人って、知識がある前提で話すからほんとわかりにくい
>>377 あっ、ちなみに、
>>316 と
>>317 は別人よ。
あれじゃわかんないと思ってコード書いた。
余裕あったら説明コメントも入れたと思う。
オラオラ、初心者様の御通りだぞ 平伏せ下郎
380 :
305 :2010/11/05(金) 23:21:49
381 :
デフォルトの名無しさん :2010/11/05(金) 23:24:39
まだやってるのか 落ち着け
382 :
305 :2010/11/05(金) 23:27:19
パソコン今日届いて初めて触る人にコピペを教えるようなもの 初「コピペって何?」 上「クリップボードを中継してデータを写す作業」 初「クリップ・・何それ?」 上「クリップボードにコピーしたデータを保存して、適当な場所にペーストすることだよ」 初「いや、だからクリップってなに?コピーって?ペーストって?それってコピペの説明?」 別の上「Ctrl+C、Ctrl+Vでできる」 初「え?それってどういう意味?」(←キーボードのキーだということすらわかっていない) 今こういうのを体験した気がするわ
>>380 すまん、正直
>>316 は最後まで読んでない。
普通に、WPF の基本ラインで実装しただけ。
まあ、WPF に慣れた人でも、現状は Forms 時代よりはだいぶ better にはなってるけど
その代償にめんどくささも幾分かあって、まだ過渡期って認識かも。
385 :
305 :2010/11/06(土) 00:22:25
>>382 これってさプログラマにとって根幹にかかわることだと思うんだよね
自分で理解できればそれでいいってソフトを作っている人はこれでいいだろうけど
初心者でも直感的に操作できるソフトを作るというのは難しそう
現に
>>317 はtabでフォーカス移動しなければ使えなかった
これって初心者からしたらバグでしかない
結局機能はしょぼいけど、初心者が作った初心者のためのソフトが使いやすかったりする
上級者で初心者の気持ちもわかる人って解説サイトでも少ないよねー
しょぼいのでいい 地道にいけ
実際でもなぁ、それは UX デザインを専門にやってる人に任せたいというのが本音。 となると、「UX デザインが専門であってプログラミング詳しくない」って人がやれなきゃ意味ないのよね。 そこは WPF は「分業を推し進める」って方向に舵を切ってるわけだけども。 XAML 側は UX デザイナーが Blend とか使って作る、 プログラマーはビューには触れず、ビューモデルを作るっていう。
初心者が作ったソフトは使いにくいです 拡張性0、ボタン大量、etc... アラアラと思う…
というか、
>>317 は、コード少ない方が理解しやすいかなって思って
Binding の記述削ってたんだけど。
その結果、バグだと言われて、
一方、「C# 側がコード量多い」って言われたのはさすがにちょっとへこむ。
390 :
305 :2010/11/06(土) 00:33:47
private void button1_Click(object sender, RoutedEventArgs e) { Button button1 = new Button(); button1.Content = textBox1.Text; this.wrapPanel1.Children.Add(button1); } だってさ、初心者でもたったこれだけでできることを 上級者がXAMLでやると、デリゲートだとか、バインドがあっちこっちにあったりして どうしてそうなっちゃうの?って感じ
たいていそれだけで要件収まらないから。 いいのよ、別に、ほんとにそれだけの要件ならそれで。
コードの小分けが出来るのがいい というかさ、winformsでもbind使ってたろ? 使ってなかったのか?もしかして…
先日の初心者スレの人はブーブー言いつつ皆に熱心に諭され勉強し、 1日でWPF使いに変身したというのに
>>392 そういうことだ。
多くの人が使ってないんだよ、bind。
で、不意に規模が膨らんじゃってからギャップが越えられなくなる。
395 :
305 :2010/11/06(土) 00:47:59
>>392 使ったこと無いよ
ソースが変わったら、ターゲットのプロパティを書き換えるコードを書いてた
イベントハンドラ大量、更新させるためのコード
結果、ある程度の規模になると、更新一部し忘れたり、どこで更新されたかわからなくなったり
イベントハンドラが大量で一体どこで何をしているのかわからなくなった
だからそんなことにならないような簡単なユーティリティだけ作ることに
例えば、空フォルダを見つけて削除や、削除したファイルをリストアップするだけなど
ファイラーから実行できるような手軽なものを作っていた
396 :
305 :2010/11/06(土) 00:49:34
>>393 それおれだから
WPF使いじゃなくてWPF始めただけだからw
いやいや、Bind使おうよ… WinFormsでもさ… UserControlでView作ってBindで繋げて、振る舞いはインターフェイスで定義してってやるだろ… その辺がもうちょい賢くなって便利になったのがWPFなんだし…
イベント直書きは10年前のdelphiでもうこりごり
>>395 もうPythonとかスクリプト言語使えば?
君はそのほうがよっぽど幸せになれると思うよ
400 :
305 :2010/11/06(土) 00:57:18
>>397 使えるなら使うさ
俺は基本どぼんに乗っているコードをコピペすることしかできないさ
2001C# 発売当日に魔が差して買ったおれがさ
401 :
305 :2010/11/06(土) 00:59:13
>>399 Python、Rubyとかもやったよ
でもやっぱ、GUIのかっこいいの作りたいじゃない?
うーん、コピペ自体は悪いとは言わないんだけどね。 そうなると、古い、現代的には問題が明らかになってるコードって、人類の抱える負債だなぁ。
空フォルダを見つけて削除するGUIユーティリティ?w そういうのはコマンドラインで使えた方がどう考えても便利です
>>401 かっこよくねぇよww
かっこいい人が作った GUI がかっこいいだけだよ。
こういう技術の根底にある考え方って敷居高いのかなぁ うーむ…
スレがのびてると思ったら… まぁ宗教議論よりはいいか
407 :
305 :2010/11/06(土) 01:06:09
>>403 文脈理解しろよ
今作ろうとしているのは動画ソフトのフロントエンド的なものを作ろうとしているの
多分完成したら新しい時代がくる
アイデアだけはすばらしいんだよおれって
そこらのフリーソフトを超える使い易いソフトをいくつも妄想してきたが
プログラミングができない
他の言語でもフレームワーク触った事あるならすぐ理解出来ると思うけどね 名前は違えどやってる事は一緒だし
ただでも、でかいフレームワークだと、その裏にある要求とかモデルとかを簡潔に説明した文章って少ないからねぇ。
WPFがダメなのはIDEの至れり尽くせりサポート大前提で設計してるくせに 肝心のサポートが話にならないチープさなところ こう書くと老害が「HTMLだって手書きでやってきた」とかほざくんだがナンセンス 今時のCSS&JavaScriptごちゃごちゃに入り交じってる案件メモ帳でやってみろってんだ
Blendは敷居高いと思うが windowsFormで作る程度のならVisualStudioでドラッグ&ドロップで行けるだろ
>>411 こういうの見ると
あぁ、この人ってWPF使った事ないのに批判してるんだな と哀れに思うわ。
実際は
>>412 なのにまるで分かってない。
否定だけなら子供でもできる 反論があるなら根拠を述べよ
>>411 のほうが老害くさいよな
どうせVB6のクラサバみたいなのしか作ったこと無いくせにw
TabControlの複数のページでListViewを表示していて、 GridViewの列の並びや幅などを同期させたいのですが、どのようにすればいいのでしょう 今はページを切り替える際に、列を作り直してるんですが、非常に無駄なことをしている気がします GridView.Columnsあたりに、共通のソースをバインディングするとかできませんかね
>>412 まあ、しゃあない。
Adobe 製品とか見てみなって。
ビジュアルデザイン系のツールみんなあんな感じだから。
バカチョンって奴ね いいんだよ雑魚グラマが増えて仕事が尻拭い中心になったんだ ここらで敷居をあげて少し淘汰されたほうがいい
>>412 その程度のモンをわざわざWPFで作る意味ってなんだよwwwww
不自由環境に快感を見出すマゾなのか?
その程度のモンならWPFだから特別難しいってことはないだろ デザイナでコントロール貼り付けてプロパティ弄ってダブルクリックしてイベントハンドラ書くだけ WinFormsと何が違う?
422 :
420 :2010/11/06(土) 11:16:41
>>421 怖いんだ・・
とにかくwpfが怖いんだ!
WPF ToolKitのDataGridのTemplateってどうすればいいんだすか
424 :
305 :2010/11/06(土) 14:10:31
>>317 デリゲートもインターフェースもやったことなかったが
一晩かけていろいろ調べてなんとなくわかった
独自のコマンドを作るにはICommandインターフェースを使ったクラスを自作しないといけなくて
そのためにDelegateCommandクラスが作られていて、普通はここに実行する内容を書けばいいはずだけど
汎用的に使えるように、具体的な実行内容はViewModelでして、DelegateCommandクラスでは
デリゲートを宣言して実行メソッドを呼び出しているって感じかな?
もしくは、コンストラクタの引数にメソッドを変数みたいに渡したいからDelegateを使っているのか?
そこらへんはよくわからないが、なんとなくやっていることはわかった気がする
これって、メニューやボタンがクリックされたらどうするかというイベントハンドラを大量に書かないためにと、
別にボタンを作って作成ボタンとは違った振る舞いの独自のコマンドを作るときも
DelegateCommandクラスを利用することで、無駄なコードを書かないようにするため
こういうややこしいことをしているのは、こういう理由だからって理解でOK?
425 :
305 :2010/11/06(土) 14:14:09
訂正 >これって、メニューやボタンがクリックされたらどうするかというイベントハンドラを大量に書かないためにと、 ボタンを作成するために、メニューやボタンのイベントハンドラを大量に書かないためにと
違うよ ViewModelをViewに依存させないため。 イベントハンドラを追加するときってイベントを受ける側で送る側にイベントハンドラを登録するので ViewModelの中でイベントハンドラをViewに結び付けるとViewModelがViewに依存してしまう。 そこで逆にViewModelでは「俺はこれだけのコマンドをサポートしている。勝手に呼び出せ」という風に コマンドを公開するだけにして、コマンドを具体的なイベントに結び付けるのはView側で行う。
このあたりは悩み所だよなぁ。どこで切るかケースバイケース過ぎる。 ViewModelはViewのシャドウなわけである程度依存するのは仕方ないのでは? 例えば選択状態をViewModelが知っているだけでも、 ViewModelはViewが選択機能を持つことを知っていることになる。 MVVMのそもそもの動機(自動回帰テスト、スキンに依存しない構造)を考えると、 ViewModelはViewの機能には依存しても、Viewの"インスタンスに"依存しない、が正しい気がする。
428 :
305 :2010/11/06(土) 15:02:44
>>426 依存させないのは
例えばボタンクリックで作成だったのを変更して
メニューからのみボタンを作成にすることにしたときに
イベントハンドラだと書き換えたりしなければいけないから
GUIの変更がしづらくなる
だからコマンドバインディングにコマンドを登録だけして
どのコマンドをどの時点で呼ぶかは気にすることは無いという感じかな
WPFのコマンドは実装を含まず意味を表すのが基本で云々という講釈↓
コマンドなんてpublicメソッドと同じ ただメソッドだとXAMLにちょろっと書くだけで自動的に呼び出されるというわけにはいかないので ちょっと回りくどい仕組みになってるだけ
>>427 ViewがViewModelの用意する機能を使うかどうかは自由なので、
ViewModelがViewを知っているとはいえないんじゃないかな。
WPFでコマンドっていうなんか回りくどいのを推奨してるのは、
XAMLがプロパティと相性のいい言語だからということと、
実行の可否(CanExecute)を持たせることができるってことくらいかな。
ObjectDataProvider使えばXAMLで直接メソッドを指定することもできるはず(未確認)
だけどこれは記述が汚くなるよね。
433 :
305 :2010/11/06(土) 15:22:40
あと、DelegateCommandクラスでデリゲート宣言して、ViewModelのメソッドを呼び出しているのはなぜかわからない 依存させたくないだけなら、DelegateCommandクラスでViewModelのExecuteの内容を書けばいいですよね? 依存させないようにするにはRoutedCommandをコマンドバインディングに登録するだけでいいのですから ViewModel内にコマンドの実行内容Executedを書くということは、 本質は違うけど、WinformsでいうとイベントハンドラをForm1に大量に書いていくのと同じような気がするんだけど? コマンドはコマンドで分けた方がよくないですか?
いくらクラス分けようがコマンドの実行内容はViewModelにしっかり依存してるんだから ViewModelとコマンドを分けても見づらくなるだけで意味ないだろ。 ViewとViewModelを分けるのは主にViewModelの単体テストやViewの変更を行いやすくするため。 ご察しの通り大規模開発向けの仕組みだから要らないと思うなら要らない。
435 :
305 :2010/11/06(土) 15:32:41
>>434 そっかー、今のとこ恩恵は薄いけど
いつも規模が大きくなると途中で挫折してたから
今回はこの考え方でやってみます
436 :
305 :2010/11/06(土) 15:40:26
まとめると、イベントで処理すると、VIEWの個々の部品に対して依存した実装になるので 変更耐性を強くするために、コマンドで通話する で、コマンドの実行内容はViewModelに依存しているから、 ViewModelで実装するためにコマンドからデリゲートで呼び出す形にすると こんな感じかな わかってくるとちょっとおもしろくなってきた
いいから独演会してねえではよ死ね
438 :
305 :2010/11/06(土) 18:14:51
MVVSでプログラミングするのはWPFプログラマだけという 奇妙な世界ができあがるわけですね 囲い込んでるのか首を絞めてるのかわかりませんね プログラミングシェーダの世界ですね
MVVMはMVCの亜種で、ごくありふれた設計なんだが
440 :
305 :2010/11/06(土) 18:31:01
MVC亜種でもMVVM経験者じゃないとコードの意味すら伝わらないじゃないですか
MVCだろうがMVPだろうが統一されたやり方あるなら教えてたもれ
「WPF/Silverlightで開発する時は、こうすると管理が楽ですよー」 ってだけの話なのに 一体何が問題になるのやら、さっぱり解らん。 概念を理解するのに、大して学習コストが掛かる訳でも無いし。 (MVVMを厳密に適用した実装を行うのは、若干慣れが要るが)
MVVMはさ MとVを直接バインドしちゃうと融通効かないから Vに近いレイヤを一個経由しようってだけだよ コンポジッション系のフレームワークと融合してややこしいことになってるとこがあるけど
>>438 成り済ましやめてもらえませんか?
MVVSなんてデリゲートもインターフェースも知らない初心者のぼくが知るわけないでしょ
MVVMなんて、JavaでStrutsからDI系フレームワークに移行させられるよりよっぽど覚えやすいと思うんだけど
WinFormsみたいに密結合していいならWPFでもMVVM使わなくていい。 WPFで開発するときの単なる方法論の一つ。
そこまでは素人の考え。 玄人になるとMVVM一択になってくる。
MVVMを理解して使い慣れると、二度と元に戻りたくなくなる。
>>447 初心者がいきなり全部理解するのは無理だから、最初は深く使わずにM-Vから始めるのは悪い事ではないだろう。
MVVMってなんの話してるのかと思ったら まんま俺が徹夜で勉強してたことじゃないかw しかも検索したらトップでDelegateCommandの解説してるし もしかして教えてくれたのはそこのひと?
っていうかWPFはWindowの継承が実質的に出来ないから、Windowにコーディングする気にはならん
そもそも実装を継承する考えがいまさらでしょ。
教条主義の意味分かって言ってるのか?
VMのOnPropertyChangedについて、 public int x { get { return _model.x; } set { if(_model.x != value) // ← コレ ★ { _model.x = value; OnPropertyChanged("x"); } } } ★のチェックが無いとbindingのTwoWayで無限ループに なりそうな気がするんですけど、必要ないんでしょうか。 ターゲット側でチェックされてる?大丈夫?
ターゲット側でもチェックされてるが 余計なイベント通知はない方がいいだろ
ありがとー。 無いとなんか気持ち悪いし、つけときます。
Canvasにグリッドや曲線を自分で描いてマウスイベントで色々処理したい・・・ というプログラムを作りたいんだけどWinFormよりWPFのほうが容易にできますか?
InkCanvas
459 :
デフォルトの名無しさん :2010/11/07(日) 11:09:57
MVVMを使う程の規模なのか。
MVVMでやってみたいけどどこから手を付けていいのか入り口すらわからない\(^o^)/
WPFって結局WinFormsとあんまり変わらない気がする Form1がView.xamlとView.csの二つのファイルに分かれただけで 表示部分とそれをコントロールする部分はくっついたままなのね ただ、WinFormで苦労したGUI部分が簡単にいじれるようになっただけで Form1にゴリゴリコード書くようにView.csにゴリゴリ書いてける MVVMのデザインパターンもWinFormでもやってきたことだからそれほど難しくない どうせなら、Viewのコントロールする部分もXamlでしか書けないようにして C#のコードではロジックしか書けないようにしてしまえばいいのに そうすれば、これはViewに関する事だから〜と意識的にロジックと表示部分をわけなければいけない ということがなくなるんじゃない?
C#で書かないことにどれだけのメリットがあるか微妙
というかあいつはプログラム初心者だろ… 世の中の流れと考えについて行けてない 最低でも5言語使って10のフレームワークを使え 言う事が無茶苦茶すぎる
5つくらいの言語でプログラム書いてきたなんて、 そのくらいは普通にごろごろ居るけどな。 フレームワークは使えるじゃなくてそれぞれの言語で 作ってきたじゃねえと基礎力がどうだかなって感じがする。
でも転職したり社内で評価されるためにはそういうスキルは必要
分離したほうがいいなら、分離コードしか書けない言語にすればいいじゃない viewに対してプロパティ以外で操作するのは無理にしちゃえばいい それなのにロジックと混同して使えるようにしているから 解説サイトも簡潔に説明するためにイベントハンドラにロジック直接書いて それ見た初心者がそういうもんだと思って真似するわけじゃない VIEW言語、Viewコントローラー言語、VIEWModel言語、Model言語 とか作ってさ、完全に分けてしまえばいいんだよ
>>467 ちょっと待て、落ち着いて考えて欲しい。
お前さんXAMLとC#だけでさえ手に余ってるのに、さらに倍に増やせとか馬鹿だろw
どうせ消えていくものに貴重な記憶力を割く気がしない 人間の記憶量には限りがあるんだよ
>>467 は御託並べる前にMVVMじゃなきゃ死ぬレベルの複雑なビューを作ってみるべき
どうせV:VMが1:1+αのコードしか書いてないんじゃないの?
471 :
デフォルトの名無しさん :2010/11/08(月) 20:48:35
ニュース速+板で祭り中!!
【尖閣ビデオ】 中国漁船衝突の映像、YouTubeに流出…動画は海保研修用のものと判明、複数本コピーが存在★2XX
http://kamome.2ch.net/newsplus/ 現在の1スレ消費速度平均6〜8分!!
ニュース速報+板史上の歴代最多数スレ
1位 263 朝日新聞社員、2ちゃんねる差別書き込み事件 (2009/04)
2位 ★2XX 中国漁船衝突の映像、YouTubeに流出 ←★New!★ (2010/11)
3位 230 毎日新聞社デイリーニューズ「WaiWai」問題 (2008/07)
4位 156 韓国、2ちゃんねる米国鯖にサイバーテロ (2010/03)
5位 117 2ちゃんねる閉鎖問題 (2007/01)
>>469 苦労して覚えた知識でも否応なしにたった数年で陳腐化するのに何でプログラミングなんてやってんの?
>>467 最初はそういうもんだ。基礎を勉強してないのに最初から応用編とか無謀すぎる。
初心者相手にいきなりpatterns & practicesのPrismみたいなの持ってきたら一瞬で挫折する。
>>470 複雑なビューってどういうのかよくわからないけど
WinFormではマンガミーヤと同じようなUIのソフトを作った
それプラス、書庫内の画像を自動で画像変換して圧縮し直すなどの機能をつけたりなど
でも途中でかなり面倒なことになってやめたけど
今回はそれに動画も閲覧できる機能をつけて作ってみようと奮闘中です
>>473 TreeViewとか、タブドキュメントインターフェイスとか
>473 イラストレーターみたいなドローソフト作って味噌
>>475 数学ちゃんと勉強しなかった低学歴だから無理w
XNAで3D版シムシティみたいなのを作ろうとしたけど
適当にビル立てただけでやめちゃった
学歴よりむしろ根性が足りないなw
構想が実力以上のものだから途中で力尽きちゃうんですよね それでも座標変換に線形代数の知識が必要だから そういうの勉強したし、シェーダーについても勉強して 3Dの格子マップにランダムにビルが建つようにはできたけど それで満足しちゃった 今のゲームって個人でできるレベルじゃないから 市販ゲームと比べてあまりにもしょぼすぎる
自分語りいらねえ 居つくなよ馬鹿
でもさ3Dとか例外的に数学必要だがプログラム言語って 語学と同じでコマンドや文法覚えるだけだから文系向きじゃねーの
ゲーム開発の心得があるのなら WPFでゲームのUI作るのも面白いんじゃないか。 SlimDXのWPF Interopあたりを使う。D3DImageに描画してDirectXから使ってもいいけど アニメーション使って作ればUIだけは市販ゲームぽくなるぜw
>>480 やめろ馬鹿
俺の心休まる一時を邪魔すんな
ちょっと質問なんですが MVVMで画像を表示するソフトを作る場合 モニタ、再生機器、画像の入ったDVDをイメージして作ろうと思っています VMのプロパティでImagesを公開し、画像ファイル名などはDataGridに表示され 選択することで画像が表示される。ここまではバインドなどでxamlだけでできる ボタンを押したらDataGrid内の選択項目が移動して次の画像が表示される動作 ↑View.csで記述? ボタンを押すとDataGridの項目削除と画像ファイルの削除をするといった動作 ↑この場合はどのようにすればいいですか? ファイルの削除はコマンドでVMにやらせるとして、項目の削除はどうすればできますか?
vipでやれ
>>484 選択項目を取得設定するプロパティをVMに定義
Viewには何もさせなくていい。ほんとにバインドだけでいい。
DataGridの項目もVMに持たせておいてViewではバインドするだけ。
>>486 なるほど、それぐらいやらないと分離したことにならないんですね
WinFormで作ったときはそこの境界が曖昧で苦労した
ありがとうございます
>Viewには何もさせなくていい。ほんとにバインドだけでいい
これを何度も言い聞かせながら作ります
デスナ
>>481 そもそもとして、自然言語でも、文法は理系の方が強いよ、実は。
詩的表現の崩れた文読むのは苦手だけど。
関数化された機能をシナリオに沿って呼び出すだけなら文系向き その関数の中身を書くのは理系向き
マ板でやれ
>>490 口げんかでも理系のが勝つよね
でも、そんなことしたら確実に嫌われるがw
NGにしてすっきり
英語で口喧嘩して理系を黙らせた俺が通るよ
それ英語で書けよw
excite!でドイツ語再翻訳したら酷い事になった。どうしてくれる 英語で口喧嘩して理系を黙らせた俺が通るよ Ich wer ich streite mich in Englisch, und schlos physischen Wissenschaftsgehen zu 私は主張します誰、私は英語の私です、そして、ロックされる身体的なWissenschaftsgehen
My English shut the fucked up scientist
日本語でおk
WindowのMinWidthとMinHeightを設定して最大化したWindow のWidthとHeightって変えられないんでしょうか? WindowStateをいったんNormalにしてWidthとHeightを変えて またMaximizedを設定すれば一応できたのですが 画面がちらつくのでこの手はあまり使いたくないです。
白熱しているところ低レベルな質問で申し訳ないんですが、
VisualStateManagerについて教えてください。
やりたいことはWindowがアクティブなときとディアクテブなときで
コントロールの背景色を変えることです。
最初はリソースにアクティブ用とディアクティブ用のブラシを用意して、
ActivatedとDeactivatedのイベントで直接BackGroundを切り替えていたんですが、
そういうのはVisualStateManagerを使えという天啓がありまして、今試行錯誤しているところです。
とりあえずかいたコードはこんな感じです(動きませんが)
http://ideone.com/jxA1r 間違っている箇所や、正しい使い方を教えていただけないでしょうか。
ついでにこういう場合、背景用のブラシを1個リソースとして用意して動的バインディングで
色を変えれば楽なような気もします。
まだWPF始めたばかりでどの様な方法がベストなのか判断がつかないので、そのあたりのアドバイスも
出来ればお願いします。
> 動きませんが > 今試行錯誤しているところです。 > まだWPF始めたばかりで > 間違っている箇所や、正しい使い方を教えていただけないでしょうか。 > 色を変えれば楽なような気もします。 たったこれだけの行数でこれだけ「教えて君臭」を漂わせる書き込みも珍しい。 一つ良い事を教えておく。俺たちは君の道具でも、無償サポセンでもない。
>>503 これほど「わかりません」を漂わせる書き込みも略
わからないからって煽るなよ
「教えて君臭」漂わせてるっていうか教えて君そのものだよな 教えてくれって書いてあるし
質問だしなw
WPF難しいって言う人多いけど、皆さんは習得(どの程度で習得とするかは適当に)にどの位かかりました?
アプリ作れるまで3日ぐらい 難しい方だよねWPFは
>>503 周りがスルーしている中わざわざレスしていただきありがとうございます。
質問する場所間違えたなぁと後悔していましたが、
このまま誰にも相手にされずに流れていくのも寂しいなと思っていたところでした。
これを励みに今日もWPFの勉強に精を出したいと思います。
3.5と4でバインディングの何が変わったのか教えてくれ コンパイルできない
単発質問なんですけど、SharedSizeGroupを使ってポップアップメニューのアイテムの要素を整列をする際に、 Separatorのアイテムにも、サイズグループを適用したい場合はどのようにすればいいですか。 たとえばVisual Studioのポップアップメニューだと、セパレータはアイコンのセルに 重っていないけど、それと同じようなことがしたいです。 SubmenuItemTemplateKeyに適用するコントロールテンプレートと同様のものを SeparatorStyleKeyスタイルのTemplateプロパティに適用して、同じサイズグループを 使いたいと思ってたんですが、セパレータのアイテムだけうまくグループ化されません。
Windowsフォームで作ったアプリのボタンの形状は クライアントのOSに依存すると思うのですが WPFのコントロールはOSに依存しないのですか? xpしかないので確かめられないんですけど
システムカラーとか使ってたら当然依存する
既定のTemplateはOSのテーマに従った外見になるように作られてる
ここてソースうpしたら指摘もらえたりする?
一つ良い事を教えておく。俺たちは君の道具でも、無償サポセンでもない。 by 503
役立たず
MSDNフォーラムに行けよ
いいからさっさと質問しろ
>>502 のように、動かないと書いてもどう動かないか書かない、
試行錯誤したと書いても何を試しどうなったのか書かない、
デバッグ作業を他人に丸投げした挙句に
"始めたばかり"を錦の旗のように掲げるようなカキコじゃなきゃ
大抵回答はもらえると思うぞ。
ごちゃごちゃ理屈っぽい奴らだな 嫌なら答えなければいいだろ 始めたばかりって前置きするのは普通の会話だろ やさしく教えてねー 初心者的間違いしてますーって意味含んで言ってるんだろ おまえは日常で人と会話できるのか?
>>522 みたいな人間的に終わっている奴は
ある程度プログラミングできてもずっとこき使われるだけの平止まりだろな
根暗で誰からも相手されず、飲みにも誘ってもらえない童貞
いつか鬱病になって自殺するんだろうな
そんなレッテル貼りいらんわ
しょうもねえw
同僚にもいるな、プログラム好きだけど人と接するのが嫌いなやつ 気持ち悪い、早くやめればいいのに
>やりたいことはWindowがアクティブなときとディアクテブなときで >コントロールの背景色を変えることです。 この説明があって動かないっていったら十分すぎる説明だろ おまけに貼っつけてあるコードだって大して長くないし 最初から教える気ないのに偉そうなこと言うな まあ俺も教える気ないけどな
自演擁護うぜえ
「俺も」だってw
自演乙
俺俺俺も
WPFやってみた Windows Formとは作り方がかなり異なってるな 依存関係プロパティとか、以前はなかったものがあるみたいだし。 解説サイトも少ないし、C#5.0が出るくらいまで様子見しててもよさそうだな。
様子見は賛成
俺は日和見で
WPFのフリーソフトがあったら使う? まったく同じ機能のFormアプリケーションとWPFアプリケーションを比べた場合、 どちらが好まれるの?
WPFはエロゲ開発者向けですね
>>541 機能が同じでUXが違うということ?
無駄に重くて面倒くさいUIになってればWPFは避けられるし
美しくスッキリ見やすくなっていればWPFを選ぶでしょ
現状だとWPF使う人のほうがスキルが上だろうからWPFの方を選ぶな
DataGrid置いただけなのに GF9800だとfpsが30しかでない スクロールするとfpsは一桁 相当重いね
何言い出してるのこの子…
ボタンの中にボタンを入れられるんだな クソワロタ <Button> <Button> </Button> </Button> ってやったらボタンの中にボタンが入った
>>541 機能もUIも完全に同一のアプリケーションが二種類有ったら、
一般ユーザは 「どっちでも良い」 って言うだろう。
一部のナード層は、 「実行速度が」「メモリ消費量が」 とか言うかも知んないけど
未だにIEのシェアが6割も有る様に、多数のユーザはそこまで気にしない。
(強いて挙げるとすれば、古いOSを使ってるユーザだと
.NET Framework必須な点が、若干面倒に思われるかもだが)
WinFormかWPFかってのは、ユーザ視点でどうこうじゃなく
開発側が、生産性を考えてどちらを使うか選ぶ物なんじゃないか?
>機能もUIも完全に同一のアプリケーション ならわざわざ間口が狭いWPFは使わんだろう。 何かしらWPFならではの機能を使って快適・高機能になるとかの理由で使うんじゃないの。 あとは将来webに持っていく可能性有りとかならSilverlightへの移植がしやすいとかで使うかもしれない
>>547 ああ、あるある。
ComboBoxの中にDataGridが入ったりとか、マジでキモいUIが作れるよな…w
コンテンツモデルが奇っ怪だよなあ エッセンシャルWPF読むまで理解できなかった
デザイナが謎のぬるぽで、 でもエラー0で普通に起動できて普通に動いて・・・ って2時間悩んだ末、VS再起動したら直った。 ふざくんな!
554 :
デフォルトの名無しさん :2010/11/13(土) 20:54:40
>>551 コンテンツモデルの柔軟さは認めるけど、結局見た目の組み合わせじゃろくなもんで
きないんだよなあ。コントロールの振る舞いは組み合わせじゃどうにもならないか
ら、実はあまり柔軟でも簡単でもない。WPFのコンボボックス一つとっても最初
はリストボックス使って実装しようとしたけど、結局スクラッチから作ってるし。ボ
タンの中にボタンみたいな、なんの意味もないもんしかできない。
つまり吉里吉里でいいということですね
まったく持ってその通りですわ
見た目の組み合わせはともかくとして、 GridやStackpanelは便利だと思う
コンテンツモデルはたまにとんでもない挙動をするからなぁ 結局部品の中身を理解していないと使いこなせない。
超エリート集団が作ったものがそんな糞なわけがない
Meもか?
Meたんとか超可愛いじゃない
xamlって#regionみたいに折りたたんだりできないの?
タグ単位で折りたためるじゃないか
できたー
>>563 そうだけど、コメントにした瞬間に萎える
Meは2000の片手間に鼻くそほじりながら作ったんだろ。 カスタムコントロール作ってるけど、なんか作り方が独特な感じで難しい。 Xaml側でイベントハンドラ登録できないので、要素のName属性使ってコード側から インスタンス取得、そしてハンドラ登録という流れになる。 処理を結びつけるのはコマンドでやれってことなんだろうけど、 コマンドは発生タイミングを細かく制御できないよね? 例えば、2桁入力できるTextBoxを横に何個も並べたとして、 2桁入力した時点で自動的に右にフォーカス移動させるようにしたいときって イベントだとTextBoxChangedとか使えばいいけど、コマンドではどうするのか。 なんだかいつものWindowとかUserControlでやる書き方とは違って、 コード側の記述が増えてしまってる。
>Xaml側でイベントハンドラ登録できないので できるだろ
>>568 どうやるの?
>>569 扱いやすいコントロールをつくろうとしてるんだけど、なんでそう思ったの?
カスタムコントロールは単体で配布したりするような ちゃんとしたコントロールを作るためのもの。WinFormsでもカスタムコントロールは OnPaintオーバーライド必須だっただろ。
>>572 ResourceDictionaryに書いてるからデザイナ使えないよ。
<Button Click= って書いても候補すらでないしコードビハインドが無いから指定できない。
これはカスタムコントロールの話だからね。
>>571 やっぱエレガントに書くのは諦めたほうがいいかな。
WinFormsやったことないからどうなってたのかわからん。
>>573 SilverLight4をインストールしたらできる
>>574 流れ的にちょっと分かりにくいので何が出来るのか詳しく頼んます。
デザイナ使ってのデザイン?
Silverlight4 ToolkitにはWPFデザイナの更新が多数含まれてるので Silverlight使わないとしてもWPF使うなら必ずインストールしましょう
はーい
>>577 無くても普通にインテリセンス機能してるけど?
例えばブラシのカラー候補とか出る
自前のプロパティなどは候補には出てこないけど
Silverlight4 Toolkit 入れたらそれもできるようになる?
コントロールの削除はXamlのコードだけではできないですよね?
インジケータ的なものならVisualStateManagerで隠す データ項目に対応するものならバインド元のデータを消す
それってどうするの? List<string>にボタン名の一覧が入っていて 一覧から削除すると、そのボタンが削除されるといったこともできますか?
できる DataTemplateでググれ
Listで出来るか? ObservableCollectionじゃなくて?
List<T>では削除はできないけど別にそういうことを聞いてるんじゃないでしょう
587 :
582 :2010/11/14(日) 00:19:37
588 :
582 :2010/11/14(日) 00:33:18
ああ、でも
>>584 はちょっと違う
データクラスで保持してるコレクションデータを
ObservableCollectionに毎回追加しないといけないから
やっぱりList<string>のボタン名でそれぞれのボタンで表示して
任意のボタンを削除するならDataTemplateですか?
>>588 List をラップした INotifyCollectionChanged 実装クラス作るのがいいと思うけど、
面倒だからよく ObservableCollection にコピー持たせる。
モデルとかビューモデル側でコレクションに要素足したときに
即座にビューに反映されて欲しければ INotifyCollectionChanged 必須。
590 :
デフォルトの名無しさん :2010/11/14(日) 01:19:59
>>585 カスタムコントロールのXamlはルート要素がResourceDictionaryだからハンドラ指定はできないはずだが。
591 :
582 :2010/11/14(日) 01:20:41
>>589 なるほどー、いろいろ試してみます
ありがとうございます
最初からモデルかビューモデルに変更通知機能を入れとくのがベター さすがにそんな上のレベルでListに依存するのは設計としてまずい
593 :
582 :2010/11/14(日) 01:38:57
>>592 ビューモデルにINotifyCollectionChangedを実装しても
List<T>.Addでは変更通知されないですね
List<T>クラスを自作してそこにINotifyCollectionChanged入れるしかないのかな
そうなるとObservableCollectionでプロパティ公開してデータクラスのList<T>の値を追加していく方が楽なのかな
<WrapPanel Grid.Column="0"> <ItemsControl ItemsSource="{Binding Names}"> <ItemsControl.ItemTemplate> <DataTemplate> <Button Content="{Binding}" /> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> </WrapPanel> 上記だとただ縦に並ぶだけです パネルのデータテンプレートってどうすればいいですか? かれころ5時間ぐらいぐぐってもわかりません 助けて
テンプレートってレベルでいいなら、ItemsPanel かな。 もっと柔軟に、レイアウト方法を自作したいなら Panel クラス継承して MeasureOverride とかを自作。
ItemsPanel使ってどうすればいいんでしょうか? 質問する前からその単語でもぐぐってます ItemsPanelTemplateでもぐぐってるけど 同じようなコードが見つからないんです 前にテスト用に作った時はあっさり作れたのでメモってなかったのが失敗
半年ggr
こういうケチ臭いところが 世界的に見て日本のプログラマのスキルが低い所以なんだろうね 優秀なソフトはいつも海外 ゲームも海外 日本は自社製の糞重いフレームワークで時代遅れのゲームしか作れない
>>599 むしろ基礎すら理解できていないコード切り貼り魔がいることが原因だと思う。
5時間ググる前に何が足りないか3分考えろ。
海外フォーラムで質問すれば〜
>>593 データクラスでList<T>公開して
周りから弄繰り回すこと自体が間違ってるよ
実際に実装の変更に対応できてないわけで、publicフィールド公開してんのと一緒だぞそれ
>>603 お前はデータクラスの値をVMで毎回コピーしてVに公開してんのか?
コピーする必要なんか無いだろ。 頭使えよ。。。
WPFは大きさを相対的にそろえられるのか <Button Height="3*"/> <Button Height="2*"/> みたいに。 今までだとちょっとだけ面倒だったな
ちょっとしかうれしくないw
ちょっとした幸せでいいんだ
Grid 使った auto の方が便利かも。 多言語対応したりフォントサイズ変更したりに強いし。
何も考えずにprismを入れたらユーザーフォルダがレイプされた
prismには勝てなかったよ…
WPFはデザイナで変えた部分とXMALが前面に出されてるな。 古いWindows Formアプリケーションだと デザイナで変更された部分は基本的に隠されててキモかった。 Button1.click += button1_Click; この部分が隠されてて button1_Click(object,eventargs) だけ現れててマジきもい
InitializeComponent(); 簡単に見れたじゃん。 WPFの方が別ファイルでコソコソ作られててキモイ。
隠されてはないだろ。
InitializeComponent();は作成順序で不具合でたりするから 直接弄れるWPFのが便利
WPFの隠し方は異常
>>617 どこが隠蔽されてるって?XAMLが理解できないって話か?だとしたらお前が悪いw
あれは宣言型言語でオブジェクト ツリーを構築しているだけ。
全てWinFormsに似た等価な手続型言語で表すことができるが、
誰もやろうとしないのはそれがメンテナンス性を著しく損ねてしまう結果に終わると知っているから。
ま、WPF使った事ない人は表面だけ見て隠蔽されてるように感じるのだろう。
いきなり煽りから本題に入るとは恐れ入ります。 プログラミングにどっぷりつかってる人間ってコミュニケーション能力低いってよく言われるが こういうことなのでしょうな。
まあおちつけ
XAMLいい 最初、C#の文法だけでなくこっちも覚えなきゃならないのかよ とか思ってたら案外簡単だった。 <Button Height="200"> みたいに書けばいいだけみたいだ。 むしろButton button1=new Button();button1.Height=100; とかやるより簡単かもしれんね。
その程度で全部済ませられるなら誰も悩まない
ToggleButtonとContextMenuの組み合わせで、 トグルのIsCheckedとメニューのIsOpenをバインドして、表示させることはできたけれど、 右ボタンで、通常通りポップアップさせたときにはContextMenuService.Placementで指定したならびになるのに 左ボタンで、バインディング通して表示させたら、マウスカーソルの位置にポップアップされてしまう どうすればいいの? プログラム書いたらすむんだろうけど
拡張マークアップで 何じゃこの気持ち悪い書式はー!! とプリプリした。
TabControlのItemTemplateってどこに影響するのん? いろんなサンプル見てると、閉じるボタンを付けたり、各タブに関係しそうなんだけど、 じぶんでちっちゃいコード書くとなんにも変わらない
>>626 TabControl.ItemsSourceにバインディングしてる?
バインディングしたらできたよ、ありがとう
コントロールのTextBlockとLabelってどう違うんだろう ただ文字表示するだけでしょ?ほとんど同じに見えるんだが 何が違うの
テキスト描画系のコントロールの使い分けはこんなとこかな。MSDNに全部書いてある。 Labelはコントロールの説明用。 アクセスキーを設定して他のコントロールにフォーカス移したりできる。 TextBlockは少量のテキストをUIに表示するための物。 1行の表示に最適化されているけど数行まで高いパフォーマンスを発揮する。 数行以上のテキストを表示する場合はFlowDocumentを使う。(下に行くほど多機能で重い) FlowDocumentScrollViewer スクロール表示 FlowDocumentPageViewer 1ページ単位のスクロール FlowDocumentReader ユーザが表示モードを切り替える場合に使う --- この辺は低レベルで滅多に使わないけど Glyphs と GlyphRun を使用してグリフ レベルでテキスト コンテンツを生成するのが最速。 書式指定された文字列を描画したいならFormattedTextが適している。
WPFで作ると倍以上時間がかかるな 慣れたらもっと早くなるのか・・・? 保守は楽だけど、作るまでが大変 やっぱりコンソールアプリが最強だな
WPFだとVisual Studioのプロパティのとこに 説明が書いてないし タイマーコンポーネントとか OpenDialogやSaveDialog みたいな便利なコンポーネントも標準でついてないんだね。 残念
>タイマーコンポーネント そもそも非UIデザインのコントロールなのに存在してたのがおかしい。(WM_TIMERの大義名分はあったけど) UIスレッドで処理するならDispatcherTimer >OpenDialogやSaveDialog それは標準である。 Microsoft.Win32.OpenFileDialog Microsoft.Win32.SaveFileDialog .NET3.5まではXP風のクラシックスタイル、.NET4はVista風の新しいスタイル。 .NET3.5でVista風スタイル、.NET4でXP風スタイルを使いたい場合はWinFormsのDialog WPF使ってるのにWinFormsのアセンブリから読み込むのはいい気分じゃないけど、同じのを再定義されるよりは遥かにマシだな。
LabelのContentの内容を、バインドしてるbool値の値によって変更するにはどうすればいいんでしょうか? 例えば、VM上で公開しているbool値のプロパティ IsEnableとバインドしているとして、 IsEnableがTrueの場合: Label Content="可能" IsEnableがFalseの場合: Label Content="不可能" といったことがしたいです。 TriggerかDataTriggerを使えばできそうなんですが、書き方がよくわからず、Intellisenseに怒られてばっかりで。
意図的な空白ってなんだよ…
>>634 普通にDataTriggerの中にSetter入れて文字列変更できるはずだけど
そういう可/不可みたいな一般的なものだったらIValueConverter実装してもいいと思う
その方が使いまわしが楽
リソースとスタイルの違いがよくわからん x : Key = "MyButton" TargetType = "Button" みたいなx :keyいうのがついたらリソース つかないで TargetType = "Button"だけならスタイル でいいのか?
何でそんな偉そうなの。 リソースは最初に用意しといて後で使い回しましょう、って奴で スタイルはプロパティの設定のセット。比較するのがそもそもおかしい。 で、エスパーレスすると、 x:Keyつかないと<Button>全部に適用 x:Keyついたら<Button Style="{StaticResource キー}"> だけに適用
x:KeyはCSSでいうところのIDみたいなもんか
640 :
デフォルトの名無しさん :2010/11/17(水) 17:36:17
というかXAMLはhtml+CSS関連の技術の応用だからなあ・・・
>>634 >>637 おれも2週間前まではそんな感じだったけど
もうマスターしちゃった
デリゲートも完全に理解した
>>640 未修得の技術を教えるのに未修得の技術を例にしても意味がない
そうでもない
なんであいつは未だにコテなの? スキルもないのに自己顕示欲は人よりも強いの?
ずっとコテでいてくれたほうが助かるよ いつ変な吹き出し方してくるか分からんし判別出来た方がいい
NG用にコテ付いてる方が便利 まぁコテなくてもすぐ判別できるぐらい鬱陶しいけどなw いつも変わらぬアホさに安心感すら覚えるようになってきた。 人並みの頭はないけど少しは身に付けて前進している点は評価したい。 こんなのでも使いもせずに見当違いの所を叩いてる連中よりは遥かにマシ
初心者のみなさんはまず沢山のサンプルを見るとこだね なぜそのようにしているのかひとつひとつ調べていくこと そうすれば今の俺みたいにWPFマスターになれる 俺の作り方はまずコンソールアプリを作る ロジックだけに集中するため そしてどうしてもコンソールじゃ足りないGUI部分が見えてくる そしたらそのロジックを利用してWPFでGUIを作る このアプローチはWPFに最適だと思う Winフォームの場合、その手軽さからまずGUIを作りながら いろいろイメージしていって、データやコントロールするクラス を作ったりするだろうけど、WPFではおすすめしない WPFではまず、データ構造とロジックから作り始めた方が効率がいい 簡単なツールの場合はWPFが必要ない場合が多いしね。
いいから素人は評価なんて下さずベット勉強しましょうね^^;
さすがシムシティもどきの表示部分だけ作ってた人のいうことは違うなあ
>>631 コンソールと比べんなw
まあ、マニュアル作らず使ってもらえるとか、
たいていの人でも触れるとかそういう足かせはめるとコンソールの方がかえって楽だけど。
あっ逆、そういう足かせあるとWPFの方が楽。
実際WPFで作られたソフトってほとんどないよね
まだだ、まだこれからだ。
「まだこれから」のまま消えていった技術なんて数知れずだがなw 今気がついたが、ComboboxにAllowDropを設定したけど縁にしかdropできない… PART_EditableTextBoxにもAllowDropを設定しろってことかw
Microsoftが言うにはWPFは 「かっこいい外観」が特徴の一つらしいが それ使うのはExpress Brendとかいう70000円もするソフト必要らしいな。 単純な外観のならVisual Studioでもいいけど、3D表示やあにめーしょん駆使しまくって派手なソフトは きついらしい。
そりゃまあ、対抗製品がAdobeスイートだっけ? Adobeのひとしきり入ってるやつだから。
VS持ってるならもっと安く買えるよ。 それこそExpressですら対象だから定価は罠。
アニメーションはVisual Studioだけでもどうとでもなるだろ。
どうとでもという言葉の意味が、10倍とか時間かけてもいいというみなら 確かにどうとでもなる。
かっこいい外観なんて飾りさ
かっこいい外見なんて飾りです 上の人はそれがわかってるから買ってくれんのです
でもどーせ使うならかっこいいほうがいいよね。 MSもそう言ってる。
二つのウィンドウを持ったWPFどうやんの? まずVSでWPFアプリケーション作成して MainWindowとかいうのが出てくるから、XAMLでName="MainWIndow" に変更 次にSHIFT+CTRL+Aで新しい項目→WPFウィンドウ これで二つ目のWPFのほうにName="SubWindow" ってやって MainWindowのコンストラクタの部分に SubWindow.Show() みたいに書いても、SubWIndowは存在しません とか言われる。
>>661 かっこよくて使いやすいならそれがいいね。
>>662 子ウィンドウ作成
SubWindow subWnd = new SubWindow();
subWnd.Owner = this;//親ウィンドウのインスタンス
subWnd.Show();
親の初期化が完了してないと子は作れない(コンストラクタでは×)からLoadedイベント以降に作るように
PowerShell ISEってやつがWPFっぽい
データバインディングのXMALの書き方について教えてくれ テキストボックスとボタンを配置して、テキストボックスに書かれている内容が ボタンのContentになる、よくあるサンプルみたいなもの作ってみたんだが。 <TextBox Name="T"/> <Button Content="{Binding ElementName="T" Path="Text}"/> こんな感じにしてみたんだが、エラーになる。 <Button> <Binding ElementName="T" Path="Text"/> </Button> ってやったら、ちゃんと動いた。 データバインディングの{Binding なんちゃら} って直接書かずにプロパティ要素構文として書かないとダメなの?
コンパイル通らない単なる構文ミスじゃねぇか… <Button Content="{Binding ElementName=T, Path=Text}"/>
マジだ なぜ <Button> と</Button>の間にBindingを入れると ElementName="T" みたいに"が入ってるのに Content=で直接書いたら"を入れちゃいけないんだ? 変な規則だなー
なぜって…C#すら使えないとは思わなかった。 二重引用符入れ子にすんなよw 文字列の中に二重引用符入れたいなら(XAML,C#に限らず)普通エスケープするでしょ "\"" 引用符を入れ子にしたいなら二重引用符["]の中に引用符[']入れるってのもよくある一般的な方法。 なんでこんな初歩的な事に気が付かないんだw
ある程度慣れたらBlend買え いろいろ捗るぞ
>>668 XML だからしょうがないだろ。
あと、Content="{Binding ...}" の方はマークアップ拡張、
<Binding ... /> の方は要素構文で、XAML のパース方法が違う。
Visual Studio2010の XAMLのコードエディタがバグや使いづらい点が多すぎる ダメだこりゃ
バグや要望あったらぜひ報告してやってくれ
Visual Studio 2008 では俺の作った ColorPicker コントロールが 表示されない。2010 使いたいよい
Visual C#のXAMLのコードエディタで 複数の同じようなコントロールがあるときそのコード上の配置を同じにするにはどうやればいい? <Rowdefinition Height=なんちゃら name=なんちゃら VerticalAlignment=なんちゃら・・・ その他/> <Rowdefinition Name=なんちゃら margin=なんちゃら VerticalAlignment=なんちゃら name=なんちゃら 他/> みたいなぐちゃぐちゃしたコードになってなんとなく気持ち悪いんだけど上と下を自動整理するにはどうしたらいい? そういう昨日ないの?
>>676 配置を同じって、どういう意味だ。同じ箇所にまとめるということなのか。
同じ座標に重ねて配置するという意味なのか。
気持ち悪いけど上と下を自動整理ってなんだ。
質問が曖昧過ぎる。
意味がわからん
RowDefinitionの属性の記述順を、自動一括整理して欲しいってことだろ
680 :
679 :2010/11/19(金) 14:57:53
やりかたは知らんけど
XMLの整形機能はついてるけど、記述順は変わらないし、1行1属性になってしまうので、 外部ツールにXML整形ツールでも登録した方がいいと思う。
何か正しい順番でもあるのか?
属性の自動整理できないのか 自分でやるしかないのかー 面倒だな <Width="100" Name="ABC" Height="200"/> <Name="DEF" Height"300" Width="200"/> みたいな書き方マジきもい 一行が短いならまだいいけど、長いとキモ過ぎる
まあ、XAML 手書きをメインにやるか、デザインツール使うなら生成される XAML 気にしないかの2択。
まあ何だ、自分ひとりでこだわる分にはいいが プロジェクトで「誰だ!せっかく俺が整理したソースを!」とか言い出さんようにな
デザイナでカットペーストすれば一応辞書順になる
>>687 言うだろJK。書き方が混ざるとミスが入りやすくなる。
他人がコードをいじる時は自分のスタイルに合わせてもらい、
他人のコードをいじる時はそのスタイルに合わせる。
プロジェクトの規約で「揃える事」と決まってればそうすればいい。 そうでなきゃ属性の順番なんぞがそろってるだとか気にも留めないから その人なりのスタイルだとなんて認識してもらえない そんなくだらん事で自分なりのスタイルとか主張するな。
マウスが乗ったら「あいうえお」と表示されるボタンを作ろうとした <Button> <Style TargetType="Button"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Content" Value="あいうえお"/> </Trigger> </Style.Triggers> </Style> </Button> これやったら、ButtonのContentがSystem.Windows.Styleって表示されて マウスのっけてもかわらない どこが間違ってる?
うん
<Button> <Button.Style> // ButtonのStyleプロパティが <Style TargetType="Button"> // Styleクラス 〜 </Style> </Button.Style> Buttonの子はContent </Button>
TextBlockの下線の位置って変えられますか? フォントにもよるけど、ニコニコという言葉に下線を加えると、 字と下線が重なってしまって、非常に読みづらくなってしまいます。
TextDecorationでPenOffset調整するとか
まさにやりたかったことができました。 ありがとうございました。
世の中には無料でも高度なプログラミングができるコンパイラや開発環境、ツールが出回っている。 C言語コンパイラ、Visual C#、Ruby それでもプログラミングは全然はやることはない。 WPFなんて素晴らしいものなのに、注目されてなさすぎる。
作る必要がないほどあらかたそろってるからな みんな一体何を書いてるのだろうと時々不思議になる
>>697 一般的に普及しているWindowsだと、プログラミングの第一歩の敷居が高すぎるんだと思われ。
開発環境があって、書籍があっても、辞書一冊を渡されて「この本を翻訳しなさい」と言われてる状態だからなぁ。
SmalltalkやEmacsみたいに、ベースである程度使える環境に機能を付け足していくって言う方が今は敷居が低そうだ。
あと、最近の環境はプログラムのエントリーポイントが判りづらいのが多い…
プログラミングの第一歩なんてちょっとした作業を自動化するためのバッチファイルでいい。
701 :
デフォルトの名無しさん :2010/11/22(月) 04:38:26
>あと、最近の環境はプログラムのエントリーポイントが判りづらいのが多い… 関数型言語のことですねわかります
Rubyとかなんであんなに初心者向けの本が出てるのかわからん 実装剥き出しのオブジェクト指向でどう考えても初心者向きじゃないし 多くの初心者がプログラムと聞いてイメージするGUIアプリ開発には使い物にならんのに
本出すと売れるからだろうな
XAMLのほうで、テキストを結合する方法を教えて? person.name="仙石"; のとき <Button.Content="私は"+person.name+"です"。/> で 私は仙石です person.nameが"管"に変わった瞬間 私は管です って表示されるみたいなことやりたいんだけど。
StringFormat ※.NET3.5 SP1〜 以前はちょっとした変換にもコンバーターが必要になって面倒だった。 MultiBindingと組み合わせれば姓・名が別々になっててもXAMLだけで結合できる。
<Button.Content="{Binding Path=name, StringFormat=私は{0}です。}"/>
すげー そういうTipsみたいなのってどこに書いてるの? WIndows Formだとテクニック集みたいなページがいっぱいあるけど WPFは小技/裏技みたいなページがないから困る・・・
VSでバインディング書いてたらインテリセンスにStringFormatを見つける→何これ?→MSDN あちこちのブログでも取り上げてあるから、検索してたらその内たどり着くんじゃないか。
WPFのTips集って作りづらいかもしれない。 何やるにしてもBindingやナンチャラTemplateでお好きにどうぞという話になるので、 結局その辺から勉強することになる。
そうかー テンプレートを利用すれば なんかキモイもの作れるね ボタンにTextBlockをテンプレートに組み込んで テキストボックスのようなボタンを作ったり。
711 :
デフォルトの名無しさん :2010/11/22(月) 21:07:14
>>697 wpfは個人がちくちく作るツール向けの開発者ツールなんかじゃないし。
winformの時代もonpaintをオーバーライドしてなんかするなんて滅多に無かっただろ?
wpfの胆は見た目周りは実はどうでも良くて、MVCをきちんと分けるためのインフ
ラが揃ってることだと思うんだけどなあ。
そこまでは素人だよ 玄人になると見た目周りにこだわりを持つようになる
本当のプロは拘りなんてないよ。 要求されたことを完璧にこなすだけ。
WPFはレイアウトに関するプロパティや機能が多すぎワロタ
Microsoftは見た目にこだわるからね office製品は昔はヘルプがイルカだった。 検索したい文字を入力してください とかいう味気ないダイアログボックスを出すよりイルカのほうがよかったんだろう。 office 2007からも 今までのメニューバー (ファイル 編集 表示とかいう文字ベースのやつ)を完全に撤廃し、 今までのやり方や操作性を犠牲にしてまでリボンとかいうグラフィカルな項目にした。 Microsoftにとっては見た目が非常に大事なんだろう。
見た目は重要だからね
リア充クラスはイケメンクラスを継承した。 俺はイケメンクラスを継承してないのでリア充になれなかった。 俺も顔のテンプレートを修正したい。
イケメンクラスを包含すればいいじゃない。 お前の心の中にな!
データバインディングわかんねぇえええええええええ dataContextとかいうオブジェクト型の特殊な変数があって そこになんか代入すればいいんだな!? じゃあバインディングしたいデータがいっぱいあったらどうするんだ!? dataContextはひとつしかないぞ! なんか方法あるらしいが、わかんねええええええええええ
Resultが1個しかなかったらSQLでテーブル1個にしかアクセスできないか? 結合があるんだそんなわけあるめえ
バインディングしたいデータを詰め込んだクラス(ViewModel)を作ってDataContextに突っ込めばいい。
>>715 UXを重視した結果
>>721 殺意をMicrosoftやOffice自体ではなく、
それと無関係なイルカに向けるという高度なUX重視判断の結果だなw
| 何について調べますか? | ┌────────────┐ | | お前を消す方法 | | | | | └────────────┘ | [ オプション(O) ] [ 検索(S) ] | `──────────┐ ┌─── , '´l, ..| ./ , -─-'- 、i_ |/ __, '´ ヽ、 ',ー-- ● ヽ、 `"'ゝ、_ ', 〈`'ー;==ヽ、〈ー- 、 ! `ー´ ヽi`ヽ iノ ! / r'´、ヽ `´ヽノ
>>722 MS擁護派の俺でもイルカは邪魔だと思うわw
WPFならofficeのイルカみたいなのも簡単に作れる♪
XPまでだとリージョンつかわないとパフォーマンス落ちてたんだよな Vistaからその辺気にしなくてよくなった
XAMLが楽だと思ったのはコントロールが継承できるとこだな。依存プロパティっていうんだっけ? メニューなど入れ子になってる場合、親メニューをいじるだけでいいから楽チンだわ
>>725 まあでも、擁護派・アンチ問わずありとあらゆる方面から「要らない」と言われた結果、
次バージョンでとっととイルカ消してくるのはいいところだと思う。
お前らなぁ、言われる方の身にもなってやれよ! >つぶやき始めてから、これまでにいただいたつぶやきで、一番多いのが「お前を消す方法」。。。たしかに、いろいろと言われてたのは知ってましたが。。。キュッ #saeko2010
複数のWindowでデータバインディングするのはどうやんの? WPFアプリ作った時に最初に出てくるMainWindowにテキストボックスが二つあって その両方がバインドするやり方はわかった。 binding elementname=textbox path=text みたいにやればいいだけみたいだ。これは簡単だった。 じゃあMainWindowの他に、CTRL+SHIFT+Aで新しい項目→WPFウィンドウ(名前はWindow1)を作り その二つ目のWindow1にテキストボックスを配置し Window1.TextBoxとMainWindow.TextBoxをバインドさせる方法はどうやればいいか教えてくれ。
DataContextかBindingのSourceに共通のVMを入れてプロパティ経由で
いまだに冴子先生が現役です・・・
VS2010のメインレイアウトって、DockPanelかGridPanelに見せかけて、実はCanvasPanel?
Grid だけども、Margin を駆使して Canvas っぽくレイアウトしてる。 一応、Grid のセル内の相対 Margin になるので、 Canvas よりは幾分かウィンドウサイズ変更に強いと思う。
ListViewに4カラムで30行表示しただけなのにスクロール重すぎワラタ。内容は全部固定Textなのに。 一体何がどうしてこんなことになったのか分からないからどうやって改善すればいいのやら。
2000行くらいになってくると重量感じるけど 30行だと何かやらかしてるとしか思えんな
>>735 CanvasPanelというコントロールは御座いません。
WinFormだけど,OwnerDrawの中でtrycatchで例外発生しまくりでlistviewが劇遅になったことならあるよw
ばか?
はい、あなたはばかです。
VS2010の作業領域の背景って、グラデーション+ドット模様になってるじゃん ワンパスで描画できるの?
>>743 どういうのを言ってるかわからんがwinformでもグラデーションブラシを使えば2色の合成は簡単だけど
テスト的にMとVMとVを分けてホイホイっと表示させるのは簡単だけど いざ実際にアプリ作るのは設計がむじゅいね。 以前作ったFORMアプリを移植しようとしたらイベントぐちゃぐちゃで我ながら萎え萎え。 がんばる。
>>745 MVVMは実際に設計すると非常に悩ましい。
・Command内の処理からダイアログをどうやって出そうか?
・フォーカス制御にはViewのインスタンスが必要じゃん
・値の検証はMでするの?VMでするの?
・"最大値"、"最小値"のようなパターンってどうやってエラーだすのよ
・数値入力フォームにアルファベットを入れたらどこでどうエラー処理する?
・一つのMで複数のVMが居る場合どうすんのよ、コレ
こういう綺麗にMVVMが当てはまらない場所全てで頭を抱え込むことになる。ガンバレ。
>746 ・VMのダイアログをだすよ処理にViewからインジェクト。だすよというよりIConfirmとかそんな感じ。 ・フォーカスはViewですればいい。Focusなどの状態自体がVM、Mまたーなら話は別だが。 ・MがVMからしかいじられないならVMで。でないなら両方ヤッとけ。 ・VMでエラー吐いて表示などなどViewでやっとけ。 ・上と同様。 ・Observerパターン使え。
RoRみたいにガチガチじゃないから逆に書きにくい…
タブ型エディタみたいなのってMVVMだとどういう構造になるの? 外枠を担当するMVVMセットがあって、さらにタブ毎にMVVMセットがあるような モデル?
タブの1個1個がドキュメントよね。 その上位に、ドキュメントマネージャー的なのが居るのかな。 ウィンドウ自体のVMがドキュメントマネージャー持ってて、 タブごとのVMがドキュメント持ってるって感じじゃないかな。
>>749 Evernoteクライアントのversion 3をダウンロードして動かしてみれ。
>>750 やっぱりそんな感じよね
WPF自体経験ないからうんうん唸る
>>751 あれは重かった…
だいたい、ビューが階層的ならビューモデルも階層にすればOK。
MVVMでオプション設定ダイアログを作りたい オプション設定のVは作ったのだけど、この後どのようすればいいですか? Vの起動方法とVの設定値の取得方法が想像つかないんですが
>>754 従来のタブ切り替えみたいな方式じゃなくて、
XAMLらしくリンクとして実装してあげるといいだろうね。
データバインディング TextBox.Textと普通のプロパティをバインdする方法はわかったんだが インデクサはどうやればいい? たとえばLabeの文字を str[i]とバインドして str[0]="A"; str[1]="B"; str[2]="C"; i=0になった瞬間LabelがAになって i=1になった瞬間B、i=2の瞬間C みたいな感じ。 ValueCangeイベントのようなイベントで処理したり なんとかタイマーで、0,01秒ごとにLabelのContentを変える みたいな処理しかわからない
string hoge { get{return str[i];} } をバインドする iのsetterでhogeのpropertyChangedをおこす
以下のxaml上のEventSetterをコードで書きたいのだが、書き方がわからない・・・ <Style TargetType="{x:Type ComboBox}"> <EventSetter Event="SelectionChanged" Handler="SampleList_SelectionChanged" /> </Style> 動的にイベント有無を変更したいので、コードで書きたいのですが。
そのまま書くだけだと思うけど ルーティングイベントだけは〜〜Eventって名前の静的フィールド
WPFいいなぁ そろってるコントロールやパネルとかが優秀すぎて XAML使ってもいいけど 仮に全部C#コードで書いたとしても別に問題にならない
でもXAMLを知ればC#でなんでもやろうとは思わなくなるよ。
XAMLって プログラムの外観とロジックを分離させるために作った みたいに書いてるけど 俺みたいな外観もロジックも一人で造らなきゃならないぼっちにとっても 勉強したほうがお得なの?
>>763 というより、使わなきゃUIデザイナーの支援を受けられないんだから、嫌でも使うことになる。
>>763 外観とロジックを分離することとぼっちは関係ないよ
>763 宣言的にオブジェクトを配置するXAMLと、 手続処理を中心としたプログラムコード。 普通の静的なUIデザインには、前者の方が向いてるよね。
767 :
デフォルトの名無しさん :2010/11/25(木) 06:01:04
WPFはまあ乱暴な言い方すればWinFormにブラウザコントロール貼り付けて ローカルでhtml+css+javascript流し込んで実行してるような感じかな・・・ WinFormで凝ったGUIやると面倒だな〜->ブラウザコントロールが結構使えるなあ->WPFでいいじゃん みたいな感じ まー必要ない人には必要ないかもしれない
>767 それはUIデザインのコーディングスタイルだけの話じゃないか? WPFは強力なバインディング機構の方がキモだろ。
xml自体がバインディング向けですしね
でも、WPFは糞重いし、小規模なツール作るには手間がかかるだけ UIデザイナー?そんな形態持ってる企業なんてない
WPFが重いのはきっとMSがなんとかしてくれるよ。 きっと
まだWPF重いのかよwww
Boldフォント使うとすぐに字がにじむんだけど、どういうこと?
WPFだとWndProcつかえんの?
使える
ふーん
>>770 まだ小規模なツールでWinFormsより手間がかかると思ってる人居るんだ。
使ってから騒ぐ分だけコテハンのアイツの方がよっぽどマシだな。
「オシャレなUIならWPF」とか言ってる奴もいるぞw
いるいるw
お前ら頭良すぎだな お前らの脳味噌を俺の脳味噌にデータバインドしてくれよ
それじゃちょっとこの音楽聴いといてくれるか 一万人分ぐらいの脳と繋がるから
WPFでカスタムコントロール(Canvas継承)を作って、 Canvas上のControlに拡張プロパティを設定したいのだけどうまくいかない。 C#のIExtenderProviderにあたるWPFの機能ってなんでしょ? DependencyPropertyでごちゃごちゃとやらないといけない?
783 :
782 :2010/11/25(木) 18:31:49
AttachedPropertyBrowsableForChildren()で解決しました。
グラフィックを半透明にしたり、画像の拡大縮小がきれいだったり ゲームや簡易ペイントソフト作成用ですか
XAMLのほうでは直接Width="100"みたいな定数しかできなくて たとえばButton Width=button1.Height+30 みたいな足し算や掛け算を行ったりできないの? こういうことしたかったらC#のコードでやらないと無理?
まずやりたいことが、Gridなどのコンテナで実現できるか考えよう。 それでも無理ならバインドしてコンバーターで計算させるとかじゃね?
キャンバスをEXCELのように多数のセルに分けて、それぞれ文字を入力させる。 で、フォームがリサイズされたらセルの大きさもその割合に応じて変わる。 こんなプログラムはWindows Formのほうがいいのかな?
>>784 グラフィックきれい = ゲーム って発想やめようよ。
いわゆる可視化、見える化とかが有効とされるものならなんにでも応用効く。
>>785 コンバーター書いて Binding するか、
データコンテキストに渡した ViewModel 内で +30 するか。
どっちにしろ C# コード書くね。
>>787 リサイズへの追従とかそれこそ WPF 向きじゃない。
ファイルのドラッグ&ドロップ部分を書こうとしているとこなんだけど MVVMの場合イベントはすべてDeleteCommandを通して書くの?
MVVMは質問してまでやることじゃない。 自分が無理なくやれる方法でやることが重要。
ドラッグ&ドロップみたいなビュー内で完結してるものは むしろビヘイビアで書く方がいいよ。
ドラッグ&ドロップ部分はView.csで書いて リストに追加された時にBindingで値を取得するってことでいいのかな
MVVMの雛形を毎回作るのが面倒なんだけど 何か良い方法ないですか? テンプレートみたいなものは自分で作れるんだっけ?
その程度のことが面倒に感じるようなものにMVVM適用するのはどうかとおもうけど 必要ならPrism Template Packでも使えば
Prismって何かバグがあったような気がするんだが
何かバグはあるさ!
798 :
デフォルトの名無しさん :2010/11/26(金) 22:58:04
>>793 テンプレートでできなくもない。t4 templateでぐぐると、いくつかmvvmのコード自動生成の作例が出てくる。
WPFはもっとコードの自動生成を取り入れないと普及しないだろうねえ。
イベントハンドラのスタブをタブキー二回で作ってくれるぐらい簡単に。
799 :
デフォルトの名無しさん :2010/11/27(土) 01:28:16
xamlにインラインコードが使えるようにならないかな…
VMのプロパティはEXCELとか正規表現とかでなんとか生成できるレベルだけど、 DependencyProperty実装するときのの凶悪なコーディング量はどうにかしてほしいもんだ
>>800 あれはほんと後付けらしい醜さがあるな・・
lispのマクロとか欲しくなる
F#のワークフローとかコード引用符使ったらすっきり書けるかな(よく知らないけど)
propdp[TAB] まぁ、メンテも含めたらそれでも十分に極悪だがなw
WPF入門とかのページそこそこあるけど イゾンプロパティの話で propdpのインテリセンスのこと書いてるのほとんどないよね ぶっちゃけ、細かい使用とか話してpublic static readlyうんちゃらかんちゃら作る必要があります ってかくより、これらはおまじないです propdpでイゾンプロパティが作れます だけでいいと思うんだが。
いや見た目にうざいしスニペットがありゃいいってもんじゃないと思うけど
WPF入門であって、VS入門じゃないから
StyleCop先生「 さぁ、private static readonlyは先頭に並べるのです、 そしてプロパティはコンストラクタ、イベントの後ろです。 イゾンプロパ…何それ?」 FxCop先生「 アホかぼけ、なんでこんな糞コードを書…XAMLから自動生…しるかボケ!」 言語構文に組み込んでくれとまではいわないが、 せめて自社ツールだけでもどうにかしてくれ
>>788 つかってるよー
3次元プロットはグラボ必須だし、
4次元の可視化はシェーダが欲しい。
オサレなGUIより地味だけど機能的で快適なほうが良い
美しさが分からん奴にそんなもの作れないよ 機能美って言葉を知ってるかい VimだってEmacsだってあれはあれで美しいのだ
>>809 オサレ⇔地味って軸と UX の良し悪しはそこまで相関ないよ。
オサレで使いやすい、オサレだけど使いにくい、
地味でも使いやすい、地味な上に使いにくい、全部ある。
特定の顧客から依頼を受けて作るならいいけど そうでなきゃ「うわ、地味。ショボそう」とか思っちゃう人もいるしな
モジの色がカラフルで、画像と合わせて、グラデーションかかったボタンが激しく動き回り・・・ おしゃれだけど、見づらくて使いづらそうだね。
地味に作りたきゃ地味に作れるだろ お前しだいだ
というか
>>813 がオシャレかな
派手でセンス悪いだけだろう
>>813 おしゃれなの?それ
楳図かずおみたいな奴だな
どんな恐怖アプリだよ
そういうセンスの人はblinkとかマーキーとか使いまくっちゃうんだよ
提供された機能は使い切らないといけないみたいな信条でもあるんじゃねえか
ボタンが動き回り・・・ の点々がいいよね ボタンなんかどんなGUIフレームワークでも動かせるけどお前ボタン動き回る画面なんか作ったことあんのかよとw
js覚え初めのころ逃げるボタンとか作ったよ
>ボタン動き回る画面 Blend最初触ったとき作ったぞw 残念ながら世に出ることは無かったが
画像に合わせて激しく動き回るんだぞw
つかまえてごらん〜 うふふふ
埼玉の産婦人科「愛生会」の医院長が作った。
>>825 あの人、美的センスはあるはずw
ネイチャーフォトのレベル高いよ
WPFを使っているとありがちなこと ・なんでもかんでもアニメーション ・フェードインフェードアウト乱発 ・とりあえず半透明 ・以上を全てやっていないとゴネだす上司や低能デザイナーがいる VS2010のI/Fのようにシンプルな見た目で 要所要所をピンポイントで強調するような使い方が一番上手いんだろうが、 そこまで理解できる人(得に上司)が世の中どれだけいることやら。
ところでみんな、SQL使ってる?性能でてる?
ごめん、誤爆
>>827 だって、せっかくそういう機能があるんだもん
使わないともったいないじゃん
アニメーションは体感速度に繋がるから 不必要値は言い切れない
アニメーションも入れ方次第なのよね。 単に派手にするだけのビジュアルデザインじゃだめ。 UX デザインしないと。 例えば、Windows のウィンドウを最小化するときのアニメーションには 「次、ここをクリックしたら元のサイズに戻せますよ」という場所を示す意味がある。 でたらめな場所に向かって縮小したりしちゃダメ。
ウィンドウは四角ければ十分な俺には全て無駄に見える なんで見た目に凝るのか
834 :
デフォルトの名無しさん :2010/11/29(月) 01:55:20
まあwindows上だと意味ないよね ひたすら効率化の世界だしUIもあれだし 凝るとすればタブレットとか最近流行りのUIなどでの話だね
機能だけでいいならものつくりは簡単だな 車、パソコン、携帯電話、携帯ゲーム機、扇風機etc たんにその本来の役目さえ果たせればいいんじゃなくてかっこいい見た目じゃないと売れない。 プログラムも同じことだよ
>>833 ウィンドウなんて必要か?凝りすぎじゃね?
そういえばそうだな だが文字入力はいやだ
文字入力が嫌ってイミフ CUIが嫌なんじゃないのか。
ここの人たちCUIでわかるのか じゃあCUIがいやだ
データバインディングってのは ターゲットもソースも 両方依存関係プロパティじゃないとダメなの?
ああ、アレだろ、クイね。 もちろんわかるよ。
>>836 まったく。
機能だけなら簡単と言い切るつもりもないけど、機能そろってりゃ他はどうでもいいってもんじゃない。
芸術的な意味のビジュアルデザインよくないと売れないというのももちろんあるし、
同時に UX デザインもされてる。
ボタンの位置とか大きさはどうなってれば使いやすいかとか、
ものすごいノウハウの積み重ねがある。
>>841 ターゲットは依存関係プロパティじゃないとダメ。ソースは普通のプロパティでおk
>>845 なるほどThx
TextBoxに入力した値が、いちいちなんちゃらイベントとか作らずすぐに画面に反映されて感動した。
まともにWPFを解説してるサイトが @IT、未確認飛行C の二つしかない。 この二つだけで勉強しろというのか もっとふえねぇかな。
wpftutorialはダメなん?
俺もデータバインディングやって触ってみたけど、 XaML
やべ途中で切れた XAML手書きでやってるのが多いね VS2010のデザイナでどうやるのかよくわかんね デザイナでできる事をわざわざ手書きでやりたくないしな・・
デザイナなんて飾りです
デザイナって プロパティウィンドウのこと?
デザイナーもIntelliSenseもVisual Studio 2010の一部です!
俺のした勉強の仕方。
>>847 で概要チェック。
後は Expression Blend いじりながら Binding, Template, Animation まわり
の知識を固めていく。( 〜ブログ放浪〜 )
最後に MSDN。
まあ、WinForms の時もこんな感じで勉強、ってか慣れていったが。。
素養のある人は MSDN 直でもわかるのかね。
Blendなって持ってネーヨ (´・ω・`)
つ【学生】
解説サイト見てちょっと改変して分かった気分になって、エッセンシャルWPF読んだらよく分からなくて ブログ放浪してやっと自分がやってた事が理解できるようになって、最後にMSDN見て納得した。 その後Blendも買って楽しいWPFライフ←今ここ
<setter property="なんとか"/> このなんとかの部分インテリセンスきかねぇ クソだな
依存関係プロパティをもっていれば INotifyPropertyChange を実装する必要はないんですか?
持てるなら。
持たせてみせよう。
プロパティ。
>>859 最新の Silverlight Tools 入れたら IntelliSense 効くようになる。
コマンドってなんやん イベント利用したら Button1Click+=(sender,e)=>MessageBox.Show("Hello World"); これだけでいいのに なんかICommandインターフェースを実装してExecuteがどうたらこうたらやらなきゃいけなくてわけわからん なんでイベントがダメでコマンドならいいんだ?俺には難しすぎる
>>865 別にコマンドは無理して使わなくてもいい
コマンドじゃなくてイベントだと
例えばボタンが押された処理動作を
メニューやホットキーなど複数の条件から呼び出したい場合
それぞれイベントハンドラを記述していくことになる
だが、コマンドを作っておけば、XAMLでコマンド名を書くだけでいい
それ以外はバインディングなどをイベントハンドラで処理する場合
値が正しいかどうかのチェックで動作を変える場合も
イベントだと自前で実装することになる
コマンドなら雛形があるのでそれにあわせて書けばいい
今のおれがわかるのはこれぐらいだな
>コマンドじゃなくてイベントだと >例えばボタンが押された処理動作を >メニューやホットキーなど複数の条件から呼び出したい場合 >それぞれイベントハンドラを記述していくことになる >だが、コマンドを作っておけば、XAMLでコマンド名を書くだけでいい それはイベントだって同じじゃあないの Methodというメソッドを作って <Button Click="Method"/> <Menu Click="Method"/> ホットキーはしらんけど <KeyPress="Method"/> 多分こんな感じでしょ イベントハンドラはひとつで XMLのほうでイベントハンドラ名を書くだけでいいっしょ
>>867 そういえばそうだな
Winフォームと比べてたわ
あとは、CanExuteがfalseの場合
呼び出しもとのコントロールが自動で無効になるとか
イベントだとEnable=falseとかしないとだめでしょ
>>865 デリゲートがシリアライズしづらいからクラスでラップしちゃって Java みたいになってる。
あと、コマンドには実行可否の判定(CanExecute)がつきものなので。
>>867 それはでも、コマンドである必要ない。
ユーザーからの入力イベントの他に、
ちゃんと意味論的なレイヤーのイベント(今コマンドでやってるようなこと)をデリゲートで処理ってのもできたはず。
やっぱ、CanExecute とシリアライズのしやすさの問題でわざわざ ICommand インターフェイスにしてあるんだと思う。
イベントに実行できるかどうかの判定を持たせたものがコマンド ってもんでいいのかなぁ・・・ コマンドの説明見ても、「上書き保存」は、既存のファイルが無かったらできないようにする 「切り取り」は、テキストが選択されてないとできないようにする とかそんなサンプルばっかりだし
>>871 結局MVVMで依存しないようにするにはコマンド使うことになるわけで
そういうのが必要ない場合はイベントで普通に書けばいいんじゃない
要するにイベントハンドラだけでは書きづらいような部分について、 新たにコマンドという概念を追加して XAML上で使えるようにしたってことだな。
シリアライズってのはどゆこと?逐次化?
>>874 バイナリ列とかXML文字列に変換って意味<シリアライズ(直列化)。
コードビハインドなしのXAML中にかけるのは、直列化可能なものだけなのよね。
デリゲートは実は直列化できなくて、
XAML のイベントへの代入は結構内部的に微妙なことしてる
(XAML から自動生成される .g.cs の方にイベント追加の += が生成されてる)
>>875 なるほど、たしかにビハインドのないカスタムコントロールではXAMLにイベントを書けない。
コマンドはプロパティで扱えるのでXAMLでかけるということだな。
プロパティが直列化できるのはMSがそう設計したから?イベントも同じように出来なかったのかな。
デリゲートは中身メソッドだからなぁ。 プロパティ = 見かけ上はデータ → 直列化可能 イベント = デリゲート = 中身メソッド → ダメ という感じ。 なんというか、初期化子使って var obj = new Type { X = ... } みたいに書けるものだけが XAML 化可能。
コマンドはロジック側がビューに依存するのを避けるためにあるんだよ。 イベントだとイベントハンドラを登録する際にロジックがビューに依存してしまう。 コマンドは結局、ビューがロジックのpublicメソッドを呼んでるのと同じなんだけど それをXAMLだけで宣言的に書けるようにしてある。
XAMLとコードビハインドは同じViewとみなしてやっても問題ない。
881 :
878 :2010/11/30(火) 16:15:23
コードビハインドをViewと見做すのはわかってるよ。
>>878 でロジックがビューに依存すると言ったのは、VとVMの間の接続をそのままイベントに置き換えてしまった場合。
VのイベントハンドラでVMのメソッドを呼ぶようにすれば問題はないけど
それをXAMLだけでやれるようにしようとすれば、コマンドバインディングが必要になる。
あんまりXAML側で何でもやる、というのは避けたほうがいいと思うけどなぁ。 デザインとメタデータに徹しさせて。 多国語対応するなら文字列リソースも分けないといけないし。
あったまわりーから話の流れがつかめんが、イベントハンドラって種類によっては引数ちゃうやん? イベントハンドラの場合、シグネチャ一緒やったらイベントハンドラ流用できっけど、シグネチャちゃうやつのイベントの場合やと 同じ処理したいって時は、いったんそいつのイベントハンドラ関数作ってからその関数内で同じ処理呼びださにゃならん。 コマンドにすりゃ、シグネチャ関係無しにどのイベントに対しても使える。って理解でOK?
用語に酔ってる素人って事までわかった
遅延バインドではいけないのですか?
>>882 ユーザーコントロールとかビヘイビア作って XAML にそいつを書くってやり方すれば、
XAML 肥大化させず、かつコードビハインドにコード書く必要なくせる。
>>883 それは微妙。
イベントハンドラーの引数揃えりゃいいじゃん。
ICommand だって、パラメーター色々変えたいけどやむを得ず object 型だし。
そうでなくて、デリゲートはメソッドへの参照だというのがネックで、
XAML 化/XAML 中への記述がしにくいのよ、.NET のデリゲートの仕様的に。
>>885 データバインディング自体が遅延バインドだけどもね。
遅延バインド/dynamic な動作は極力プログラマーの目に触れない方が安全。
だから、それをフレームワークの内側に閉じ込めて直接見えなくしてるのが WPF。
イベントって Button.Click += this.OnClick; みたいに登録するでしょ? つまりthisのクラスはButtonに依存するんだわ。 それをもしV-VMに置き換えたら V.Hoge += ((VM)this).OnHoge; となって thisのクラス(VM)がVに依存してしまう。
>>888 それも、データバインディングでイベントハンドラー登録ができれば解決したものの、
結局そこで
>>886 の話になる。
XAML 中に書けるイベントハンドラー(のメソッド)はコードビハインド中のものに限られる。
ここが一番のネック。
結論、イベントで問題なし つまりWPFは必要ない
>>890 XAMLとコードビハインドの関係が
イベントハンドラを介してつながるのが未だ主流、という話をしてるだけで、
誰もWPFが必要ないとは言ってないだろ。
日本語が読めないのか。
流れ全く無視ワラタwwww
なんか話の軸が色々あるね ・今利用者が多いの → コードビハインド中にイベントハンドラー直書き ・じゃあ、コマンドって? → イベント処理をデータバインディング使ってビューから分離するときに使う ここでネックになるのは、イベントだとビューから分離できない (ただし、ビューからの分離っての自体、アプリ規模がそこそこ大きくないと有効性低い) ・なんで Action とかでなく ICommand なの? → CanExecute も持たせたいから デリゲートの方がシリアライズしにくいから
>>888 thisのクラスはここでいうとコードビハインドのクラスでしょ。つまりXamlで宣言してる
ルート要素と同じインスタンス。
なのでXamlとコードビハインドはセットでViewなので、
V-VMでいうと
コマンドなら<Button Command={Binding hoge... } />と、XamlでVMの機能を呼び出すのに対し、
イベントなら、コードビハインドのハンドラ内でVM.hoge();と呼び出すことになる。
呼び出す場所がXamlかコードかの違いだけで、VとVMの結びつき自体は変わらないと思うんだが。
>>895 クラスの依存か、インスタンスの依存かはちゃんと区別しないと。
インスタンスの依存は絶対起きる。これは当たり前。
切りたいのはクラスの依存。
で、そのためには dynamic にやる。
もちろん、コードビハインドで dynamic に VM 操作してしまえば依存は切れる。
けども、極力ユーザーに dynamic なコードは書かせたくなくて、
出来ればデータバインディングを使いたい。
(dynamic はフレームワークの内側に隠ぺいする。)
つまり、WPFは使うなってことだな
>>896 クラスの依存とインスタンスの依存の違いを教えて。
コマンドでもイベントでも、VがVMのインスタンスを持つのは同じ、
そしてどちらもそのインスタンスに対して呼び出しを行ってる。
例えば、 ViewModel vm; void ButtonClick(sender, e) { vm.DoWork(); } とかやってしまうと、View が ViewModel 参照しちゃってるでしょ、アセンブリ的に。 で、 void ButtonClick(sender, e) { dynamic vm = DataContext; vm.DoWork(); } なら ViewModel の参照要らない。 データバインディングがやってることは後者(に近い)。
これで何がいいかというと、DataContext をダミークラスに差し替えてテストができる。 interface とか継承ベースの強い型付けはテスト用のダミー差し替えがしにくい。 結局、リフレクションとかに頼った dynamic な挙動させたくなる。 でも、一方で、それは利用者の目には触れさせたくなくて、 出来ればフレームワークの内部に隠ぺいしたい。
要するに大規模開発じゃなければ ibentoでいい
commandやビヘビヤーはblendで使うためのものだと自分を納得させた
俺の場合は当分イベント利用で問題なさそうだ。 後からちまちまコマンドに書き換えても遅くはないだろう。
コマンド面倒だから
>>899 ちょっと違うけどほぼ前者で
vm = DataContext as ViewModel;
ってやってた。
dynamicって何じゃー
WPFすごすぎワロタ
dynamicって遅延バインディングだからお勧めしないけどな。 ビルドは通るのに動かないなんて箇所を増やしてメンテできないだろ。 Bindingのエラーも潰すのが大変だっていうのに。
>>904 as ViewModel したら結局クラス依存するからいまいち。
dynamic は C# 4.0 の機能で、内部的に動的コード生成して遅延バインド。
>>906 効率の意味で言ってるなら、メソッドキャッシュって仕組み持っててそこそこ早いよ。
ビルド時にチェック聞かないという意味で言うと、
どの道データバインディングしてる時点で内部挙動はリフレクション。
ただ、直接ユーザーの目に触れるかどうかって点では、触れない方がよくて、
その点、データバインディング使うとフレームワークの中に隠れてくれるのはありがたい。
? よく分からんが、ViewがViewModelにクラス依存したらダメなの? Bindを使ってもdynamicを使っても結局ViewがViewModelにプロパティ名レベルでは依存するけど。 MVVMの動機の一つ「ViewModelの単体テストがしやすい」を考えると ViewModel->Viewの依存を切っていることだけが重要だと思うが。 この動機で考えると、ViewのコードビハインドからViewModelを叩くこと自体はまったく不味くはないけど 密接に関連してしまい「ViewModelがViewの動作に依存する」になってしまうと不味い。
coded-UI テストとかもあるし、View→ViewModelもやっぱ切りたいよ。 テスト抜きにしても、切れる依存は切りたい。 Java とかが DI とかに走りまくってるのも、静的な結合なくすためだし。 全くダメじゃなくて、程度の問題ではあるけども。 (依存あるコードの方が圧倒的に書きやすいので、そことのトレードオフ。)
View->ViewModelはHogeViewがIHogeViewModelとかにだけ依存するようにすればよかろ。 どのみちVMはView専用なんだしテスト用のVMにだけ差し替えできれば夜露死。
型チェックだけのためにインターフェイス継承は実装が面倒というのもあって。 実装自体じゃないな、その後の保守。 あと、継承ベースの型チェックはやっぱり依存度強い。 ダックタイピング的な型チェックでも、静的にチェックすることはやりようによってはできるんで、 そういう機能が C# に欲しかったりはする。
念のために言っておくと、コスト/メリットのバランス考えると、
現状一番だと思うのは
>>910 の言うようなインターフェイス挟むやり方。
で、
>>911 は今後期待したい機能。
テスト用とかが意味わからん そんなもん必要ない
アニメーションできた 単純にrectangleの色を変化させるとかLabelが動く程度なら難しいXML構文とかほとんど覚えなくていいから簡単だなぁ
ListViewでデータの値に応じて表示したりしなかったりしたいんですけどどうしたらいいですか?
スタイルを定義し、Style.TriggerでDataTriggerを定義。
ちょっと意味不明なんだが教えてくれ XAMLのほうで、Gridの中にRectangle(Name=rectangle1)とButton(Name=button1)を別々におく で、C#のコードのほう private void button1_Click(object sender, RoutedEventArgs e) { Duration d = new Duration(TimeSpan.FromMilliseconds(1000)); var a = new System.Windows.Media.Animation.DoubleAnimation(0, d); rectangle1.BeginAnimation(Button.OpacityProperty, a); //ここでButtonのopacity } これ実行したら、button1を押すとrectangle1のOpacityが減っていって透明になるんだけど なんでBeginAnimationの引数がButton.OpacityPropertyなの? Rectangle.OpacityPropertyだとエラーでるんだけど。 なんでrectangle1のopacityに関するアニメなのに引数がButtonの依存プロパティなの? どういうこと?
んなこたないだろ
依存プロパティってなんでstaticなのに既存のインスタンスに影響持たせられるんだ storyboad s= new storyboad(); Storyboad.setTargetProperty(なんとか); Storyboadのstaticメソッド実行しただけなのに これでなんかsのターゲットプロパティ変わってるし。 複雑怪奇すぎるぞwpf
DependencyObjectから勉強しろ
GridSplitterを使った時にさ、うまくGrid内に変化を納める方法ないの? <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*" MinWidth="25" /> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="Auto" /> </Grid.ColumnDefinitions> <Button Content="button1" /> <GridSplitter Grid.Column="1" Width="10" ResizeBehavior="PreviousAndNext" /> <Button Grid.Column="2" Content="button2" /> </Grid> みたいなレイアウトで、スプリッターを左に持って行ったら、 スプリッターの移動は端っこで止まるけど、右のレイアウトがどんどん大きくなっていってしまう…
newしたい
WPFのサイトってほとんどC#関連しかかかれてないね。 確かVisual Basic netでもWPFって使えたよね? VBでWPFの人気がないのはなんでだろう
WPFが使える、もしくは使おうと思うような人はそもそもVBなんて使わないから
海外ソースの情報が多いというのもあるんじゃね 世界的にはC#のほうが多く使われてるから
ググって出てきたサンプルがVBだとガックリ
単純にVB使いがWPFについていけないんじゃない
アニメーションやテンプレート、スタイルの単独での使い方はわかったが スタイルとテンプレート合わせたり スタイルとテンプレートとアニメーション合わせるともうわけわからん。 テンプレートで丸いボタンにして ストーリーボードとかいうの使ってマウスカーソルが合わさると色が光って スタイルでそれを全部のボタンに適用 みたいなことしたいんだがどうすればいいんだ。
>>930 ×VB→○VB6
×WPF→○OOP/CLR
だと思う
WPFに限らず、漁って出てくる有益な情報はほぼ100%C#な気がする 有益な情報を発信できる人がVBしか使えないことはないだろうし、 そのうちでC#よりもVBのほうが好きって人はあんまりいないんじゃないかな
>>931 一番いいのは、Blend で適当に何か書いてみて
生成されたコード眺めることなんだけどもね。
ほんと、Blend Express(無償)出ればいいのに。
>>931 VisualStateManager使うのが正しいやり方だけど
正直VSMはBlendないときつい
要するに Visual Studio Expressだけしかもってない貧乏人は アキラメロンってことか。 XAML PADとかいうのも使いづらい品
やってできないことはないよ>VSM手書き ただ明らかにデザインツール前提で非常にわかりにくい
Blend高い(*´・ω・)(・ω・`*)ネー 趣味レベルの人向けのを5000円くらいで出してヨ
自作のコントロール作って それをVisual Studioのデザイナのツールボックスに追加するのはどうやんの?
簡単なコードでコントロールができるのがかわいくして仕方がない
941 :
デフォルトの名無しさん :2010/12/02(木) 02:25:08
>>939 リビルドで認識するはず
されない場合はIDEの設定を見てみて
<Button.Background> <StaticResource ResouceKey="なんとか"/> このStaticResouceがインテリセンスで候補になーい! Visual Studioの早期改善が求められる。
関係ないけど、省略できる ResouceKey= や Path= を省略した場合に 値が属性と勘違いされて赤い字になるのがイヤ。
現段階でWPFを使うのは時期早々
ルーティングイベントがインテリセンスで出てこない <Grid Button.Click="なんとか"> ここにボタンいっぱい配置するコード </Grid> ↑のButton.Clickがインテリセンスで出てこない。 確かにまだ早い、のかも でもWPFってVisual Studio 2005のころから(まだテスト段階だったらしいが)あるんだろ それでもまだ早いって、相当遅れてるね。こりゃ、
>>945 そのやり方に力入れてないからなぁ・・・
というか、ForumなりConnectなりなんなりでフィードバック入れればいいのでは・・・
Flexとか似たような技術の中ではWPFの開発環境はよくできてると思うよ WinForms+VSが神すぎるだけ そりゃVBやDelphiから続く系統の完成形なんだから比べたら可哀想
個人輸入で買えば安いんじゃない
外観はXAMLで コードはC#で が基本らしいけど 一部の外観はC#のほうで書いたほうがやりやすい。
<Button Content="Button" Height="57" HorizontalAlignment="Left" Margin="110,118,0,0" Name="button1" VerticalAlignment="Top" Width="262"> <Button.Triggers> <EventTrigger RoutedEvent="Mouse.MouseEnter"> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetProperty="RenderTransform.Angle" To="90" Duration="0:0:2" AutoReverse="True"/> </Storyboard> </BeginStoryboard> </EventTrigger> </Button.Triggers> </Button> ボタンにマウスが乗ったら、ボタンが回転するアニメーション作ってみたかった このXAMLだと、ボタンにマウスがのったらエラーが出る。 どうやって直せばいいんでしょうか。 「プロパティ パス 'RenderTransform.Angle' に解決できないプロパティ参照があります。該当するオブジェクトでそれらのプロパティがサポートされていることを確認してください。」 とかいうメッセージ出てくる。イミフ
<Button Content="Button" Height="57" HorizontalAlignment="Left" Margin="110,118,0,0" Name="button1" VerticalAlignment="Top" Width="262"> <Button.RenderTransform> <RotateTransform /> </Button.RenderTransform> <Button.Triggers> <EventTrigger RoutedEvent="Mouse.MouseEnter"> <BeginStoryboard> <Storyboard> <DoubleAnimation Storyboard.TargetProperty="(RenderTransform).(RotateTransform.Angle)" To="90" Duration="0:0:2" AutoReverse="True"/> </Storyboard> </BeginStoryboard> </EventTrigger> </Button.Triggers> </Button> これで動いた。プロパティ指定は"(自身のもつプロパティ).(プロパティの持つインスタンスの型.プロパティ)"という書き方になるらしい。 なんでRenderTransform.Angleって書き方じゃだめなのか俺も解説ほしい。 あと、RenderTransformにRotateTransformを入れとく必要があるぜ。
添付プロパティって <Button Grid.Row=1/> これをC#のコードで書いたら Grid.SetRow(button1,1) なんか依存プロパティとか難しいこと言ってたけど書き方を少しだけかえただけじゃん。 C言語だとOpen(door)だったのがオブジェクト指向で door.Open() になったのと同じ感じがする。
>>950 それはテンプレート使いこなしてないだけでない?
具体的にはどういうの?<一部の外観、C#の方がやりやすい。
テンプレートでWPFアプリケーション作ったときに using System.Windows.Media.Animation が書いてない。 いちいち新しいプロジェクト付くる旅にusing書くのめんどくせ。 最初から書けよクソ
テンプレート書き変えろクソ
VBだとプロジェクト単位で弄れるのにね
うわああああああああああああ
XAMLコードで#if DEBUGみたいなことできる?
Styleを使えばボタンの上にマウスがのったらボタンのプロパティ(ContentとかBackgroundとか)を変える みたいなことはやり方を覚えた。 <Button> <Button.Style> <Style TargetType="Button"> <Style.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Content" Value="マウスがのってます"/> <Setter Property="Background" Value="blue"/> </Trigger> </Style.Triggers> </Style> </Button.Style> </Button> これでいいみたいだ。 でもこれだとトリガーでセットするプロパティはマウスが乗ったコントロールと同じものしかできん。 ボタンの上にマウスカーソルがのったらテキストボックスの色が変わる みたいなことはどうやればいい?
テキストボックスのStyleに記述 Triggerの代わりにDataTriggerでバインディング
Button の方と TextBox の方のトリガーになってるプロパティをデータバインディングしとくとかかなぁ。
関連性があって近くにあるならControlTemplateでまとめる、ってわけには。 1対1じゃないとダメか。
TextBlockの文字の縁取り?って出来ないんですか?
965 :
964 :2010/12/04(土) 14:47:40
自己解決しました
MVVMって何 <Grid> <Button Width="100"> <Button.Template> こういうのがViewで class person{ int age; string name; } これがModelなの? ModelViewって何
ぐぐって勉強してください
>>966 データバインディングでビューから色々分離する設計パターン。
何で「M-V-VM」なんだろうか。 M-VM-V か V-VM-M の方が繋がってる方向的に良くなーい?
MVC
MVP
主役はあくまでViewとModelだからかなぁ。
MVVMはシンメトリックでなんか安定してるだろ?
じゃあVMMVで
大抵はpythonだけで事足りるからな オサレなGUI?そんなの個人でやるもんじゃないでしょ
美的感覚のない奴にきれいなコードが書けますか? ハイ無理ですね
PythonにWPFより出来のいいGUIビルダあるの? 教えて
Python製のGUIアプリって外観とか以前に異常に使いづらいのしか出会ったことないわ
釣りか嵐でしょ。 突然何を書いてるのかと。
>>969 まったくだよな。
言いやすさなんだろか?
難しい面倒くさいと言うけどWPF+VC#って スクリプト言語なども含めて他の言語のGUIアプリ開発環境と比べたら神だよ 最高の完成度なのはWinFormsだが
なんつったっけ firefoxのguiフレームワーク あんなわけわからんのでもガンガンいくからな外人は
>>982 そう、他の言語やら使うと(使わされると)実感するよ。
乙 1のコメントが前向きだ
1 .NET3.0もリリースされて盛り上がってまいりますた。 2 .NET3.5 SP1 Betaもリリースされて盛り上がってまいりますた。 3 .NET3.5 SP1 もリリースされて盛り上がってまいりますた。 4 .NET3.5 SP1 もリリースされて盛り上がってまいりますた。 5 .NET3.5 SP1 もリリースされて盛り上がってまいりますた。 6 .NET4.0もリリースされたけど別に盛り上がってはいないよね…。 7 パワフルで柔軟すぎるのが敗因か? 正直ついていけないよね…。
昔に戻っただけでしたね あと別に盛り上がってないよね(銀光的な意味で)
いつも荒らしに来る子?がテンプレ書き変えちゃってたから元に戻したよ。 C#スレでもWPFの質問(回答が付いてる!)見る機会が増えてきて、盛り上がってまいりますた。
990 :
976 :2010/12/05(日) 23:29:29
荒らし呼ばわり来たよこれ たまんねー
自分が荒らしと呼ばれるかもという感覚はあるんだな
どうでもいいけどVS2010ってなんでソリューションエクスプローラやクラスビューのツリービューのところだけ WPFじゃないんだろう エディタはWPFで作ってるくせにそんなに特別負荷のかかるところとも思えないんだが
どうやってそういうのわかるのん?
盛り上がっては来てるんじゃないの。楽観だけど
Part1 2006/11/08-2008/05/24 563日 Part2 2008/05/22-2009/01/11 234日 Part3 2009/01/09-2009/06/20 162日 Part4 2009/06/19-2009/12/27 191日 Part5 2009/12/27-2010/05/21 145日 Part6 2010/05/21-2010/08/28 99日 Part7 2010/08/22-2010/12/06 106日 Part8 2010/12/05-2011/? 1の過疎時代を知っていると感慨深いものがある。
ume
sine
cosine
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。