WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part8
もしかして2? (\ (\ / ノ / ノ / 丿 / 丿 _( \/ 〈 = \/ ̄⌒ヽ―彡彡ミ丶 =≡ \ / /彡彡ミ| `-<_(_二フつノ
もしかしてこれのこと? (\ (\ / ノ / ノ / 丿 / 丿 _( \/ 〈 = \/ ̄⌒ヽ―彡彡ミ丶 =≡ \ / /彡彡ミ| `-<_(_二フつノ  ̄//|ロ ニニ `/_/_ /ヽ | / / / /  ̄
───┐ □□□│ ./) rt ひっどーい □□□│〈〈__ノノ □□□│ ヽ〉 ̄/`‐-巛( ./) rt ひっどーい □□□│ `ー<_ァ_巡) 〈〈__ノノ □□□│ ヽ〉 ̄/`‐-巛( □□□│ `ー<_ァ_巡) □□□│ □□□│ ./) rt ひっどーい □□□│ 〈〈__ノノ □□□│ ヽ〉 ̄/`‐-巛( □□□│ `ー<_ァ_巡) □□□│ □□□│ □□□│ ./) rt ひっどーい □□□│ 〈〈__ノノ □□□│ ヽ〉 ̄/`‐-巛( □□□│ `ー<_ァ_巡) □□□│ □□□│ □□□│ ._. │ | | | │  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
携帯電話も一緒に飛ばした方が良くね?
添付プロパティのおかげで既存のクラスもあたかもプロパティが追加されたみたいにできるんだな。 Button Grid.Row="3" のように、あたかもButtonがGrid.Rowというプロパティを持っているように見せかけることができる。
このスレッドは天才チンパンジー「アイちゃん」が 言語訓練のために立てたものです。 アイと研究員とのやり取りに利用するスレッドなので、 関係者以外は書きこまないで下さい。 京都大学霊長類研究所
個人でオサレなGUIを作る必要なんてないからな 大抵はCUIで十分だし となると、Pythonってことになる
ListViewの背景色が変えられない 助けて
background="gray"
選択されたときだけ変えたいのでStyleの中でそれやっても変わらないの
トリーガ使えば?
>>9 どうせ作るなら配布したいじゃん。
他の人に使ってもらうならGUIのほうがいいじゃん。じゃん
配布するならframeworkインストールしないとだめじゃないか しかもそれいれてもWindowsユーザーしか使えない pythonはインストールすれば誰でも使えるし 自分で書き換えたりもできる
>配布するならframeworkインストールしないとだめじゃないか >pythonはインストールすれば 頭大丈夫ですか?
>>17 ひとの心配するより自分の心配した方がいいぞ
フレームワーク必要な言語なんか企業で使うことしか眼中にないものだけだしな。 会社勤めしてればいやでも使うだろうし、そうでないなら学ぶ手がかりすらない。 ソフト配布したいんなら割り切ってそれ用の言語に集中した方がいいね。
<Style TargetType='{x:Type ListViewItem}'> <Style.Triggers> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="IsSelected" Value="true" /> <Condition Property="Selector.IsSelectionActive" Value="true" /> </MultiTrigger.Conditions> <Setter Property="Foreground" Value="Red" /> <Setter Property="Background" Value="Orange" /> </MultiTrigger> </Style.Triggers> </Style> これでForegroundだけ変わって、Backgroundが変わらないんですが・・・
方法 : ListView の行の背景色を変更する
>>20 それみんな詰まるとこだね
検索したらすぐ見つかるはずだが
どうやってするのかもう忘れたけどw
PanelTemplete使うんだあったかな
Pythonはexeにして配布出来るから便利
上っ面だけ舐めて語ってるような奴ほど優劣決めたがるんだよな プラットフォームの優劣なんか対象環境や要件でいくらでも変わる 不毛な事に時間割いてるなら、選択肢を増やすために手を広げたほうが利口
ほっとけよ
XAML
>>23 現実が見えていないのはお前だよ
vista以降のOSを使っているのは2割
pythonならmacでも使える
3Dインターフェースを作る場合じゃない限りWPFは必要なし
IDEも重いし、開発にも時間がかかる
お手軽ツールならpython rubyで決まりだね
ListViewはいろいろダメすぎる。 DataGridをListView風に使った方が早いよ。
Pythonは好きだがGUIアプリ作るならどう考えてもWPFの方が早いし良いものができる
GUIを作る必要性がない 特にWindowsユーザーはそうだろう
ちょっとしたスクリプトならpython/rubyが速いというのは分かるけど GUIが絡んだとたんにC#の圧勝になると思うんだけど
詳しくない人に質問されてCUIツール紹介したら、 理解しようという努力すらしてもらえなかった経験くらい誰にでもあると思うけど
何?Python厨装った荒らし?
>>29 ListViewはItemTemplate使うの前提だもん
デフォルトの状態で行の背景色を変えたいというような要望が出ること自体が間違ってるんだよ
Trigger使ってるのがデフォルト状態?
pythonが入ってるPCが2割もあるの?
ぶっちゃけ開発者以外に入れてる人いなくね
GridView使うなら初めからDataGrid使えというのは同意 投げ輪すらできんしね
40 :
デフォルトの名無しさん :2010/12/06(月) 21:06:00
System::windows::form::timer で一秒ごとにlabel->textを更新していますが(要は時計です) 最小化から復帰するとlabel->textが更新されなくなります、何故でしょう。 ってここで質問してもいい?
>>33 ああ良くあるね
なんでだろうね
黒い画面が怖いのかな
44 :
デフォルトの名無しさん :2010/12/06(月) 21:08:19
LinuxとMacの全台にPython入ってても5.5% プログラミングしてる奴がWindowsユーザーの15%もいるかなぁ 絶対にないだろw
ちょっと大層なアプリケーションだと拡張機能用のスクリプトとしてPythonが組み込まれていることはあるね プログラミングしない人でPythonを単体で入れてるのは見たことないな
スレ違いの話を何時までもやってる人って頭湧いているの?
ListView捨ててDataGrid使うことにしました
>>47 粘着アンチがついて一人前。WPFを気に食わない人達が無視できないほどまで大きく成長したって証拠だな。
WPFも盛り上がってまいりますた。
Silverlight5がやばいぞ パッケージソフトでもない限り、あえてWPFを使う理由がほぼ無くなる 本気でビジネスアプリケーションは全部持っていく気みたい
まあ、「※ただし1年後です」になるけどもね、Silverlight 5。 最終的に、Silverlight とクライアント .NET の差はなくなる方向で進化するとは思うけど、 まだまだ先の話だなぁ。
>50 え?Windows用のSLって継続してるの?てっきり電話だけになったかと思ったわ
地震
>>52 クロスプラットフォームはほどほどにしてビジネスアプリに特化
それが誤解されて嘘が出回った
Rubyなら始めからMacに入ってる
お前らなんで喧嘩してるんだ?
Python/Ruby処理系で一番インストールされてるのって、ぶっちゃけ.NET4やSilverlightに入ってるIronPython/IronRubyだよね。
一応WPFも使える。
軽量言語は敵なんかじゃなくて.NETの世界に共存する仲間だろ。
もっとみんなDLRで遊ぼうぜ
>>37 .NET4はWindowsの26%に入ってる。で、これにMacOSXの11%が加わるわけよ。
Silverlightにいたっては全OSの55%に達する。(Google,Yahoo,Bing...にアクセスしたPC調べ)
.netにrubyやpythonは入ってねーよ DLRのコア中のコアのほんの一部だけ吸収されて 後は頓挫した格好でコミュニティに移管 元々コミュニティに任せるべき性質のプロジェクトだったしな
IronPython で Django とか IronRuby on Rails とか もう何でもありなの?
WinFormsではListViewのサブアイテムが編集できないんだった。久々すぎて忘れてた。 この程度のことでコーディングするのめんどくせぇ…WPFだったら数分で終わる簡単な作業なのに…
ListView.Items[i].Subitems[j].Text = "foo"; じゃ駄目なの?
あ,そういうことでしたか.失礼.
WPFや銀光は、開発元(マイクロソフト)がド派手な画面構成で紹介したから 業務開発者からは、「派手な画面のアプリケーションを作るためのモノ」と勘違いされている。
実際そうだし
WPFはWinFormsに対してCとC++のような関係だったら流行ってたと思う。 何を言ってるかわからねーと思うが俺もわからない。 XPとVistaでもあったがガラリと変わるとなかなか人は付いてこない模様。 そろそろ学習したほうがいい。
革新的なものほど末端に行き渡るまで時間がかかる。
未だに勘違いしてる
>>64 みたいなのでさえ、スレを見に来るほど流行ってきた。
新しいことを学ぼうとせず逃げてるような人は、そろそろ(WPFを)学習したほうがいい。
重すぎて使う意味が無い
WPFが重すぎとかどんだけ古いパソコン使ってるんだか。
つまり最新式のPCじゃないとWPFはできないってことですね つまり糞
最新っていうかvistaや7をメインターゲットにしたような感じだからなあ 2008まではxpも視野に・・・と
一般人はオタみたいな毎年買い換えるなんてしないですからね 壊れるまで使うのが普通 5年前のPCを使っている人がどれだけいると思ってるのか そういう人達に、お前らみたいな糞PCじゃWPF様は使えないんだよって 横柄な態度をしているのはどうかと思いますね 料理屋で食べ方を注意してくる店員がいたらどうでしょうか? みすぼらしい格好で入ってきた客にお前に俺の飯は食わせない なんていう店主がいたらどうでしょうか? ソフトはあくまで道具、使われる立場にあるんですよ 使えないならゴミと一緒
え?10年前のPCでも動くんだけど? 古いPCっていうのは1900年代のPCの事なんだけどなに勘違いしてるの?
またアンチWPFの荒らしが遊びにきたのか。
5年前のPCは古くねぇだろjk
ぎにゃー イベントとコマンド混合してた。 イベントってあんまり使わない?
そもそもここに来る奴は基本開発者じゃないの?プロアマ問わず。 開発やるくせにWPFすらまともに動かないPCなの?
そんなことはない。 むしろコマンドが使わない。
動く動かないのはなしなんてしていませんが? 重いかどうかだよ 最新のPCですらこのIDEではデバッグ作業でイライラさせられる
>>76 つまり配布する気がないならRubyでいいよね?
まさか個人で使うのにWPFでオサレGUIなんて非効率的なことしてないよね?
atom上の仮想環境ですらサクサクなのに重いとかいってる奴はどんな環境なんだ?
サクサクというなら1万行あるdatagridのスクロールバーを移動したときの fpsを教えてよ うちのPCは2年前にFPSゲー用に買ったものだが 10行のdatagridでさえfpsは一桁だがな こんなもっさりしてるの使いたくない
メモ帳ぐらい軽くないと話にならん
使いたくなきゃ使わなければいいだろ ('A`) どっかいけ
俺はメモ帳くらい早い Win 7クアッドコアにHD 5770で 俺もXP使ってた時は本当に遅くてフォントもおかしいしくそだと思ってた しかし、今はMSはもうロースペック相手にしてないんだと分かった
1万行のDataGrid糞ワロタwwwwwwww 設計がマジでお粗末すぎwwwwwwwwww VB使いたて3日レベルwwwwwwwww
1万行のdatagirid…(゚A゚;)ゴクリ 必要のない同期通信するアプリを超えてるな…
>>83 コテハン君の頭は、こんなクソ重いWPFプログラマが増えることは、ユーザーが迷惑しプログラミング業界の衰退につながるから
なんとしてもWPFのクソさをアピールしなければならないらしい。
言ってわかるやつじゃないから君も相手にしないほうがいいよ。
>>84 そんなPCもっているやつが世間でどれだけいると思っているんだよ
そういえばDataGridって代替で何か無いの?
うちのPCは2年前にFPSゲー用に買ったものだが 10行のdatagridでさえfpsは一桁だがな これのどこが軽いんだ?
列が10万行とかいう落ちはもう見飽きたから
じゃあその原因を突き止めろ
XPだとWPFは使い物にならないよ 80%いるXPユーザーがまともに使えない時点で糞
お前のまともはdagagrid10万行だもんなwwww
10行って言っているんですけど 日本語も通じないのか?
うんそうだね 10行10万列だねwwwwwwwwwwww
そう言わないと気が済まないのか? こういうきちがいがいるからWPF嫌いなんだよ
ハイスペックPCでサクサク動きますが何か? なんて言ってるバカしかいないのか? そんなに軽いならなぜWPFで3Dゲーム作らないんだ?
また先週の ゲーム作るならC++のほうがマシ 理論か
軽いなら1万行で余裕でしょ? 早くWPFで作ってよ
10万行野郎をあまり虐めてやるなよ…
10万行君の名言 ゲーム作るならWPFよりC++のほうがいい! 1万行のデータグリッドのfps見れ WPFはXAMLとC#の二つを覚えなきゃいけないからダメ
全体のPCからいったら 俺の持ってるPCはミドルかそれ以上 そのPCでさえ、10行のdatagridがこんなにもっさりなのはなぜなんだ? IDEもいちいち重いしデバッグ作業でイライラするわ
10万行なんて一言も言っていないんだけど? それ面白いと思ってんの?
プログラム初心者:WPF遅い糞 ↓ みんな:遅くないよ?ちなみにどんな環境なの? ↓ プログラム初心者:10万行のDataGridが遅すぎ ↓ みんな:マァマァ(((ノ´ー`)ノ
つまりゲームも作れない Datagridもできない IDE糞重い 小規模アプリだと生産性悪い 一体なにができるの? オサレGUIしかできないじゃん
10万行のGrid表示とかもうね… これがゆとり教育の弊害か…
10行でも重いっていってるだろ プログラマってこういうネチネチしたやつばっかりなのか? ずっと孤独な人生過ごしてきて人格歪んじゃってるんじゃないの?
Win7+AthlonNEOシングルコアノートでもそれほど重いとは感じないが
WPFでゲームで作るならXNAはなんなんだろう
10万行を10行に言い直しても大人は騙されませんからねヽ(´ー`)ノ
はいまた人格批判始まった! そろそろうつ病になって自殺とか言い始めますよ
10万行gridってさ、htmlでいえば一つのページに空divタグが1万あるのと同じレベルだよね
( ´д)ヒソ(´д`)ヒソ(д` )(ソースは個人執筆の2008年だって・・・) ( ´д)ヒソ(´д`)ヒソ(д` )(10万行はやっぱり違うわね)
たった2年で高速になるとでも思っているのか?
10万行がサクサクになるには後20年は必要なんじゃないかなぁ
2010なんていれるんじゃなかったわ 2008でも重かったがより一層重い 画面の切り替えも遅いし ちょっと最小化してたら、開くまでに時間がかかる
そりゃ10万行かいたソースを10ファイル開けば重いだろ…
10行でも重いけどね そうやって摩り替えないと擁護できないの?
10万行を10行と言い直すのはあまりに説得力がないのよねー 1000行なら良い嘘になったのにもったいないなー
他のソース参照するときとかにVS2010を3つくらい起動することあるけど Expression Web4よりかは軽いよ Win7の話で悪いけど
俺、思ったんだけど10万行はUHDTVを100枚あわせたモニタでみてるんじゃないかな? だとしたら10万行も有りだと思うんだ
>>81 縦も横も仮想化を有効にする。EnableColumnVirtualizationとEnableRowVirtualizationをtrueで。
デフォルトでは横の仮想化が有効じゃないんだよ。
これでセルの中に無茶なものを突っ込まない限りはそこそこ実用的な速度で動くようになるはずだしデータ量に依存しない速度になる。
グループ化は仮想化が無効になるので使っちゃ駄目。
それでも遅いなら列の幅などのレイアウトが自動調整されるときのコストがかなり掛かるので
なるべく固定サイズになるようにしておく。
サイズに影響しない要素なら多少多くても速度にはあまり影響しないので。
Bindingはなるべくシンプルに動作するようにしないと若干遅くなるけど無茶やらなければあまり影響ないかな。
>>125 それはやってなかったな
デフォルトのオート調整になってる
まあ、それやったところでそんなに変わらないだろうし
試す気にもならない
たった10行と5列のデータなのにあれだけ重いんだから
PC変えてからWinformはそこそこ快適になったが、
WPFはまだだめだな
こんな遅いの作って配布なんて考えられない
Win7でどんな挙動になるかは知らないが
XPユーザーじゃ使う気にならない
使わなくていいです
>>125 それ書いても10万行君は理解出来てないと思うよ
概念とかどうしてそれで軽くなるとかそういう根本的なところがさ
そんな事よりMVVMだっ!!
FPSってどうやって計るのん
VPCはGPUパワーがないからだろ。 WPFのGPU依存度はかなり高いし、じっさいVAIO ZでGPUを切り替えた時、体感が劇的に変化する
VAIO Zって何?オモチャ?
そういえば5750買ったばっかりだった
WPFでGPUのアクセラレータは言うほど効果がない割にバグが多いので無効にするのが無難。 無効にした方が速いとか意味がないことも起こるし。
バグってのはドライバのね。 XPでWPFが相性が悪いっていう原因の大半がGPUのドライバのせいだと思うよ。 特にIntelのオンボードはちゃんと動くものを見たことがない。
なにこのスレ速度w
アンチが必死になって叩かないといけなくなるほどの人気w 2chの片隅でどんなに叩いても大勢には何一つ影響ないのによくやるもんだww
>>137 Part1では4カ月かかったのがたった2日…。
前スレより 1 .NET3.0もリリースされて盛り上がってまいりますた。 2 .NET3.5 SP1 Betaもリリースされて盛り上がってまいりますた。 3 .NET3.5 SP1 もリリースされて盛り上がってまいりますた。 4 .NET3.5 SP1 もリリースされて盛り上がってまいりますた。 5 .NET3.5 SP1 もリリースされて盛り上がってまいりますた。 6 .NET4.0もリリースされたけど別に盛り上がってはいないよね…。 7 パワフルで柔軟すぎるのが敗因か? 正直ついていけないよね…。 8 .NET4 もリリースされて盛り上がってまいりますた。 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/? 盛り上がってまいりますた!
>>136 しかしCore iシリーズのHD GraphicsのコンパネはWPFで作られている・・・
そうなんだよね。 設定画面はWPFなのにWPFのアプリが落ちたりする不具合を抱えてる。 設定画面はちゃんと動いてるだけになんでWPFアプリが動かないのか悩んだよ。
一気にスレ進むと読む気無くすな
読む価値ないからいいよ
WPFはVisual Studioのデザイナ部分が使いづらい。Expression Brendあれば非常に良いけどなかったら使いづらいんだが 趣味グラマは数万円もするようなツールは買いたがらないからな。 昔に比べてだいぶ流行ってきたとはいえ、まだまだだろう。 フリーのExpression Brendでもでればいいのだが。
WinFormsレベルでテンプレートをちょっと書き換えて使う程度ならVSのデザイナでも十分。 そこから踏み込むならBlendがあるに越したことはない。 無料版出せとは言わないまでも、単品パッケージの復活ぐらいはやってほしいね。Express可のUPGが15kぐらいだっけ?
無料のBlendがあれば起爆剤になるかもな こんなのが作れたのかってな感じで
WebBrowserは物凄く処理が速いね ウィンドウを拡大縮小したときの文字列の並び替えが すごく滑らかだ 同じソースなのにlive2chだとカクカクする どうして?
知らんがな (´・ω・`)
あ、やっぱ糞重いわ 900スレ取り込んだら激重いw WPF使えねーな
ソースコードぐらい出せよ
ソースコード出すほどでもない live2chで1000レスあるスレをhtmlで書き出して コピペしたWebBrowserのソースに割り当てただけ 読み込み自体はまだ許容範囲だが(それでもJaneStyleより遥かに遅い) ウィンドウを拡大縮小するともっさもさ Delphiやれっつーことか でも、今更やりたくないな
それ笑うとこ?
どこが?
>>148 >>150 >>152 なんでWPF叩いてるのってこんな奴ばっかりなんだろ…。
WebBrowserが重いって馬鹿だろ。そんな作り方じゃDelphiで書いても糞重いわ。
ウンコ
そんな煽りいらないから 正しいやり方教えろよ
最初から煽ったりせず素直に聞いてりゃよかったのに
素直に聞いて答える奴なんていない
WPFはIntelのオンボードグラボと相性最悪だったのか。
<setter property="Background" value="Black"/> みたいな書き方にしないで、素直に <setter Background="Black"/> みたいにかけるようにすればよかったのにね。 いちいちPropetyだのvaluだの余計な単語つけないといけなくてめんどい
setter要素のBackground属性にしか見えない。
Setterクラスのpropertyプロパティとvalueプロパティを設定しているだけだから。 Backgroundプロパティを持ってるわけではないのでそんな書き方は無理。
プロパティのsetアセセサみたいに使いたいってことじゃないの
言いたいことはわかるけど、ちょっと無理だねぇ。 実際にはコードでクラスでほげほげされてるしね。
167 :
152 :2010/12/08(水) 17:43:42
そろそろ答えが知りたいです
そもそも専ブラのレンダリングとWebBrowserのレンダリングを比べてる時点で何かおかしい
WebBrowser使わずに自分でレンダリングしないと
両方IEコンポーネントだから単に使い方が悪いんじゃ? timeBeginPeriod(1)でも呼んどけばいいんじゃない?
171 :
170 :2010/12/08(水) 18:32:28
勘違いしてた。live2chじゃなくてJaneが比較相手か。 そんなの自前でレンダリングしろ。
172 :
152 :2010/12/08(水) 19:56:14
レンダリング・・・ 言うと思ったw live2chと比べているのに レンダリングしろってそりゃないですよw そんな解決法しか思いつかないのにえらそうに 「そんな作り方はダメ」なんて言ってたの? ユーザーがスキンを自由にカスタマイズできるように WebBrowser使っているのにさ、まったく理解してないね じゃあ、自由にカスタマイズできるようにしろって? そういうことするのは無能と言っていいでしょ
煽りたいなら他所でやれ。
WebBrowserを使う限りはIEコンポだけの問題であってWPFは全く関係ないから WPFスレとしては自分でレンダリングしろと言うしかないでしょう スレ違いだ
上でjaneと比べてんだろ痴呆
>>152 なんか、レス数が増えると重くなるって言ってる様
に受け取れるんだが、WebBrowserコントロール
って表示はlive2chと同じ仕組みが用いられてんだか
ら中で表示するhtmlのサイズは関係ないと思うのだ
が、WebBrowserコントロールをどんな使い方して
んのさ。
作り直しが面倒な程作り込んでるなら別の部分に
問題があるじゃない?さっきの10行10万列の野郎
みたいにリサイズの度に10万個のひろゆき画像を
三次元に回転させるとかだったらそれは重いと
思うよ。
後、知ってると思うがもし仮にXP上で動かして
いたならこれは諦めた方が良いでしょ
WebBrowserの場合はXPでも関係ないよ ネイティブのウィンドウを重ねてActiveXコントロール貼ってるだけだから
178 :
152 :2010/12/08(水) 20:28:26
WPF版のWebBrowserはVB6の頃から変わってないってこと? 作りこむも何もWebBrowser貼り付けただけのものだよ XPだとなぜ諦めないといけないの? .Net入ってたら同じ環境になるんじゃないの?
179 :
152 :2010/12/08(水) 20:29:47
Win7にするとエロゲできなくなるから嫌なんだよ
SilverlightのOOB使えば? OSの影響が無いし、ActiveX丸出しじゃなくてもうちょっとちゃんとしたWebBrowserが使えるよ
よっぽどのことがない限り出来る
WebBrowserは独立した空域を持ってるからWPFのレンダリングとは全く関係ないんだよ。 極端な話、枠を消したウィンドウにActiveXコントロールを貼ってWPFのウィンドウ上に重ねてるだけ。 だからXP上のレンダリングの問題とかの話は適用できないの。
183 :
152 :2010/12/08(水) 20:56:55
だったら、FormsのWebBrowser呼び出して使った方がよくないか? sourceにバインドしようと思ったらよくわからないオブジェクトのプロパティを 使わないといけないみたいで、あれみて一気にやる気失せた
だから同じなんだよWinFormsだろうがC++でラッパー書こうが。 単なるActiveXコントロール。WPFとは全く関係ない。スレ違い。
185 :
デフォルトの名無しさん :2010/12/08(水) 23:14:52
なんでlostfocus2回走ってしまうん? チェックしてダメだったら元のとこに戻したいってだけなのに.focusで無限ループ どうしましょ
PreviewLostKeyBoardFocusとかでチェックしてキャンセルした方が余計なイベントが走らなくて素直に動いてくれると思うよ。
この辺じゃね > このイベントはバブル ルーティングを使用するため、フォーカスを失う要素は、 > イベント ハンドラが実際にアタッチされている要素ではなく、子要素である可能性があります。 > イベント データの Source をチェックして、フォーカスを取得した実際の要素を確認してください。
188 :
デフォルトの名無しさん :2010/12/09(木) 00:23:28
>>186 ああ、それならキャンセル持ってるですね。試してみます。
>>187 ちょこちょこsenderに移動先のコントロールが紛れ込んでくるんですが、
その辺が関係してるかもしれないですね。
複数のコントロールをまとめて一つのlostfocusにsetterEventで飛ばしてるんですが、
何かバラにした方が良さげな気がしてきました。
どうもです。
なんでButtonは背景がBackgroundなのに RectangleはFillなんだ Rectangle Background="Red"ってやってもエラーでるから何事かと15秒くらい考えてしまったじゃないか。 Microsoftはどっちかに統一しろよクソめ
こういう事言う人って15秒じゃなくて5時間ぐらいそこで引っかかってるんだよねw
図形を塗り潰すのはFill、アウトラインを描くのはStroke。 なにもおかしい所はない。 他のビジュアル要素を内包するコントロールの背景がBackgroundで前景がForegroundなのも当たり前。 PenがBrushで、BorderがBorderBrushとBackgroundで、PanelがBackgroundになるのも当然の結果。 言葉の意味考えずに、単語だけでプログラミングやってんの? こういう奴って見るだけで頭痛になりそうな痛い変数名・関数名を量産してそう。
ShapeかControlかの違いだよ。 そういう基本的な図形はShapeなので区別は付くはずだよ。
またあるコントロールではテキストがContentだったりTextだったりわけわからん。 Windows Formのコントロールなら FormもLabelもButtonもTextBoxも全部Textプロパティだったのに。 WPFはWindows Formのクラス群でTextプロパティだったのがいろいろ分かれてる。 いちいち、このコントロールはTextがContentで、あっちはTextで、別のなにかはさらに違ってって全部いちいち暗記しなきゃならないのか。めんどくせーな。
Textなものほとんどないじゃんw
>>193 暗記しなきゃならないって馬鹿か。
中に何が入るか考えれば暗記する必要などない。
Textはstringしか入らない箇所で使われる。 Contentは文字に限らずいろんな要素を入れられるしContentTemplateなど表示のカスタマイズができる。 そんな感じに使い分けられてるから結構解りやすいと思うよ。
なんか地味にWindows Formアプリケーションでは Buttonとかの背景がBackColorっていう名前のプロパティだったのに WPFになるとBackgroundとか、意味も無く名前変わってるし。 なんなのこれは。Formから移ってきた人がうっかり前と同じようにコード書いてエラーおこさせるための嫌がらせか?
Backgroundがどのクラスのプロパティか調べろカス Buttonクラスの継承調べろカス
>>198 >意味も無く名前変わってる
お前、無能だとよく馬鹿にされてるだろ。
Backgroundに入るのがColorだけだとでも思っているのか?www
ちょっとぐらい調べてから喋れクソめ
意味なくはないだろw BackColor とかどう見ても失敗。 ImageBrush とかも使えるし。
ボタンみたいな基本的なクラスでさえいちいち調べないといけないのか。 Windows Formでつちかった知識をいかせないなんてWPFはクソな仕様なんだな
WinFormsすら使えないのにWinForms引き合いに出してWPF叩こうとするからすぐ破綻するんだよ
いや使えるよ? Button.Text="Click me!"; これでOKだったんだから WPFでも全く同じコードで動くようにすべきだよ。
何でこの人このスレにいるんだろう…
プロパティを何個覚えましたってレベルで「WinFormsで培った知識を生かせない(キリッ」って面白いアホだな。 こういう奴って、WinFormsの頃からバインディングがあった事すら知らないか、ろくに使いこなせてなかったんだろうな。
WPFスレに居る人達って、ほとんどがWinFormsに不満感じて移ってきた人だろ。 WinFormsの良いとこも悪いとこもお前以上に理解した上で出した結論。 その中に飛び込んで言うことが「プロパティ名が気に食わない」だけかよw
ScaleTransformで、コントロールの拡大、縮小をしてる。 ScaleTransformでの縮小時に文字が読めなくなってしまうのと、 コントロール自体の縦横比率で、文字の縦横比率が変わってしまうので困る。 全体サイズと内部配置を変更して、文字サイズは固定する方法ってない?
拡大・縮小で位置合わせするとかないわ。 Grid で列幅、行高さを auto なり * なり指定すればいいのに。
そっかあ・・・ 細かくコントロールの配置を整えないので、Gridは厳しいなあ。 地道にpoint計算して、Canvas.SetLeftすることにします。 ありがとう。
細かく整えないならむしろ Grid だろ。 固定でやってたら文面ちょこっと変えただけで再配置になるし。
あっ、あと、拡大縮小するならわざわざ ScaleTransform 書かなくても、 ViewBox ってのがあるよ。中身を自動サイズ調整。
ごめん。 細かくコントロールの配置を整え"る"ので、の書き間違い・・・ ViewBox試してみます!
Transformってなんか平行移動ができるらしいね。 TopやLeftとかを変えればいいだけだと思うんだがなんの意味があるんだろう。
>>215 LayoutTransform と RenderTransform で挙動違うからねぇ。
Layout 相当の方は確かに Top/Left の変更で行けなくはないが、Render の方は無理。
アニメーションでぶるぶる震えるとかそういうことやるのは Transform の方がいいともう。
Top とか Left とかは Canvas 内にいないと使えないし。
Content の入れ子ができる WPF じゃ Top/Left はいまいち使えない。
Gridはいちいち <RowDefinition/> をいっぱい書くのめんどくさいなぁ <RowDefinition*8/> みたいな書き方できるようにしてくれよ
>>217 特殊文法はどこかで破たんするからなぁ。
ツールとの連携を考えると、正規の XML の文法からそれない方が身のため。
RowDefinition とかは Visual Studio の UI デザイナー使うなぁ、
さすがに手書きめんどくさいんで。
もともとXAMLは手書きには向かないだろ。 簡単なツールならVSで十分だが、出来ればBlendを買うのを勧める
WPFでMVVM的に command でアプリ終了させたいんだけどどう実装すりゃいいの? <MenuItem Header="Exit" Command="Close"/> だとメニューのExitがdisableなままでクリックできないし。 自前Command作ってもVMがVを持ってないから Close できないわけで。。。 どうすりゃいい?
>>221 よくあるパターンでは、ViewModelにRequestCloseってイベント作っておいて、
DataContext への代入の時にそれに += するようなのか、
もしくは、最近はやりは、
Close イベント拾ってウィンドウ閉じるようなビヘイビア書くかかなぁ。
XAMLって C#のコードを簡略化して書けるようなものなの? C#だと なんちゃら 変数 = new なんちゃら(); 変数.Child.Add(なんとか); みたいなのを <なんちゃら> <なんとか> </なんちゃら> だけでかけて、いちいちnewとかChild.Addとか書かなくていいから大幅に省略できてラクチン?
>>223 ツールが読みやすいように XML にしてるとか、
依存関係プロパティやらデータバインディングやら、C# で書きにくいのを楽に書けるとか。
Children.Add とかは、C# 3.0 以降、書く必要ない。
var layoutRoot = new Grid {
Children = { new Button(), new TextBox() }
};
みたいに書ける。
>>223 違う。簡略化じゃなくて、外部ツールでも扱い易くするために、あの文法になった。
手書きを前提としては作ってない。
あと、今は
List<string> list = new List<string>();
list.Add("hoge")
は
var list = new List<string> { "hoge" };
と書ける。
226 :
225 :2010/12/10(金) 01:31:05
ごめん、被った。
外部ツールって、Visual C#とかExpress Brendとか?
>>227 それも含めて、ユーザーもツールを作りやすいように。
Microsoft は、XAML を WPF や Silverlight 専用とせずに .NET に関するデータをテキスト形式で書くための言語として作った
(だから、XAML でユーザー定義クラスのインスタンスも生成できる)。
.NET 同士でデータを交換したり、読み書きするなら、単なる XML を使うよりは、XAML を使ったほうが簡単に扱えるようになってる。
229 :
221 :2010/12/10(金) 02:32:30
結局自前 Command 作って XAMLに <MenuItem Header="Exit" Command="{Binding ExitApp}"/> VMに public void Execute(object parameter) { System.Windows.Application.Current.MainWindow.Close(); } こんな感じに落ち着きましたです。 なんかかっこ悪い気がするけど終了するからまぁいいかと。 そんでもって今度は、ウィンドウ枠消して Label だけにしたウィンドウを どうやってドラッグ移動させるかでどつぼってる中orz
>>229 将来的にはそんなかっこ悪い書き方しなくなりそうな感じするけど、
現状はそれでいいと思う。
枠消したアプリは、MouseDown イベントのハンドラーで DragMove メソッド呼ぶだけだったと思う。
そういうのはビヘイビアでまとめようぜ…
まあ、標準で入るの待ちかなぁ。 標準になること自体は確定してるみたいなので、後は次期の問題・・・
基本的なC#の知識もなしでいきなりWPFやったら詰まった。 参照型とか意味わからん。
>>233 参照型:jクラス(class)
値型:構造体(struct), 列挙型(enum) 組込み型(int,double...)
C# 参照型 でググると解説がいっぱいある。ふらっとC#あたりで聞いてもいい。
なんで英語バージョンのWPFだと Routed eventなのに日本語だと ルーティング イベント になるの? 用語つけたやつ誰だよ。
>>230 ありがとう。
Label に MouseDown="label1_MouseDown" 追加して Window1.xaml.cs に
private void label1_MouseDown(object sender, MouseButtonEventArgs e)
{
this.DragMove();
}
追加でいけました。
>>231 添付ビヘイビアってやつですかね?
DragMoveBehaviour みたいな
>>235 MS 規則だと割とそうみたいよ、routed event に限らず、-ed 単語の多くが・・・
ほんとなんでそんなことになったのか。
MS無視してルーテッドイベントて名前に変えちゃおうぜ
MSの感覚だと「ルーティングされるイベント」となりそうだけど 長いからそれを略したと考えれば別に不自然じゃないでしょ
「自動実装されるプロパティ」とかあるじゃん。 略して「自動実装プロパティ」と表記されてることも多い。 間に「される」を挟むなら「ルートされる」じゃなくて「ルーティングされる」でしょ
それ前からできなかったっけ Silverlight4ツールキットにXAMLデザイナの更新が含まれてたんだったかな
ToolkitじゃなくてSilverLight Tools
wpf. silverlightにそれぞれtoolsだのtoolkitだの名前の似た拡張がごちゃごちゃあるの は、ほんとなんとかして欲しい。vsのアップデートまたは機能拡張として正規に適用 されるべきもんだし、そもそもなんでcodeplexみたいな裏街道でこっそりダウ ソしなきゃならんのだ? バージョンも2010 april cptとか何が最新なのかさっぱりわからんし。
ToolkitとToolsはネイティブな英語話者なら区別ついてるのかね?
>>246 codeplex は、早期に発表しておきたいという場。
ぶっちゃけ、人柱ほいほい。
安定したのから製品版に入っていくはず。
>>246 あと、CTP(のことよね?<cpt)は、
β以下の完全人柱バージョンって意味。
さっぱりわからん人は触れちゃダメ。
WPFは視覚的な図や画像を利用した教材を作るのにいいかもなー 歴史の勉強ソフトとか。 でもそういうことするんだったら、別のソフトつかったほうがいいか。
最後の行が意味不明
なんで技術からソフトの話になってんだよ
WPFが何か知らないんだろ
パッケージソフトだとFlash使ってるのはたまにあるよね 例外なく操作性最悪のゴミだけど
凝った視覚的な図を作っても 見せる相手がいない まさか自分で見るために作るのか さびしいのう
デザイン担当がテスト開始後に ドヤ顔でデフォルトのスタイルを作ると言い出した挙句上司が了承した…オワタ
アナログ時計が簡単に作れるな。便利。
Blendの使い方わかんないんだが、解説書とか出てないの?
洋書しかないような 間違えてBlend Bookとか買っちゃだめよ
MS の出してる簡単なビデオみたり、 youtube に Blend 使ったビデオあるから見れば大体はわかる。
Blendに限らずWPFの本って洋書しかないだろ。
日本語のもあるにはある。 まともなのはないけどw
スキンはどうやって実装するの?
URLでネタバレな件
気にするな
>>263 スタイル使う
リソースディクショナリにまとめておけば簡単に切り替えられるし
ユーザーが作ったものを動的に読み込むこともできる
>>267 スタイルのスキン的使い方をまとめてるようなところない?
MenuItemのCommandプロパティにApplicationCommands.Openを設定していると, InputGestureTextが"Ctrl+O"とか設定されるけど, それを抑止するにはどうしたらいいでしょう? 面倒だけどCommandを使わずにイベントハンドラで処理するしかないのかニャ?
そう思ったのならちょっと危ないよ このメカニズムは保守に重点を置いてる物だから 何でもできると思ってるのなら大間違い
保守に重点を置いてるだけならテンプレートだのアニメーションだのといった機能は別にいらないのでは
普通に考えてWPFはビジュアルに重点を置いてるに決まってるだろ バインディングの強化はWinFormsやASP.NETからの正当な進化であって バインディングのためにわざわざ新しく作ったわけじゃない
MVVMとかの概念を踏まえた設計から保守に重点をおいてるとも言えるんだがな
別にMVVMみたいな具体的な構造を踏まえてるわけじゃないよ。 一般にMVC的な構造にバインディングは有効だからバインディングが重視されてるだけ。 コマンドバインディングだってあれは本来Ctrl+Cとツールバーのコピーボタンとメニューのコピーボタンで 共通の処理を行うための仕組みだ。
お前らみたいに一つのことで手一杯なんじゃなくて 何でもできるようになろうとしたんですよ 努力は認めるが
>>275 たくさんの処理方法がある場合にはコマンドを使えばいいの?
たとえば、たった一つのボタンを押すしか実行する方法が無い場合はWinFormのようにボタンクリックイベントで
ボタンを押しても、ショートカットキーでも、メニュ−でも、その他いろいろな条件でメソッド呼ばれるようにしたい場合コマンドを使うの?
いちいち方針を示されないと何もできねえのか貴様は
>>277 そうだよ
で、コマンドが実行されたときの処理はコードビハインドに書く。
イベントハンドラも自由に使っていい。WPFは本来そういう設計。
やーんこわいーw
認識「ソビエト=似非科学」のパーマネントを決定付けた罪は大きいよなー
文系SEは出てこなくて良いです
MVVMで設定ダイアログ書いてとってタブページごとにViewとViewModel作ってるんもんで 超面倒臭いんだけど、どうにかならないの?
MVVM面倒臭いって言ってる奴何なんだろう MVC的な設計が面倒くさいのは当たり前のことで それを補って余りあるメリットがあるなら使えばいいんで 無理してMVVM適用する必要ないんだよ?
そうだ。俺と一緒にビハインドでハンドラ直書きしようぜ!
ごめんなさい・・・ 貴方とはお付き合い出来ません・・・
MVVMこそ正道であり王道、外道とノンケに用はない
ていうかblendでコードビハインドでサクサク作ってったほうが楽しいぞ
ガチMVVMだとツールボタン一つ一つにVM持たせたりすんの? アホらしすぎる
お前の頭と同様にほかの人間もアホだと思うなよアホ
いちいちVMがめんどくさいっていうのは 特に何をするでもないのに変数とプロパティ両方に分けるのはめんどくさい 変数だけでいい って言ってるようなもの。 まぁpropで簡単に実装できるようになったけどさ。
you aren't going to need it
設定ダイアログのタブ別にViewModel作っちゃったら使い辛いだけだろ…
抽象的なビューのモデルと単なるモデルの区別が付いてないんだろ ビューを切り替えるという概念もなさそうだし
日本地図とかの画像を読み込んで 北海道の上にマウスを置くと北海道が光って 青森の上におくと青森が光って・・・ みたいなのってどうやるんだ。やりたいけど今の俺の技術じゃ無理だ。 きっと単純なコードじゃ無理だろう。あきらめた。
座標と画像がセットになったものが国土地理院からでてなかったか? それを取り込んでLINQで繋げてはいほいそいで20分でできたと思う
ListBoxで何でもできるぜ!ってサンプルでそんなの見たことあるな。
古典的な方法なら 領域をそれぞれ違う色で塗り潰した画像を別に用意しておいて マウスポインタの下にあるピクセルの色を取得する
>>295 284だけどビューの切り替えってどうすればいいの?
最初は、たとえばページ選択するたびにデータテンプレートとか切り替えて、
ViewModelの表現方法変えたりしようかとも思ったんだけど、
見た目はタブコントロールのまんまなのに、
タブコントロールとは微妙にコンテキストが違って来てるような気がするし
<Style.Triggers>でEllipseにマウスが入ったら色を変える EllipseをDoubleAnimationで大きさや位置を変える ってやって、マウスをそこそこ早いスピードでEllipseの中に入れたらたまに色変わらないね。ちょっとシビアだけど厄介だなあ。
>>300 タブ全体と一つのviewmodelを紐づけていいんじゃないの?
一ページにはviewmodelの一部が表示されてる
viewmodelは複数のmodelを管理もしくはより大きなmodelのサブセット
みたいな
WPF楽だなあと実感が湧いてきた 大量にスニペット自作しないとだめだけどw
なにそれ? 公開して
いや、べつに大したことしてない MVVMの定型句を登録してるだけ On$Name$ = new DelegateCommand($Name$, parameter=>true); public DelegateCommand On$Name$ { get; private set; } public void $Name$(object parameter) { } こんなのとか
>>305 MS 公式な奴(RIA Services とか)の命名規約見てる感じ、
コマンドが $Name$Command で、実際の処理メソッドが On$Name$ の方がいいと思う。
メソッドがpublicならメソッド名はNameだけでいいと思うよ。意味的には,メソッドが先にあって コマンドの方はバインドさせるために補助的に公開しているに過ぎないわけだから。 コマンドをイベントハンドラとして捉えるのであれば,メソッドは名前以前にprivateにしたほうがいい。
結論としては、「おれのアプリはくずれない」と自慢したいならWPF そうでないならRubyで十分だよ
Rubyなんか崩れないどころか何も表示できませんけどね
何も表示されない? それってWPFでXAML使わないと言っているようなもんだな
別にそこまで大規模なアプリじゃなかったら XAMLって使っても使わなくてもどっちでもいいよね。
だからBlend使えと
>>308 RubyいいよねRuby。ただしUNIX上に限る
Blendの使い方がわからない どこにマニュアル転がってるんだ?
Ruby苦手だわ オブジェクト指向の実装が透けて見えてなんかヌルヌルした感じが合わない 依存関係プロパティをコードから触ってる感じ
MicrosoftはC++でアプリケーション開発するより WPFやWIndows Formで開発するほうをオススメしてるみたいだな。
かといってC++を誰も使わなくなるということにはならないんでしょ いくら進化した言語ができても、ただ覚えることが増えるだけって感じ
C++が必要な局面は依然として多く残されている。スレ違いだけど 今更感のあるどうでもいいレスに反応しちゃうぐらいには危機感を感じているようだ。スレ違いだけど
結局Frameworkってなんだったのって感じ 何も便利になってないし
WPFやるにはC#使わないといけなくて VBユーザー涙目って感じでもないしな
>>319 ム板に居るのにまだそんな事言ってるのかw
何年前から時間止まってるんだ?COBOLer?
323 :
デフォルトの名無しさん :2010/12/15(水) 16:22:30
WPFアプリケーションでファイルを選択するためにフォルダを開くときって、どういうUIが標準的ですか? winformのOpenFolderDialogみたいなものは用意されていないんでしょうか?
じぃじぃけぇえす
>>323 Microsoft.Win32.OpenFileDialogクラス
WPFアプリケーション作ったときはusingにMicrosoft.Win32がないから
どこかにOpenFileDialogと書いて、Ctrl+.でusing呼び出して書き込む
せっかくオサレGUI作ってもファイル&フォルダ選択ダイアログがしょぼいんですよね?
3DのオサレGUIを作ってもダイアログ起動すると2Dのw2kの頃から変わってないんですよね?
ばいばいおされさん
2Dだからw2kと同じだ!って、おされさんは馬鹿だなぁw
今時携帯機(ゲーム機、電話)でさえ3Dなのに これだけ重いIDEと実行ファイルで2Dってw
マニュフェスト設定すればテーマは適用されるよ。 デバッグ時は起動元が違うから適用されないこともあるけどね。
軽くて、機能的で、短いコードで書けるデスクトップ用の言語を開発しろ そのうちコンピューターと会話をしながらプログラミングできるソフトを どこかが先に作っちゃうぞ
粘着アンチが居座るのは人気がある証拠
>>331 それだよそれ、デバッグ時と違う結果がでるのがイラっとするよね
デバッグ時はウィンドウの外枠で隠れて見えない文字が起動すると見えるとかほんとやめてほしいわ
人気なくてもアンチがいるものなんていくらでもあるけど
WPFはB級映画というより王道のハリウッド映画 ド派手なだけで深みはない
批判が的外れすぎて笑える
WPFはインテルのオンボードチップと相性が悪い。 なんかWin7でもインテルのオンボードだとめっちゃ重くなる。
Win7でオンボの時点で重いよね
ポータブルWPFまだ?
それをSilverlightと呼ぶ
342 :
デフォルトの名無しさん :2010/12/15(水) 21:34:59
343 :
デフォルトの名無しさん :2010/12/15(水) 22:12:31
DataGridにComboBox表示できない どうすればいい?
クソして寝ろ
できないわけないだろ。 DataGridTemplateColumn
まずはDataGridComboBoxColumnだろ。
IsReadOnly="True"になってた すまんかった で、選択肢を表示させるところまではできたんだが、選択してもそれが残らない(?) 表示されない、空白のまま やっぱり助けて DataGridComboBoxColumnつかってます
ちゃんとBindingしたのか? してないと値はセットされないので選んでも空になる。
恥ずかしくて詳しくは言えないがいろいろすまんかった これからもよろしく
XAMLでBindingする場合とC#でBindingする場合の違いを教えてください
使いこなせばBindingだけでかなりのことができるXAMLと ちょっとだけよのC#
TextBox.TextをC#でBindingしたら書きこむと即コールバックが呼び出されるのですが、 XAMLでBindingしたらフォーカスが移動しないとコールバックを呼び出してくれません XAMLでもC#のように即コールバックを呼び出すように設定できますか?
UpdateSourceTrigger
ありがとうございました
>>351 XAMLで出来ないこともC#で出来るけど逆はあまりない。
でもちょっとしたことならXAMLの方が短く書ける。
できるできないっていう観点だけならXAMLでできることはC#で書いてできる 完全にC#>XAML ただし書くのがめんどくさくなったりする弊害がある
Silverlightはネイティブ実装だからXAMLでしか書けないものがあったり 一般にXAMLで書いたほうがロードも速かったりするけどな WPFはもともとC#で書かれてるからそういうことはないけど
つまりRuby最強
XAMLでどこまでやるか悩ましいな <DockPanel> <ListView Name="list" .../> <GroupBox DataContext="{Binding SelectedItem,ElementName=list}"...><!--詳細を表示 --></GroupBox> </DockPanel> みたいなこともやろうと思えばできるけど、 あちこちの連携をやりすぎるとだんだん挙動がイミフになってキモくなるw
んなもんIsSynchronizedWithCurrentItemでいいべ
DataGridでDataGridRowのVisibilityにCollapsed入れまくったらスクロールバーがキモくなった
あるプロパティをバインドしたい時に INotifyPropertyChanged でプロパティ実装するのと、 DependencyProperty でプロパティ実装するのって何か変わるの? 更新通知を自由に送れるか送れないかの差? 速度とかはどうなんだろう。 誰か教えてください。
DependencyPropertyは値をアニメーションさせたり 親要素の値を継承するようにしたり添付プロパティの定義に使ったりする 速度はたぶんINotifyPropertyChangedの方がだいぶ速いだろうけど バインディングとかやってる時点でプロパティアクセスの速度なんか無意味だからどうでもいい
なるほど。んじゃあ、基本 DependencyProperty 使っておきます。 ありがとうございました。
>>364 INotifyPropertyChanged、プロパティ名を文字列で解決してるせいで遅いよ。
バインディングに使う場合には実は依存関係プロパティの方が早い。
普段のプロパティアクセス遅くなるけども。
>>365 ただ、DependencyObject 継承しなきゃいけいのがきつい。
ユーザーコントロールとか作るときにはいいんだけどもね。
ViewModel の場合にはあんまり使わない。
「この部品のこのプロパティはどこの値なのか」を調べる方法ってない? 辿っていくこともできなくはないけど、ものすごくシンドイ。
親からの継承なのか、スタイルで設定された値なのか、自分自身で設定したものかって話よね? 最新の Silverlight 4 Tools 入れたらプロパティの値の出所表示されるけども?
おぉ…そんな便利なものが。トン、やってみる。
Snoop使えよ。
結局、UIに毛がはえた程度か。 しかもmonoじゃ動かないからwindows専用なのか。 だったら、Qtのdesignerが吐き出すXMLを手動で作るのとあんま変わらん気がする
UIシステムに対して"UIに毛がはえた程度"って…可哀想に、可哀想に…
そりゃ世の中のアプリケーションは全て"UIに毛が生えた程度"でしょう
ユーザーインターフェースに毛が生えるってどういうことなの
大人になるんだよ
ウィンドウとかボタンがもじゃもじゃしてるんだろ
不衛生だから剃るか短く切るかしろよ
HairEffect爆誕
図星過ぎてネタに走るしかなくなったようだな
新しい髪型の話題で"頭に毛が生えた程度"と言われてもw
くだらない比喩は要らないから具体的に反論してよ
じゃあまずは具体的に何と比較して"毛が生えた程度"なのかを述べた上で具体的な問題点を指摘してよ UIと比較して毛が生えた程度ってUI作るためのものなんだから当たり前でしょうが
反論だけは具体的にw
Qtの生産性の低さ
具体的に
"UIと比較して毛が生えた程度"は当たり前なので反論できません windows専用もその通りです XAMLはデザイナに生成させることができます。少なくともデザイナはQTよりは強力です。 で?
具体的
具体
具
お前らのせいで
>>372 が出てこれなくなったよ
アプリ一つ作るのに二つの言語がかかわってるのがうざい
C#, sql, javascript, html, xml, … WPF使わなくても普通にこれくらい出てくるじゃん
>>393 UIをXMLで記述するのは近年の流行り
HTML+CSS+JavaScript+Flash/Silverlight+Perl/PHP/Java/C#/C/Ruby/Python+SQL
最低でも4言語以上必修の環境が大流行してんのに、たった2言語で音を上げる人って(笑)
普通にってhtmlなんて使わない
WEB開発なんてしないしアホか
正規表現は覚えても損しないと思うよ
XMLとC#
SQLw
>>393 は口ではそんなこと言ってても体は勝手に
from p in list where p.IsEnabled select p.Textとか書いちゃうんだろ?
おれならこうかく list.ForEach(p,p=>p.IsEnabled)
>>393 あんなの、C# のサブセットをツールが読める形式で書いてるだけ。
>>393 使いたくなけりゃxaml使わずにcsだけでも書けるぞ。
全力でコーディングしれ。
C#でUI書くのなんてWinFormsやってるみたいでやだー
ざむるの文法なんてほかの言語と比べて単純だしな。文法自体は覚えること少ない、 <Button Width="100"/>って書くのを <Button> <Button.Width> 100 </Button.Width> ・・・ とか、多少のことでいい。
いくらMVVMで可能な限りXAMLで書こうと テンプレートに対応したコントロールを作るときはC#でUI触りまくることになるよ WinForms以上に汚くて泥臭いコーディングが待っている
そういうのはコントロールの中に閉じ込められてるというのがポイント。 利用者側が泥臭さに触れなければ、実装側は多少泥臭くても。 でも、UserControlでないカスタムコントロール、もうちょっとXAMLで書けないものかねぇ。
409 :
デフォルトの名無しさん :2010/12/20(月) 01:34:39
試してないけどUserControlならMVVMで思う存分書けるんでねーの? CustomControlはもうちょっと何とかしてほしいねえ。 ユーザー側で好きにテンプレートいじれるようにしたいなら、 XAML側は単純でも動くようにしたいし、そうなると…
なんだ。ようは、ただのモデルとビューで、 モデルはコードで実装したらビューはXMLで書けるってだけ? それって、Qtでできるのとは違うの?
Qtとかどうでもいいから(みんなの本音
いやQtがVS2010に対応してくれさえすればQtを使うよ WPFは決定的なものがないから
C#とVS2010でQt使えたら考えてもいい
>>410 今時どの環境でも似たような思想になってると思う。
Qt しかり、Flash の MXML+AS3 しかり、HTML+JS しかり。
それの .NET 版。
>>411 WPF 一択。
>>412 うーん、XAML 使えるのだけが WPF じゃないからなぁ。
MS の GUI 開発のノウハウが詰まってるよ、WPF と Silverlight には。
具体的に
使えば分かる
説明できないんだ?
GUI フレームワークはなぁ、それぞれが重たすぎて、一覧比較できるほど複数のフレームワークに精通するのはしんどく。 むしろ、そんなに Qt がいいというなら、「Qt ならこんなことできるよ」的コード出してほしい。 それに対して、「WPF ならこう」とかコメント付けるのならいける。
Qt使ってる人が、Qt出汁にしてWPF叩きに利用したりするかね?
とはいえ、QtにするかWPFにするかで悩んでいる企業も多いんじゃなかろうか。
マジで? Windows 環境で Qt ってそこまで競争力あったっけ? Flash/Flex AIR が競合に上がることはあっても、Qt は検討対象として見たこともないけども。
クロスプラットホームにする場合はQtも検討する場合があるだろうが、それならFlashかJava。 ネイティブでやらねばならないなんてAdobe、Appleぐらい大きなところだけ。
俺なら WPF にする前に AIR を検討する Qt > AIR > WPF or Winforms ※差はあまりない
その三つの中で生き残るのはどれよ? ちゃんと理由も一緒に書いてよ
なんか伸びてると思ったら宗教論争か
WPF終了
WPFを技術的な面で批判できないから程度の低い荒らししかできない。
なんか自分の悩みみたいなレスだな。
Silverlightで事足りるってことになっちゃったからなあ。
だからってWinFormsには戻りたくない
批判してるのは使えない人だけだな。
と、思いたい人だらけだな。
だからQtを引き合いに出すような的外れの事をしてしまう。
xamlとC#を htmlとjavascriptのようにホームページでも使えたらいいのに デスクトップアプリ、WEBサイト両対応の言語ってないのかしら
Javaは?ActionScriptは?SilverLightは?
JavaScript が VM 層の標準持たなかったのはガンだよなぁ。
WPFやっててSilverlight知らない人がいるんだな 一般的な知名度はSilverlightの方がずっと上だと思うけど
javascriptは、巨大なプログラムを作るようには設計されていないから。
JavaScriptはオフにしましょう! と言われてた10年前からえらく出世したもんさ。
その設計時の見通しの甘さがガンというか。 作られた当時、今みたいな使われ方なんて想像もつかなかったし、誰も責めようはないんだけども。 無理な使われ方してる方がガンか。
JavaScriptなんか本来Viewのコードビハインドどころか XAMLでトリガやバインディング書いたりする程度のもんだろ
Silverlightってjavascriptみたいな htmlファイルに直書きでできるの? CGIみたいに対応している鯖じゃないと無理なんじゃないの? って思って全く勉強してなかった
サーバーは関係ない。クライアントサイドで完結。Flashと一緒。 クライアントでプラグインのインストールは必要。でも.NETはいらんしサイズも極めて小さいしMacでも動く。
あとSilverlightにはアプリケーションをデスクトップにインストールして ブラウザの外で動かす機能がある。Flash + AIR + .NET(のサブセット, WPF含む)と思えばいい。
ほうそれはいいね でもXAMLみたいなものなんでしょ? javascriptが使える意義って 何か計算せてプログラムを走らせることなんだけど それもできるの? ホームページ上に電卓を作って 入力された数字で計算 なんてことSivlerLightだけでできるの?
446 :
デフォルトの名無しさん :2010/12/24(金) 14:12:03
>>445 >ホームページ上に電卓を作って
>入力された数字で計算
できる
ここでぐだぐだ言ってないでVWDダウンロードしてきて作ってみろよ
ただでできるし
それにSL+JSの連携も可能みたいだしな
できるよ C#からブラウザにJavaScriptのコードをevalさせることもできるしHTMLのDOM操作も自由自在。 マネージコードの中でやりたかったらIronRubyやIronPythonをアプリに組み込んでしまうことも可能。 数式を計算するだけだったら数式評価のC#で書かれたサンプルなんかたくさん落ちてるから そういうのを使ってもいいし。
XAMLは HTML & CSS & JavaScript(を使ったDHTML) をXMLで定義できるようにした物。 コードを書かなくてもXAMLだけでDHTMLみたいな動的なページが作れる。 計算にはデスクトップアプリで一般的なC#やVB.NETを使う。 実行時にネイティブコードにコンパイルされる(JIT)ので動作も速い。 さらにWindows向けの開発環境で独占的なシェアを持つVisual Studioが使える。 無料版のVWD(Visual Web Developer 2010 Express)も提供されているため無料で開発できる。(当然、商用利用もOK) これに諸々の機能が乗っかったものがSilverlight。 普通はHTMLに貼り付けてFlashみたいにして使うけど、 ブラウザ外実行すればHTMLに張られたSilverlightが"そのまま"デスクトップアプリになる。 クリック3回でインストール/アンインストールの超お手軽配布。(右クリック→インストールする→インストールしていい?OKの3回)
じゃあ、ちょっとした小物ツールはSilverLightの方がお手軽ってことか WPFだといきなりexeファイル実行しろって感じだけど これなら安心感があるな
更に言えば、WPFでもSilverlightでも無いLooseXAMLなんてのも有る。 .NET Frameworkがインストールされてる必要は有るが .xamlファイルを、IEでそのまま閲覧する事が出来る。 これって、SEO的にはどうなんだろうね。 クローラーでxaml内のテキストを拾ってくれたりはしないんだろうか。
なんでお前らいっつも宗教論争してるの?
453 :
デフォルトの名無しさん :2010/12/24(金) 21:27:37
技術的にはwpfだわな exeでもxbapでも無いだけで
SilverlightとFlashなら宗教論争だがWPFとは親子げんかみたいなもの
全然喧嘩もしてないよ。 にこやかな話し合いだよ。
南斗鳳凰拳的な伝承の儀だよ。 全てを伝えた後で WPF 死ぬ。 全てを伝えきらないうちは生きる。
モデルであるIList<Customer> をViewModelのプロパティで ObservableCollection<CustomerViewModel>としてUIにバインドしようと思うと、 new ObservableCollection<略>(customers.Select(c => new CustomerViewModel(c))) とかやって自分で変換するの?
そうやっているが、モデルのアイテムの追加削除の時とか泣きたくなるなw 可能な時は限られているけどこれを回避できることもある。 Modelのリストを直接Viewに公開してしまって、ViewModel的な処理が必要な時は そのコレクションを管理しているViewModelクラス側で処理すればおk。
適当なラッパー作って使いまわせばおk 自作が面倒ならObservableListでググるとMs-PLで丁度いいやつが見つかる。
WPF世界チャンピオン
亀田はんやないか
463 :
デフォルトの名無しさん :2010/12/27(月) 15:46:33
マウスの戻るボタンにMouseBindingを関連づける方法ってありますか? MouseAction列挙体見ると、右、左、真ん中ボタンとホイールしかないのですが。
>右、左、真ん中ボタンとホイールしかない 基本はこれでこれ以上はマウス側の独自拡張じゃないの? 増えたボタンも結局はキーボードのショートカットキーのパターンを 送り出してるとかそんなんだよね
XButton1, XButton2(大抵のマウスは進む/戻るボタンに割り当てる)はWindowsがサポートしてる MouseAction と XButton1 で検索するといくつか方法が見つかるようだ
466 :
459 :2010/12/27(月) 17:07:37
>>458-459 ありがとう
どうせ小規模だしモデルは元々全部INotifyPropertyChanged/ObservableCollectionだし
ビューモデル固有の操作もほとんど必要ないのでMVVM無視して
全部 class ViewModel { public Model Model { get; set; } }
でいい気がしてきた
467 :
デフォルトの名無しさん :2010/12/28(火) 08:10:04
はじめて4日目だが、 ObservableCollectionがソートできなくてびっくりしたわ
ソートー使えないな! 相当使えないな! バカウケ
今朝は寒いな
フォームではプロパティやイベントを 選択、マウスオーバーするとの説明が出たのですが WPFでは出ません。仕様でしょうか??
デザイナでは出ない
しようがない
VSのXAMLデザイナ使ったバインディングの設定、 今まで使い物にならないと思い込んでて放置してたけど意外とまともに使えるね d:DesignProperties.DataContext要素でダミーのデータを定義してやれば ちゃんとデザイナからバインドを設定できるし結果をプレビューしてくれる
だからBlend使えと何度言えば
買ってくれよ
いいよ
なんでVSのプレビュー機能あんなに貧弱なの?
プレビューは十分だろ デザイナは貧弱だけど
Blendが使えないならWPFで作る意味はないな。
>>467 CollectionViewSource.GetDefaultViewつかえ
>>479 Silverlightとの相互運用とか、SL→WPFの移植とか
482 :
デフォルトの名無しさん :2010/12/30(木) 01:14:02
Webシステムのリプレース案件に年明けから入ることになったんだけど、どうやら WPF+MVVMバターンでの開発になるらしいです。WPFは簡単なツール作成でちょ こっと触ったことがある程度。疎結合なデザインパターンは面白そうだけど、MSDN のMVVMに関する記事読んでも今ひとつピンとこないんですが、年末年始で勉強する のにいいところ、どっかありませんか?
484 :
デフォルトの名無しさん :2010/12/30(木) 11:12:42
Blend評価版試してみてるけど なんかデザイナ向けというよりVSのデザイナのそのまま兄貴分って感じだなあ これくらいならVSに組み込めばいいのに VSでスタイルとテンプレートの編集さえ出来れば要らないと思う
ビジュアルステートとアニメーションだけはVSじゃ厳しい。
それは同意 他にもパスでお絵描したりとか、そういう完全にデザインな部分だけに 特化したツールとして分離したほうがいいんじゃないかと思う ビヘイビアとか完全にプログラミングだし、ごっちゃごちゃな印象
Blendの使い方解説してる良いサイトある? なかったら誰か作って! アフィ貼りまくってくれていいから
アフィ貼りまくってくれていいから(広告はカットするけどw) の間違いじゃね?
回転が出来ません! Quaternion xz = new Quaternion(new Vector3D(1, 0, 1), degreexz); A.Rotate(xz); 回転角degreexz[°]でXZ軸でAを回転させたいのですが、どこがおかしいでしょうか。ご指南お願いします。
マルチなのでスルーで
マルチってどこ? Silverlighgtスレかと思ったら違うようだし、 他にXAML/WPfの話題のスレってあったっけ?
ふらっとC#,C♯,C#(初心者用) Part67 >481 名前: デフォルトの名無しさん [sage] 投稿日: 2010/12/30(木) 14:45:16 >回転が出来ません! >Quaternion xz = new Quaternion(new Vector3D(1, 0, 1), degreexz); >A.Rotate(xz); >回転角degreexz[°]でXZ軸でAを回転させたいのですが、どこがおかしいでしょうか。ご指南お願いします。
とん、ってよりによって、そんなところかいww
かっこいいUIが作れる以外のメリットが分からん。 生産性が良くなるとも思えんし。UIとロジックの分離なんて設計次第だろ。
はいはいそうだねー
でも、その通りだよな・・・
オサレスキンを使ったWinForm風アプリを作るならその程度だな。 自由度が高くなっても必要としていない人には関係ない。
自由度って何の?
プロパティ、イベント、データバインド、UIデザイン… めんどくさいから全部でいいよ
3Dやアニメーションができますって DirectX使えば普通にできるが?
それが楽に感じるなら、WPF なんて必要ないよ
Direct3DなんかちょっとしたGUI作るだけでもアホみたいに手間かかるぞ
QT使えばいい
Qtスレへどうぞ
Popupの上にマウスが移動するとPopupが消えるんだけど消えないようにするにはどうすればいいですか?
親コントロールでMouseLeaveしたらPopupのIsOpen=falseにしてるのが原因でした 失礼しました
>>499 ボタンの中にチェックボックスを入れてそれをマルチ選択可能なリストボックスに入れるとか
アホなことがし放題。フリーダム!!
もはやどう動くのか想像もつかない状態になるがなw
509 :
デフォルトの名無しさん :2011/01/03(月) 08:38:52
webbrowser使おうと思ったら「DocumentはComオブジェクトにキャストして使ってね」とはふざけてるわ まだ未完成じゃないか(シルバーライトバージョンはちゃんとしているみたい)
dynamic使うんだよ 気に入らなかったらWinFormsのWebBrowserをWindowsFormsHostで使えばいい どっちを使おうが空域問題は避けられなくて SilverlightのようにWebページをパズルにしたりはできない
ProgressBarの上にProgressBar.Value + "%"を表示させています。 中央に固定位置で表示させるのはTextBlockを2つ(Value値と"%"で2つ)使ってできたのですが ProgressBar.Widthが変化したときにも自動で中央にする方法が分かりません。 お願いします。
> 分かりません。お願いします。 ? 何をお願いしたいのか微塵たりとも分からないし、情報が足りなすぎるが 適当なコントロールにHorizontalAlignmentを設定すればいいじゃないか。 あとTextBlockはネストできるし、BindにはStringFormatを指定できる。
WPF初心者です・・ ViewModelやModelのプロパティ更新時のエラーはIDataErrorInfoを使用してViewに通知するのはいろんなhpを見て分かったのですが ICommand.Executeでのエラー通知はどうやるのがMVVMパターンなのでしょうか・・・ 今のところViewModelにCommandエラー通知専用のプロパティを作ってバインドしてViewに知らせています
インジケータみたいなもので画面にエラーを示すだけなら 通知というよりViewModelにHasErrorとかErrorMessageとかプロパティ定義してバインドするだけ ダイアログ出したかったらInteractionRequestでググる
MVVMやるならまずPrismのドキュメント読むべき 英語だけどこれ以上の情報はないと思う
以前、Prisnの資料をググール先生頼りで探してみたけど結局どこから見ればいいのやら… お勧めのサイトがあったら是非とも教えて欲しい
あきらめてQt使うわ
日本語の充実したドキュメントとか、やっぱ欲しいよなあ
WPF終了っぽいね
何を根拠に? WPF が終わるのは、WPF のほぼ全機能が Silverlight に移った時だと思うんだけど。
WPFはSilverlightのゴールですか 最初からSiliverlight一本でやってたほうがよかったんじゃないの? 二本立てにすることにメリットあったのかな?
市場成熟、ハードウェアとか他の技術との兼ね合い、投入時期の問題、 色々あるからしょうがない。 例えば、WPF 自身にも、じゃあ、Forms なんて出すなよって思うわけだけど WPF が完成するまで .NET Framework のリリース遅らせれるかって言ったら、 そんなことしてたら10年近く VS の新品出なかったのよ。 とりあえず Win32 API をラップしただけの Forms 必要だったでしょ。
VisualStudioでTextBoxのKeyDownの処理をしようとすると Window.xaml.csにTextBox_KeyDown(object sender, KeyEventArgs e) が作られますが これをWindow.xaml.csとは別のcsファイルに書く方法ってありませんか interactivity.dllのEventTriggerをつかうとKeyDownイベントでCommandを呼べるようにはできましたが CommandParameterにKeyEventArgsを渡す方法が分かりませんでした
対象の要素のKeyDownイベントにアタッチしてコマンドを呼び出すビヘイビアを作る System.Windows.Interactivity.Behavior<UIElement>あたりから継承
527 :
デフォルトの名無しさん :2011/01/06(木) 16:47:20
WPFの前に2chがやばそうだな ニュー速なんだよあれw
>>526 ありがとう
Blendからもポトペタでできるようになりました
Silverlightは.Net使わないネイティブコードで表示早いんだっけ? WPFは.Netネイティブだから表示遅いし重いんだっけ?
Silverlight は、GPU(Graphic Processing Unit)を使いませんが、WPF は GPU を使って高速に描画できます。
英語でおk
いやSilverlightの方が描画はもっさり。一応SilverlightもGPU使ってるけど WPFよりもかなり消極的でキャッシュも控えめで描画面積が広くなると目に見えて遅くなる。 WPFはフレームワーク自体はC#で書かれてるけど描画はネイティブだよ。
それでなんでWPFなくなってSilverlight残るなんてこといってる奴がいるの?
それDataGridコントロールに限った話。 DataGridはもともとSilverlight向けに作られたのでWPFでの調整が十分にできてないだけ。
>>529 描画に関しては、まだ比較計測していないが
ループ処理は、WPFの方が10倍近く早かった。
ループ処理って何?
そんなんで10倍も差が出るわけないだろw .NET FrameworkのCLRとSilverlightのCLRはほぼ同じもの 若干Silverlightの方が最適化が控えめらしいが10倍はどう考えてもありえない
憶測で物を考えるのが君らの悪い癖だ
試してみたけどそんなに変わらなかったよ 文字列連結は誤差範囲、単純なループ+数値の加算だと1〜2倍くらい
.NET Framework と .NET Compact Framework だと、 ガベコレの性能が全然違うんで、 ループの奥でインスタンス生成とかしてるとパフォーマンス10倍変わる可能性ある。 Silverlight の CLR は優秀だったはず。 もしかすると、Silverlight for Windows Phone 7 の話だとすると、 WP7 は Compact Framework ベースなので、確かに遅そう。
実験してみるか。 private void button1_Click(object sender, RoutedEventArgs e) { DateTime timer = new DateTime(); timer = DateTime.Now; for (uint i = 0u; i < 4294967295u; i++) ; MessageBox.Show((DateTime.Now - timer).ToString()); } コードはこれで良い? (xamlにボタン1個置いて、ボタン押したら計測開始の想定で)
全く差は無かった
545 :
543 :2011/01/08(土) 12:27:50
Visual C# 2010 Express [ Ctrl ] + [ F5 ] で実行 1回目 : 1.3660000 (秒) 2回目 : 1.3610000 (秒) 3回目 : 1.3620000 (秒) [ F5 ] で実行 1回目 : 10.2020000 (秒) 2回目 : 10.1960000 (秒) 3回目 : 10.1970000 (秒) Visual Web Developer 2010 Express Silverlight 4.0.51204.0 OOB実行 (ブラウザで変わるとは思わないけど、念の為) [ Ctrl ] + [ F5 ] で実行 1回目 : 10.7090000 (秒) 2回目 : 10.6980000 (秒) 3回目 : 10.7320000 (秒) [ F5 ] で実行 1回目 : 10.7040000 (秒) 2回目 : 10.6950000 (秒) 3回目 : 10.7140000 (秒) OSはWindows Vista + SP2 (x86) CPUはIntel Core2 Extreme X9650 @3.00GHz
それデバッガ動いてるんじゃないの? こっちだと[Ctrl]+[F5]で両方2秒前後で差は無かったよ デバッグ有効だと両方9秒程度 VWD2010, Silverlight 4.0.51204.0 XPSP3(x86), PenD 3.00GHz 生成されたテストページを直接ブラウザで開いたらどうなる?
547 :
543 :2011/01/08(土) 12:47:18
>>546 >生成されたテストページを直接ブラウザで
それもやってみたんだけど、やっぱりSL4だと10秒以上掛かった。
IE8とGoogle Chromeで、1回ずつ試行。
こっちの環境が何かおかしいのかな。
System.Drawing.Bitmap から BitmapSource を生成してファイルを保存しているのですが 何10ヶも繰り返していると OutOfMemoryException が発生してしまいます。 海外サイトでも取り上げられていて、同じように実装しているのですがどうしても 発生してしまいます。 何か問題ありますでしょうか? [DllImport("gdi32.dll")] public static extern bool DeleteObject(IntPtr hObject); string[] srcFiles = Directory.GetFiles(srcFolder, "*.jpg"); Array.Sort(srcFiles); if (!Directory.Exists(dstFolder)) Directory.CreateDirectory(dstFolder); foreach (string name in srcFiles) { using (Bitmap srcImage = new Bitmap(name)) { string dstName = Path.Combine(dstFolder, Path.GetFileName(name)); IntPtr ptr = srcImage.GetHbitmap(); BitmapSource bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap( ptr, IntPtr.Zero, Int32Rect.Empty,BitmapSizeOptions.FromEmptyOptions()); DeleteObject(ptr); bs = null; GC.Collect(); } }
GC.Collect入れてみたら
とりあえず何がリソースリークしているか調べたら?
それよしも例外投げたメソッドはどいつだよ
OutOfMemoryExceptionだから実行エンジンが投げた非同期例外じゃないの どこからともなくやってきて問答無用で即死の類
昔のBitmapクラスはロードしたときに投げたりするぞ 拾おうと思えば拾えるのもあるからやれ
それはImage.FromFileじゃなかったか。 Image.FromFileは4.0でもOutOfMemory投げてる。 頭おかしい。
皆様お返事ありがとうございます。 OOM 例外が発生するのは、 srcIamge.GetHbitmap(); です。 DeleteObject(ptr); で解放しており、BitmapSource をコメントアウトすると OOM 例外は発生せず何事もなく終了します。 GetHbitmap で取得したオブジェクトは DeleteObject で解放しているようなのですが、 BitmapSource が間に入ると解放されずに保持しっぱなしのようです。 BitmapSource に Dispose がないので、代わりに null を代入して GC.Collect() しているのですが・・・
そもそもの話をするとなんで一度Bitmapに読み込んでいるのか気になるところではある。 BitmapImageに読んじゃ駄目なのかなぁ。
>>557 BitmapSource をコメントアウトして、GetHBitmap と DeleteObject だけだと
メモリは問題なく解放されているんですよ。
BitmapSource を HBitmap から作成すると解放されませんので、
BitmapSource あたりにに問題があると思います。
>>558 System.Drawing.Bitmap でいろいろやった後に、BitmapSource しなければ
ならない事情が。
BitmapSourceの中身はDIBのはずだがなあ
てかなんで直接WPFで読み込まないのと言いたい。 マルチスレッドで扱う方法を知らないという落ちじゃないだろうな?
WPFは使ってないんじゃないの WPFのエンコーダが使いたいだけとか
素直にBitmapをロックしてBitmapSource.Createでコピーしたほうがよくね
WPFで作り直しちゃいなよ!
567 :
デフォルトの名無しさん :2011/01/09(日) 09:42:54
ListViewについて教えてください。Wpfの奴は、例えばスクロールして4項目目が1番上に表示されている状態で項目入れ替えると Viewが更新されても4項目目が一番上に来るみたいですね そこでデータソートして1番目のアイテムをScrollIntoViewで一番上に表示させたらいいと思ったんですが、CollectionViewSource 使ったソートは項目自体を並び替える訳じゃないようで、一つ目の項目取り出しても最初に入れた項目が出てきます ListViewのスクロールさえリセットできたら良いんですが、何か良い方法はありませんか?
SelectedItem 差し替えかな。
VIBlendのEditors.dllのコントロールは非商用なら 自分のアプリにつけて配布しちゃっていいってことだよねー 英語できないとだめだなぁ・・
コマンドラインでもformsでも出来るのに、WPFだとコードコントラクトの静的チェックができない 検索してもさっぱりだし、うちの環境が悪いのか、みんなWPFなんて試してもいないのかもわからない
WPFの利点ってどんなですか 俺Formアプリで十分作りやすいんだけど わざわざめんどうなXML編集するほどのメリットがある感じ?
原始人にインターネットの必要性を説くようなもの まず自分で触れ
>>571 全体的に API 洗練されてる
コントロール類とほとんど同じノリでベクター画像、3D、動画等混ぜ込める
ビューとモデルの分離しやすい
等々。
574 :
570 :2011/01/15(土) 21:08:39
xaml処理でpartialが自動生成されるwindow派生クラスの中だと全無視、それ以外だと反応するみたい フォーラムでg.i.csがどうとか言ってたのが完全にfixされてないのか
ExpressionBlendってSilverlightとは仲良いみたいですけど なんてWPFと仲悪いんですか?
どこら辺が仲悪いんですか?
俺には仲がいいように見えるけど、あれはマヤカシなのか?
実際、VSよりも数段WPFと仲良いしな
でもVSとBlendは仲良くないよ 全く同期されてなくて 片方で編集→もう一方でプロジェクトをリロード を繰り返すことになる
両方で同時に開いてる時とか、「読み込みなおしますか?」の警告ある方がありがたいと思うけども。
XAMLテキストエディタはVSの方が上だよね BlendはバインディングやSetterやxmlns:などで全然インテリセンスが効かない 必要ないということなんだろうけど、たまにどうしてもBlendで直接XAML編集したいときにイラっとする 変更がバッティングしたりして面倒だし、どうせ完全にプログラミング寄りで どう考えても純粋なデザイナーが使うもんじゃないんだからVSに統合でいいよ
584 :
デフォルトの名無しさん :2011/01/17(月) 07:47:37
コマンドでパラメータを渡す時に、複数のエレメントの値をバインドして渡す場合は どの様にしたらいいんでしょうか?
585 :
デフォルトの名無しさん :2011/01/17(月) 20:18:33
ListBoxとScrollViewer(x:Name="PART_ContentHost")から成るカスタムコントロール(Textboxを継承、WTextBoxとする)を作成しているのですが 煮詰まっています。 わからないのは以下の3点です。 1.ListBoxのItemSourceへのデータバインドの方法(XAMLおよびコード) 以下が例です。(ListBoxに表示するのはNAMEのみ) ID/NAME 1 晴れ 4 曇り 5 雨 2.WTextBoxに依存関係プロパティ(w)を設定する。 このとき、 デザイナよりコントロールを配置し、WTextBox.w = 4 を設定した場合、Listbox の ID と一致する項目が選択されているようにするには? 3.ListBoxで選択した項目のIDをWtextBox.w と同期する方法 どなたか親切な方、よかったら教えてください。
>>584 1.渡したいデータをプロパティとして持つCommandParameter用の型
2.MultiBindingからその型に複数の値をセットするConverter
を作って、それを使ってCommandParameterにBinding。ググれば例は出てくると思う。
>>585 丸投げは関心しない。最低限の基礎を理解してからもう一回出直すことをお薦めする。
>>585 そういうコードを書く。コードからコントロールを触るためにTemplatePart付けたんだろ?
OnApplyTemplateの中でFindName("PART_ContentHost")として取得したら
あとはコードから触り放題。イベントハンドラも使いまくる。Generic.xamlには見た目以外のことは一切書かない。
カスタムコントロールはそういうもん。
要素をよくいじるようなのは俺ならユーザーコントロールで済ましちゃうなー。 そして大小問わずなんでもユーザーコントロールで部品化してメインのウィンドウにペタペタ貼ってる。 ページっていうのがあるけどこれはWPF/Eで使うイメージ。普通のWPFアプリでは使ってるの見ないな。
589 :
デフォルトの名無しさん :2011/01/17(月) 22:07:53
>>586-588 レスありがとう。
1がわからないから2も3も…だと思っています。
Generic.xamlについて
<ListBox ItemSource = "{Binding}">
みたいにかいて、
コード側で???(´・ω・`)
コード側からListBoxのx:Nameが直に指定できないから
FindNameでみつけてやるべくOnApplyTemplateで書きなさいってことですか><
あー ワカラナイ><
結局ComboBoxでしょ? ComboBoxのテンプレートを作れば十分なはず
>>548 IntPtrをZeroにしていない終了じゃね?
592 :
デフォルトの名無しさん :2011/01/19(水) 19:30:13
CheckListBoxをカスタムコントロールで作っているんですけど、 コードでDataContextを設定したいときはどこに書けばいいんですか? OnApplyTemplateの中に書いても、Loadedに書いてもバインドできたけど、 item.clearしないとだめっぽい。 あと、さらにGeeric.XamlでListBox.ItemContainerStyleのTemplateを書いたら、 止まってしまいました。なぜ???
まずカスタムコントロールでDataContext使うのはおかしい UserControl使う
594 :
デフォルトの名無しさん :2011/01/19(水) 22:21:21
ListView使ってファイラー作ってるんだが、気付くとアイテムを選択するとその後にカラムサイズが変更不可になっちまった ListView自体にカラム固定機能は元々存在しないし、無理矢理固定する方法もあるらしいが、それによる副作用も見られない まあ大した不具合でもないけど理屈が判らず気持ち悪い 特別なことと言えばAPICodePackのGlassWindowその他を使っている程度 デバッグをするヒントが判れば嬉しいのですが
>>592 どういう状態なのか良く解らんが、
カスタムコントロールよりもListBoxのItemTemplateでCheckBox追加するだけで十分じゃないか?
Blendのエディタくらい外注しないで自前でつくってほしいよなぁ
597 :
デフォルトの名無しさん :2011/01/20(木) 23:26:20
GridのDefinitionのWidthやHeightで*を指定したときみたいに、 StackPanelでコントロールを引き延ばす事って可能ですか? Gridは記述が増えて面倒ですし、DockPanelは一番最後の要素のみみたいなので・・・orz
598 :
デフォルトの名無しさん :2011/01/21(金) 03:43:38
>>597 stackpanelでコントロールを引き伸ばすってどういうこと???stackpanelは子の最
大サイズに合わせて自分を規定するのが原則でサイズ制御の仕組みはないと思うんだ
けど。uniformgridみたいなことをしたいのかすら?
.net3.5とBlend3 SDKの Microsoft.Expression.Interactions.dll System.Windows.Interactivity.dll じゃIntellisenseに出てこなかったんですが、 CallMethodActionってBlendを購入しないと使えないんですか? ChangePropertyAction, GoToStateAction, LaunchUriOrFileAction, RemoveElementAction は使えるみたいです。
Expression Blend を買わなくても、Blend SDK っていうのが無料でダウンロード可能。
>>600 Blend SDKは入れてるんですがCallMethodActionだけ使えないんですよね。
SDKをインストールしなおしてもだめで。
Blend3じゃなくてBlend4以降じゃないとダメとかあるのかな。
3は知らんが少なくとも4SDKには入ってる TriggerActionはあるんだったら、継承してリフレクションでメソッド呼び出すだけだから自作しても一瞬だろ
603 :
デフォルトの名無しさん :2011/01/22(土) 08:51:47
依存関係プロパティって Public Shared 以外で宣言してもいいのですか??
なんのために?
privateにするのは構わない インスタンスメンバにするのは重複したりメモリリークしたりするからダメ
606 :
デフォルトの名無しさん :2011/01/22(土) 19:54:27
スレ違いでしたらごめんなさい。 MACでも動作するWebアプリを作りたいのですが、GUIは何で作るのが おすすめでしょうか?ベテランさんアドバイスをお願いします。
スレ違い。
WPFアプリケーションプロジェクトにUserControlを追加して、 UserControlにボタンを1個配置して window1.xamlにclr-namespaceを設定してUserControlタグを配置しただけのコードなんだが VS2008+C#では動くのに VS2008+VBでは参照エラー 調査しようと思って家でVS2010+VBを入れてテストしたら普通に動いた これじゃ会社の環境で開発が進まないんだけど 似たような現象にあった人はいませんか?
609 :
デフォルトの名無しさん :2011/01/22(土) 20:12:06
ViewModel作ってバインドする時、プロバティウインドで弄れるようにするにはどうしたら良いんですか? いやあ、アレ一回使ってみたいだけなんですが
それを見たことはないが、エラー内容を晒さないと誰もアドバイスできないと思う。 もしくはエラー内容で自分でググる。
>>609 d:DataContext属性にダミーのViewModelのインスタンスを指定する
Blendならサンプルデータも自動生成してくれるんだけどね
デザイナ上で、データセットをドラッグアンドドロップすると次のようなコードが作成されますが <my:dbDataSet x:Key="DbDataSet" /> <CollectionViewSource ... Source={StaticResource DbDataSet}}"/> 数カ所にあるDbDataSetをDbDataSet1に変えると動作しなくなります このDbDataSetというKeyの名前は自分で決められるわけではないのでしょうか?
>>606 Mac OS みたい見た目にならないが
マルチプラットフォームなRIAならSilverlightでできるよ
614 :
デフォルトの名無しさん :2011/01/23(日) 04:41:39
>>613 Silverlightを使用すると、Win上とMac 上では見た目が異なるということでしょうか?
web開発素人なものですみません。。
Mac上で動かしても、Winアプリみたいな外観になるって事では? (まあ、見た目なんて好きに弄れるけれども)
616 :
デフォルトの名無しさん :2011/01/23(日) 09:12:26
>>615 ありがとうございます。
Mac上でも見た目同じであれば、ありがたいです。
Macがまだないもので、テストできず色々調べているのですが
なかなか思う情報に辿り着かない為困っています。。
ここはSilverlightスレと見てる人ほとんど同じだから向こうでやれよ IISならSilverlightの前に普通にASP.NETじゃダメなのか?
618 :
デフォルトの名無しさん :2011/01/23(日) 09:34:30
>>617 ありがとうございます。
みてる方ほとんど同じだったのですね(^^;;
デザインもプログラマーが作るのであれば
Silverlightの方がいいのかと思いまして。
ビジネスロジックはASP.NETになると思いますが。。
619 :
デフォルトの名無しさん :2011/01/23(日) 20:40:39
InkCanvasをいろいろいじってるんだけど、 塗りつぶしって可能ですか? お絵かきソフトでよく見るような、インクバケツをひっくり返したアイコンで 閉じた領域を指定した色で塗りつぶしたいのですが。。 もしサンプルとかご存じであれば、教えてください。
WPFのShapeとかってベクターグラフィックスだからなぁ。 ビットマップ系のお絵かきソフトとは根本的にやってること違う。
自分でPath追加する
省略してますがx:Keyを指定しているとして Resourcesはコレクションなので 1.これはコンパイル出来るのはわかります <Window.Resources><ブラシ1/><ブラシ2/></Window.Resources> 2.これもコンパイル通ります <Window.Resources><ResourceDictionary/></Window.Resources> 3.しかし、これがコンパイル通らないのは何故なのですか?エラーメッセージ意味不明 <Window.Resources><ブラシ1/><ResourceDictionary/></Window.Resources> ResourceDictionary使うなら2の形式を常につかえってことでしょうか
623 :
デフォルトの名無しさん :2011/01/26(水) 21:57:25
1は下の省略形だったと思う <Window.Resources> <ResourceDictionary> <ブラシ1/> <ブラシ2/> </ResourceDictionary> </Window.Resources> ResourceDictionaryを複数使うときはMergedDictionariesに設定したような気がする
エロい人いたら教えて下さい。 もしかしてUserControlってバインディングと相性悪い?
いいえ ViewModelにバインドするときはだいたいUserControlにバインドする アプリケーション固有のビューを作るためのもので、汎用的なコントロールを作る際には使わない
UserControlは画面の一部分を切り出したものなので 特定のVMとBindでベッタリくっついた状態で機能する、 CustomControlはVMは外部から任意のものをセットする前提で VMなしでも単独で機能する、という認識でいいのだろうか。 なんかまわりを見ていると人によってこの境界がマチマチな気がする。
ここではMVVMはもう上のレイヤの話なのでひとまず忘れてくれ。 UserControlは振る舞いとビューを分離できない。 カスタムコントロールは振る舞いとビューが分離されていて、必要ならビューを差し替えることができる。 ここでいうビューはMVVMのViewのことじゃなくて、たとえばコントロールの文字列型のプロパティを TextBlock使って表示するかボタンのキャプションにするかというようなUIの実装の詳細という意味で、 端的にはコントロールテンプレートのこと。振る舞いはコードビハインド。
トン。どちらもただのコントロールで提供機能が違うだけなのね。
630 :
デフォルトの名無しさん :2011/01/29(土) 19:21:18
スレ違いかもしれないんですが、 MessageBox的なものを自分で作りたいんですが、 はい/いいえ/再試行/キャンセルなどを言語環境に合わせて変えたい場合どうすればいいですか? 自分で言語設定ファイル置くんじゃなくて、インストールされてる言語パックなんかから取ってきたい。 メッセージボックスで使われている語彙だけでいいんです。
そういう機能はOSに無い
一旦MessageBox.Showしといてフックでテキスト横取りした上で表示前に殺すとか思いついたが そもそも実現できるだろうか
633 :
デフォルトの名無しさん :2011/01/29(土) 22:18:37
MessageBox.Show ダイアログのボタンの見た目がテーマと異なるもんだから、「Windows Aero を適用しているのにクラシックなボタン」という中途半端なのをどうにかしてほしいのだが、 マイクロソフトはいつになったらそういう細かい部分を改修してくれるんだろう。 機能的には不備はないんだけれど見た目がね。人は見た目が9割。
お前が無知なだけ
ちょっと調べりゃ解決できるこったろうに
637 :
デフォルトの名無しさん :2011/02/01(火) 16:46:50
説明が下手でMVVMもろくに理解出来てないのですが、 例えばあるネットワークアプリにおいて、コアの機能(例えば通信等)を別のライブラリに置くとすると、 モデルとなるものは、ライブラリの中に書くと思いますが、 この場合はINotifyPropertyChangedやコレクションはObservableCollection(or INotifyCollectionChanged)を予め使い、モデルを実装した方が GUIとの連携の際楽かと思いますが、この実装は正しいでしょうか? (予め実装するのはなんとなく気持ち悪い気はしますが・・・) またその場合に、対応するVisualModelを作成せず、直接MainWindow等のViewModelへモデルのインスタンスを置くのは 微妙な実装ですかね? あとライブラリが自分の作った物では無い場合は、ラッパークラス(対応するVisualModel)を作ったりするのでしょうか? 変更通知イベント等を捕まえるのかな・・・
>>518 の公式ドキュメントによると、
モデルがINotifyPropertyChangedやINotifyCollectionChangedを実装している場合は
わざわざViewModelでプロパティを全部ラップしなくてもそのまま公開してViewとバインドしても構わない
>>638 レスありがとうございます
なるほど、
>>518 のドキュメントってそういう事等が書いてあるんですね・・・と思ったけど英語・・・orz
時間あるときにでも頑張って呼んでみたいと思います!
640 :
デフォルトの名無しさん :2011/02/02(水) 05:13:15
>>637 ネットワークをコア機能と考えてる時点でもうmvvmとは離れてるんジャマイカ?
prismはべつにmvvmのフレームワークでもなんでもなくて、コンパウンド・アプリケーションのフレームワークが最近は
mvvmもサポートしてますよ〜ってだけだから、それを参考にしてmvvmのベスト
プラクティスでございますっていうのは、よく考えたほうがいいぞ。
641 :
デフォルトの名無しさん :2011/02/02(水) 20:02:19
質問です コンボボックスを継承したカスタムコントロールを作ったんですけど、 デザイナでそのコントロールを置くと、中のアイテムが表示されません。 デザイナでもアイテムが表示されるようにするにはどうすればいいんですか?
そもそも継承するという発想自体がアウト。 テンプレートやビヘイビアで改造するのが流儀なんですが・・・
643 :
デフォルトの名無しさん :2011/02/04(金) 07:13:19
>>642 継承元のコンボボックスもカスタムコントロールなんです。
ユーザコントロールは、元の機能にない機能を追加してる場合に使う もしその継承元のコンボボックスが見た目程度しか変更してないのであれば そんなコントロールを使うのはやめて WPFのコンボボックスの見た目をテンプレートで変えるコードに書き直せばいい 時間が許せば。
時間「絶対に許さない」
万一、コントロールのバグが発覚した時の対策なんかに 取り敢えず継承だけして、機能を一切追加せずに使うとかは?
意味なし 最近は.NETでもJavaでも他のでも「継承は悪」が基本
寝言はWPFの継承ツリーを見直してから言え
インターフェース主流なのは解るが 全派生先で同じ実装するくらいなら、素直に継承すべき
最近のWPFでの機能追加は、継承よりもビヘイビアが主流なんですがね。
アプリケーションレベルではな クラスライブラリとしてコントロールを提供する場合はそんなもん使わない
結局好きなように作ればいいの?
仕事でなければそんなん当たり前
654 :
デフォルトの名無しさん :2011/02/05(土) 10:39:30
>継承は悪 これは多重継承できちゃう言語が戦犯なだけじゃないの?
継承元の仕様が変わったらどうすんの?って話 仕様変わるならsealしとけカスって思うけどね
DependencyObject継承するのが大前提のビヘイビアを例に出すのは可笑しい
AがBを継承していて、CがBを使っているとすると、CはAとBの両方に依存することになるけど、 BがAを継承せずに内部で使っているだけなら、CはBにしか依存しないわけだ だからAの仕様が変わってもBだけ変更すれば済む
でもBをAとして扱うのが要件だったらアウトだね
それは要件定義した奴に責任が行くから問題ないさ
ControlにFooする機能を追加したFooControlと Barする機能を追加したBarControlがあったとして FooとBar両方が欲しくなったらどうするのか? という問題もあるな
AbstractFooBarControlじゃないすか
>>660 まーやり方はいろいろあるけど
FooControlもしくはBarControlのどちらかを継承したクラス(HogeControlを作って
継承しなかった方はHogeControlのコンストラクタでインスタンスを作って
アクセス用のメソッドを作るとか
HogeControlを外から見れば両方継承してるように見ればいいだけだし
>>654 継承は悪、の根拠は結合密度の問題。
is-a = 元クラスはホワイトボックス。元クラスの実装を変えたら影響を受ける。
has-a = 所持クラスはブラックボックス。所持クラスの実装を変えても仕様が変わらなければおk
継承を使ってもちゃんと設計しハリウッドの原則に従えば疎結合にはできるし必ずしも悪ではないが、
protected変数を書き換え元クラスを制御ようなアホがいる限り"継承は悪"を言い広めるのが世のため人のため
>>647 は.NET一般の話なのに、
>>650 がビヘイビアの話にすり替えているのがおかしい
>>663 protected変数の書き換えが出来る時点でフレームワークがダメダメ
リフレクション前提ならそれもバカな話だ
昔の思想やJavaの言語仕様に問題があっただけで、.NETじゃ継承もブラックボックスだよね 基本的に継承しても意味のないつくりになっていて、継承するのは継承専用に設計されたクラスだけ
ヘルスバーグさまさまってとこか
> protected変数を書き換え というか派生クラスに書き換えてもらうためにprotectedにしてるんじゃないのか
C#や.NETは基底クラスの変更によって派生クラスが誤動作しないように やたらと細かい仕様があるからな いかに基底クラスの変更を危険視してるかがわかる 約束事が通じる範囲なら勝手だけど、不特定多数向けのクラスライブラリ向けなら protectedフィールドはpublicフィールドと何も違わない
>664 つーか、ここWPFのスレなんだけど。 一般論展開したいなら余所のスレに行けばいい。
>656 継承前提で使うクラスと、コントロールの継承とでは意味が違うんですが。
実装の多重継承を許可しない設計の言語では、 継承によって小単位でカプセル化された特性やポリシーを いくつも組み合わせて提供することができないから 「継承は悪」と思ってきたけど、そうじゃないの?
>>663 >>ハリウッドの原則
もしよければ参考になる記事をおしえてくださ〜い。
>protected変数を書き換え元クラスを制御ようなアホがいる限り
継承したクラスが親クラスのprotectedで定義されている変数を直接いじるって解釈でOK?
Don't call us, we'll call you. たいして難しくないから「ハリウッドの原則」でググってみればおk。 多分大抵のプログラマが無意識にやっているはず。 > OK? 変数に限らず、親クラスの挙動を子クラスが制御すること自体マズい
処理が分岐するならそれこそクラス分割しとけばいいような気がする
>>663 protectedまでしかない言語じゃないんだし、
書き換えられたら困る場合はprivateにするんだよ。
違う言語の話が混じってないか?
ところで
>>641 がどういう状況なのかよく分からんのだが
VSじゃなくてExpression Blendの話?
679 :
デフォルトの名無しさん :2011/02/06(日) 09:16:03
>>678 VS(VS10)の話です。
具体的には、↓です。
カスタムコンボボックス(ComboEx)にDCountという名前のプロパティを作ったんですけど、
そのCountの値によって、中身の個数をかえたいと思っています。
たとえば、
DCount = 3 → 1月,2月,3月
DCount = 4 → 1月,2月,3月,4月
DCount 1 〜 12 以外 → 1月〜12月まですべて
のように、DCountの値とComboExのItemを対応させたいんです。
ためしに、DCountを考慮せず、
1) ComboExクラスで、1月,2月をaddしたものを、Main.Xaml(デザイナ)にツールボックスから配置する
2) 実行すると1月,2月が表示される
3) ComboExクラスで、さらに3月をaddする
4) Main.Xaml(デザイナ) には、1月,2月 が表示されたまま。
どのように実装すればよいか、アドバイスいただけたら嬉しいです(´Д⊂グスン
DCountを依存関係プロパティにする
ListBoxをDnDで並べ替えられるようにしたいんですが、MVVMな解法ってなんかあります? EventTriggerで頑張るしかないのかな。 MVVM light使ってます。
MVVMの枠でやることじゃないな。Viewの範疇。 ListBoxから継承するかコードビハインドかビヘイビアでコード書く。 ビューのコードからコレクションを並び替えるには、CollectionViewを使う。
チェックボックスをクリックすると もっさりしたアニメーションでチェックが入るんだけど どうにかならないのでしょうか?
Windowsとフレームワークのの限界超えては処理できません。 自作しちゃう?
デフォルトのテンプレートってどこか(何か)でわかる?
{Binding Value , StringFormat={}{0:F2}V}" {Binding Value , StringFormat={}{0:N0}Hz}" {Binding Value , StringFormat={}{0,4:F1}℃}" {Binding Value , StringFormat={}{0,5:F1}%}" {Binding Value , StringFormat={}{0,5:N0}rpm} やっとWPF3.5で動くようにしたのにWPF4にしたら動かなくなってしまった(XamlReader経由)。 もう泣きたい。
>>687 Expression Blendには、デフォルトのテンプレートをコピーした上でそれをベースにして編集する機能がある
BlendないならコントロールのTemplateプロパティの値をXamlWriter.Save
最近、WPFをやり始めたのだけど,どなたか教えてくだされ。
XBAPでボタンを配置してボタンを押すと他のWebページに画面を遷移させたいけど
作法が解りません・・。
ちなみに・・
Private Sub btnBack_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles btnBack.Click
NavigationService.Navigate("
http://www.yahoo.co.jp ")
End Sub
としてもブラウザ画面に
http://www.yahoo.co.jpと文字が表示されてしまいます 。
692 :
デフォルトの名無しさん :2011/02/08(火) 10:27:07
>>691 ありがとうございます。Silverlightは触ったことすら無いので一度勉強してみます。
>>692 ぉお!まさにこれでした。・・・って試してみたらIE(XBAP)が終了した・・。
なるほど、そういうものなんですね。勉強になりました。
御返答頂いた方々、ありがとうございました。もっと功夫積んできます。
694 :
デフォルトの名無しさん :2011/02/08(火) 20:37:39
BitmapFrameを使ってデジカメ画像のメタデータにアクセスして、exif情報は取れ るのですが、ファイルがロックされてしまい、exif情報を取り出したファイルの操作 ができません。IDisposableでないので、Dispose()もできず、freeze()してみても変 わりません。どうしたら、ロックを解除できるでしょうか?
Stream渡して作ればいいんじゃない?
696 :
デフォルトの名無しさん :2011/02/08(火) 21:22:56
697 :
デフォルトの名無しさん :2011/02/08(火) 23:10:38
>>695 Stream渡しでStreamをCloseするとファイルがロックされることはなくなりましたが、
こんどは BitmapFrame.MetadataがStreamのクローズと共にnullになってしまい
ました。MetadataをCloneしても、CloneCurrentValueしても変わりません。
Streamをクローズするまえに必要なタグ情報は全部読みだしておくことで回避していますが。。。
>>696 なんと! そんないいものがあったんですか? apicodepackは使っているんですが
知りませんでした。早速調べてみます。
699 :
デフォルトの名無しさん :2011/02/09(水) 00:27:29
>>698 デバッガでステップ実行してみると遅延実行か否かにかかわらず、BitmapFrame.Metadataを
Cloneした時点でexif情報は一応読み込まれてImageMetadataにコピーされているようです。
Cloneなのでもとのデータとは参照関係にないのですが、Streamを閉じると、コピーしたImageMetadata
の各項目がnullになってしまいます。(ImageMetadata自体はnullでない)。
謎な挙動なのですが、ImageMetadataはFreezable(DependencyObject)なので、もしかすると
もとのStreamとバインディングでもされているんでしょうか???
>>696 使ってみました。これは便利、と思いきや、BitmapFrameを使った方法では取得できる
項目にnullが返ってきたり、今ひとつ大丈夫なのかどうか心配です。
CanonicalNameが間違っているのでしょうか?
700 :
デフォルトの名無しさん :2011/02/09(水) 00:49:50
>>699 api code packでexifをとろうとするとnullが帰ってくる件自己解決しました。
int dobleなどプリミティブ型はすべてNullable<T>になっていたため、
GetProperty<T>でTにNullable型を指定しないといけないのが原因でした。
Canvasをいくつか重ねて一番手前のCanvasに貼り付けたButtonが 反応しないことってありますか? 今再現性100%で起きてるんですが・・・ モード切替ボタンが3つあって 起動直後にボタン1を押すと正常 その後ボタン2を一回押すとボタンの見た目だけ変わるけど その先のコードが呼ばれない もう一度ボタン2を押すとコードが正常に呼ばれる これはボタン3つとも同じ結果になります
ボタンにフォーカスが来るように組んでみましたが 結果は変わらずでした・・・ よくわからん・・・
そーす
ToggleButtonという話なら、Aeroな表示な時フォーカスを与えてからIsCheckedを変更しないとボーダー表示が残るバグがあるな。 バグ修正したカスタムコントロールで俺は対処した。
>>703 晒せません・・・
>>704 Toggleじゃないです
あほなことをしてたかも・・・
Buttonが乗ってるCanvasにListBoxも乗ってるんですがこいつのSelectedIndexを
場合によっては-1にしてるんですが(つまり選択無し)こいつが影響してたようです・・・
すみません WPF SLともに似たような感じの別ソースを作って実験してみましたが そちらでは再現しませんでした。 どうも今書いてるソースの問題のようです。 おさわがせしました・・・・
関係あるかは分からないけど、自前コードでコントロールを色々ゴニョゴニョしていて VisualChildrenに入れ忘れた時に似た症状(たまに再描画されたりされなかったり、 操作できたりできなかったり)を見たことがある。
Wpfって簡単にいうと何ですか?例えば?
WinFormにおけるSilverlight
WPFはまだまだ流行りそうにないな。
WPF、マイブームきてんね
俺の中では、SL1.0が出た時からずっとSLブームなのに!
私もマイブーム来てるよ。
酷いメモリリークが起こっていたので強参照の関係を調査してみたら、 どうも表示上まったく無関係なコントロール間に参照ができ、 破棄したはずのコントロールへの参照が相当数残っている模様… これ直しようがないよね…
InputBinding で Modifier 無しのキーでコマンド叩こうと思ったらダメだった。 <UserControl.InputBindings> <KeyBinding Key="A" Command="{Binding ACommand}" /> </UserControl.InputBindings> みたいな操作を実装しようと思ったら、代替手段って何になるの?
717 :
706 :2011/02/10(木) 11:06:17
>>707 確かにCanvasを継承してちょっと機能を持たせてる独自コントロールがいるんですよね・・・
ほかのパーツもいろいろ影響受けてるのかよくわからない動きも他にでてきてるし・・・
使いこなせれば確かにバインディング含めて便利なんだが便利機能がある分
ブラックボックス化してる部分が多くて返って大変かも・・・・
DispatcherTimerはDispatcherキューに入れられるっていうからせいぜい60fpsくらいしか
でないと思ってて、実際どんなに小さい値をIntervalに入れても60くらいを示すんだけど、
Intervalを0にしたらウン万fpsたたき出す。どうなってんのこれ。
あとSystem.ThreadingのTimerなら120行けるんじゃと思って試してみたけどDispatcherTimer
と同じような精度だった。たしか分解能10msほどだっけ。
ソースはここのを使わせてもらった。
http://d.hatena.ne.jp/mitsc1729/20101106/1289045053
Canvas.Leftなどをバインドさせる場合はどういう風に書けばいいのでしょうか?
RadioButtonをGroupNameでグループ化した物を 上から順に012とか読み取れるような方法って標準でありますか?
「読み取る」が何を意味しているのか、ItemsSource内のRadioButtonなのか、 ViewModelからBind経由で値をとりたいのか、それともView側で直接とりたいのかetc... そもそもの目的が分からないからなんとも言えないが色々と手段はある。
CanvasのEffect設定すると、ChildrenのUIElementもEffect設定されてしまう・・・ CanvasだけにEffectを設定できないの?
背景ブラシだけにエフェクトを適用したいということ? BorderかRectangleでも置いとけ
コントロールの幅がそれぞれ[Auto][ストレッチ][ストレッチ][Auto] なレイアウトにできるのはGridだけ?ストレッチが1つならDockでも可能だけど。
テキストブロックの文字列の一部を修飾する方法を教えてください。 <TextBlock> 前半<Bold>太字</Bold>後半 </TextBlock> リテラルなら上で良いけど、前半、太字、後半をバインドする方法が分からないです。
面白い発想だな
コンバーター書いて渡しちゃえとか思うのはだめなんだろうか
ありがとうございます。
XAMLで書ける要素はXAMLで書きたいな、と思っております。
実際
>>728 さんのアドバイスで試してみて2つ問題が。
・Run.Textは依存プロパティではないからバインドできない。
・問題というほどじゃないのだけど、要素をきれいに並べたくて下のような書き方すると改行部分で空白が入る。
<TextBlock>
<Run>前半</Run>
<Bold>太字</Bold>
<Run>後半</Run>
</TextBlock>
>>726 の書き方だと「前半太字後半」となるのが、上だと「前半 太字 後半」になってしまう。
<Run>前半</Run><Bold>太字</Bold><Run>後半</Run> と書けばいいんだけど…。
>>729 さんの言うようにコンバータ作るのが良いのか、そもそも初手の発想が駄目で
テキストの一部修飾はもっとスマートなやり方があるんでしょうか?
あとはいい結果になるかどうかわからんが <Stackpanel> <TextBlock/> <TextBlock/> <TextBlock/> </Stackpanel> こんな感じでTextBlockが横に並ぶようにしちゃうとか
>>731 条件後出しになってごめんなさい。
「前半太字後半」で1文として扱われてほしいのです。
TextBlockとして並べてしまうとたとえば改行の際の動作がおかしいので。
<希望の動作>
前半太字後
半
<TextBlock並べた場合>
前半太字後
____半
733 :
デフォルトの名無しさん :2011/02/20(日) 13:07:05.70
素直にRichTextBox使ったらどう?
RichTextBox使っても結局Inlineで指定するんだから何も変わらない
735 :
デフォルトの名無しさん :2011/02/20(日) 14:21:24.51
どなたかご存知の方教えてください。 VisualStudio2005 C# Designer を使用して Form を作成中です。 GUI 上に Panel ってのを追加してみたけど、やっぱ止めようとしてます。 で削除したいのですが、削除、切り取りとも、 苦労して配置したボタンその他みんな道連れになって削除されてしまいます。 パネルだけを削除する方法は?
スレ違い
737 :
デフォルトの名無しさん :2011/02/20(日) 14:23:47.08
了解。 ではどこに?
ふらっとか相談室
というかWPFと関係ないし、VSスレで聞いても怒られるような質問だぞ。 本屋やネットみて基本身につけたほうがいい。
昨日わんくま行った奴いる?
どなたかご存知の方お願いします。 VerticalScrollBarVisibilityがtrueなRichTextBoxがありますが、Documentプロパティを入れ替えて行数の多い文書を投入してもスクロールが有効になりません。何か手続き漏れているでしょうか?
trueって何じゃ?Autoってことか?
>>742 すみません741ですがautoでした。
>>740 あんなの行ってなにが得られるというのだね
わんくま(笑)
わんくまはまず桁外れに脆弱な鯖どうにかすべき
わんくまサーバー使ってるサイトに繋がりにくいし、それのことかな
すげーよく落ちるよな。 あれどうなってんのw
わんくまって何かいいことあるの?
>>748 よく落ちるんじゃなくて、
たまに運がいいと繋がるって感触なんだが……。
検索結果からわんくまに飛んだら500で落ちたでござる
752 :
デフォルトの名無しさん :2011/02/24(木) 07:21:13.74
WPFを勉強するのにいい本ってありますか?
741ですが、とりあえず解決しました。 Ribbon UIのサンプルをいじって実験していたところ期待通りの動作とならず質問しましたが、シンプルな WPFアプリケーションで試したところ問題ありませんでした。 Ribbon時の原因はまだ特定できていませんがリフレクションからみで何かあるのかなと推測してます。
高いのよねあれ
ブラウザプラグインのsilverlightもこっちで扱ってはどうか? 向こうのスレは役にたたない
2chブラウザ入れてNGリストで消してスルーしとけ。 WPFに共通する話題ならこっちでやってもいい。 共通する話題か判断できる人は自己解決するだろうけどさ
どうせ書き込んでる人はほとんど同じだろw SilverlightはWPFじゃなくて.NET Frameworkのサブセットだよ SilverlightでEntity Frameworkを使うときの話とかWPFスレでやるの?
皆さん似たようなページを大量に印刷してる時どうしてます? やはりページ毎に全ての印刷要素のインスタンスを作らないと駄目ですかね? ページ数多いとメモリ消費が凄いことになりそうで。 WinFormsはそこらへん効率的だったのに・・・
逆だろ…
わんくまustで見たけど、IDataError なんとか使った検証の話や、MVVM パターンをT4で生成する話とかあったな。 あと TextOptions 使ってテキストボックスの文字表示を調整したり、MVVM Light使え等の小技も結構紹介されてた。 しかしデモ見てたら、MVVMって検証含めるとイベントハンドラよりコードが肥大化する印象があるけどどうよ。
MVVMって基本的にテストの手間を減らすためのものだから。 テストしないんだったらVMなんかいらん。
ビューレベルの検証をなんでVMに書くかといえば、ひとえにUIなしで単体テストしたいから。それだけ。 テストの手間を考えたら構造が少々複雑になったりコードが増えたりするくらいのコストは無視できる。 MVVMでないとWPFのバインディングを活用できないみたいな誤解があるけど 実際は全然そんなことない。
ああ、だから流行らないんだな
いや、別の理由だろ。どう考えても。
MVVMは複雑な構造を大量の単純作業に分解できるのが利点だと思ってたわ
なんかめんどくさいからコードビハインドをDataContextに突っ込んでる。
なにこれ・・・超かっこいい
A型の俺は指紋がどうなるのか気になる
メガネ拭きを持ち歩いているA型の俺に隙はなかった
水酸化ナトリウム溶液で指紋を消した俺は、もちろんA型だ。
A型スゴスギワロタ
一方俺は該当タッチパネルでも使える手袋を・・・
そんな俺は+AB型
金属製のかっこいいタッチペン(スタイラス)売ってるぜ 静電容量式で使えないやつもあるから購入前に要チェック。 A型の俺はiPodにも自作タッチペン。 導電スポンジ切ってボールペンの芯の替わりに詰め込むだけの単純な工作だ。
>>777 iPod タッチペン 自作 あたりでググると作り方書いてあるよ。
導電スポンジはAmazonあたりで売ってる。
>>778 ほほぅ〜 これはよさげだw
勉強になったよ ありがとう
780 :
デフォルトの名無しさん :2011/02/25(金) 16:47:05.10
ButtonとTextBoxがあるユーザコントロール作ってDataGrid上に表示したところ、 タブで、そのセルにフォーカスあてると一旦ユーザコントロールにフォーカスが移って、 次にTextBoxという具合になるんですが、 いきなりTextBoxにフォーカスあてるためにはどうしたらいいですか?
指紋付くの嫌だから、タッチパネル使う時はペンを持ちたいけれど ピンチイン・ピンチアウト等、二本指必要な操作が問題だ。 つか、将来的には 直接触らなくても、近付けて指を振るだけで動く様にして欲しいかも。
B型の俺でも指紋は気になる
AB型なら着いた指紋でアート、これよ
お前らが血液型で盛り上がってるとは。失望した
>>780 ContentControlとかはデフォルトだとフォーカスを受け取るから
タブ押してフォーカス移動しながらSnoopとかでフォーカスを持ってるコントロールをチェックしてみ。
786 :
627 :2011/02/26(土) 02:11:22.84
WPF超初心者です、xamlとコードビハインドの関係を調べています。 例えばWindowが持っているResourceCollectionにSolidColorBrushが入っているとして、それを子ボタンの背景に手動で適用する場合、 MyButton.Background = (Brush)MyStaticResouceExtension.ProvideValue(IServiceProvider); ここの「IServiceProvider」にはどこのインスタンスを指定すればよいのでしょうか?
TryFindResourceやSetResourceReferenceをなぜ使わない?
788 :
786 :2011/02/26(土) 03:34:20.42
>>787 色を塗ったり、塗る方法が知りたいのではなくて
xamlが裏でどのように変換されているのかを調べています。
自分でマークアップ拡張書いてみてProvideValueに何が渡ってくるか調べてみればいいよ
>>781 光学式のは厳密には触れなくても反応する。
どこまで指を上げればいいのか分からなくて慣れるまでダブルクリックできないけど。
音波式って最近見ないよね
これで、DELLがこの間出したばかりのST2220T(22"IPS、光学式タッチパネル)を 紹介する流れができたわけですね。
既に画面の前でダンスして操作する時代に入っている
最近のスレの流れでSnoopの存在知りました。 おまいらありがとう
>>793 発売から1週間経ってないのに3万とはタッチパネルも安くなったもんだな。
1台買おうかと思って製品仕様見てきた。
IPSなのはいいけどグレアパネル使ってるのか。ノングレアだったら買ってたのに…
一台グレアパネルを置いておくと後ろを確認するのに便利だぞ。 IOのもNANAOのもグレアパネルだしな……
命を狙われる開発者wwww
タッチパネルはどうしても耐久性が必要になってくるからね ただ光学式ならモニタ表面に何張ってもいいので、アンチグレアフィルムでも貼ればいい
何の話をしてるの。
>>768 →指紋で汚れそう→タッチパネルとかタッチペンの話→命を狙われる開発者
>>797 が悪い
後ろを確認するのに便利とかいうから
,. ‐''"´ ̄ ̄ ``'‐.、 .,.‐''";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;`'‐.、 ,.‐´;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;`‐、 ,‐´;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;`‐、 ,l";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙'i, ,l";;;;;;;;;;;;;;;;;;;;;;;;;;;く ̄` `''=;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;`゙l、 ,,,,L;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;`i, _,,,,、 ゙'''li;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;i、 .,i",-..,.゙ヽ;;;;;;;;;;;;;;;;;;;;;;;;l" ` .~ヽ、 ~'=i;;;;;;;;;;;;;;;;;;;;;;;;;;;;;i、 ゙,l´;;;;;;l l;;;;;;;;;;;;;;;;;ノ''',,,==二^'''i、 ゙' ,、 ゙゙゙'!i;;;;;;;;;;;;;;;;;;;;| `イ;;;;;;| |;;;;;;;;;!" ヽ,,,_ ゙゙i;;;;;;;;゙l,, i、 `゙゙ヽ、;;;;;;| . ;;;;i´::,l";;;;;;;i" ゙ `'t;j.、ミ;;;;;;;;;`''゙;> ,l゙ ,,,,,,-''"ヾ |;;;! . ,;;|`::,l;;;;;;;l" `'''─゙''ー--''"ノ /, .ヘ_,,,..-'ヽ,ノ;;l '';>,l;;;;;;;;l゙ _,,,,-‐ .,,." '.ノ;;;;;;;;;;ッ-、!l;;i´ l, /;;;;;;;;i' _,,r‐‐''"` | l, ゙ミ'a .、_ッ// . "く;;;;;;;;;| ,,,r‐'" .i. ,!:l::::`"''"//" :',:::',゙ー-" ,,r''" ,、 ,i ,!::|:::::::::::// 、゙l,::' :--、,,,, i::::|::::::::// '゙;;,'、:: `ヽ;;;;;;;;>":::|:::::// ゙、;;ヽ、::ヽ jll、,,,,,,,,,,,,,,.:'',、:::::::::::::::,,ソ" ゙、;;\:::\ `゙゙);;':::::::.,,∠-' ヽ;;;\:::゙.、 ー-=-'''-、 ``:::::/` 用件を聞こうか \;;`ヽ;:ヽ、 , "、:::/ \;;;"-、゙'- ,_ ノ レ'" ‐、. \;;;;`ー、;:~''ー、,,,__,,.ノ `‐、. ヽ;;;;;;;;;゙-、l" ` ゙‐、 \;;;;;;;;;;゙゙'-、
DataGridで特定のCellをプログラムから編集状態にするにはどうしたらいいでしょうか。
アホに聞かなくとも自分で調べれば一発だよ
806 :
デフォルトの名無しさん :2011/02/27(日) 18:23:31.66
スレに喧嘩売って今更教えろと言われてもなぁ
807 :
デフォルトの名無しさん :2011/02/27(日) 19:47:31.79
何の話をしてるの。
>>804 CurrentColumnとCurrentItemを設定してBeginEdit()かな。
XAMLでアニメーション書くのコードに比べたら楽ちんだけど、 アプリの設定項目としてアニメーションを無効にできるようにしたいとき、 どういうふうに書くといいのかな。コードならストーリーボードの追加・削除はわかるんだけど。
>>809 細かいことはリソースディクショナリとして別のXAMLファイルに分離しておいて
スタイルを入れ替える
「WinFormのMS Pゴシック 12ptでのTextBox」と、
「WPFのTextBox」
<TextBox Name="textBox1" FontSize="16" AcceptsReturn="True" FontStretch="Normal" FontFamily="MS PGothic" />
の表示に文字幅の差異が生じるのですが、どうすればWinFormと同じように表示できますか?
左がWinFormの望ましい表示で、右がWPFの文字幅がズレた表示です
http://www1.axfc.net/uploader/Img/so/108711.bmp また、表示しているのは以下の文字列です
| | 半角で「&emsp;」、全角スペース+半角スペース
| _ | 半角スペース2個+_
| .| 全角スペース+ドット
| . | 半角スペース2個+ドット
| ~| 半角スペース+~
| | 全角スペース
| _| 半角スペース+_
| ゙| 半角スペース+゙
| .| 半角スペース+ドット
|~|
|..|
| | 半角スペース
|゙|
|.|
| | (「&thinsp;」)
2chブラウザでも作るの? GDI+に強く依存した表示だから再現するのは大変。 WinFormsで作ったコントロールをホストするのが一番簡単じゃないかな。
MVVMで、*.xaml.csをViewModel用途にしてはいけない理由がよくわかりません。 別途ViewModelを作って、*.xaml.csの中身は空にするというのが。
そこはコードビハインドを書く部分だからViewだよ
>>815 コードビハインドに書いてしまうとUIがくっついてくるから単体テストしづらい
VMはプレーンなクラスなので、できるだけそちらに書いておけば単体テストしやすい
それだけ
初心者はまずMVVMとか気にしないでどんどん書いたらいいと思うよ…
MVVMするなら、ファイルを開くダイアログを表示してVMで処理するだけでも IDialogServiceインターフェイスとか作ってDIしたりとか かなり大掛かりな仕組みが必要になるんだよな 面倒だからといって、絶対にVMから直接ダイアログを開いたりしてはいけない 理由はとにかく「単体テストの邪魔になるから」 そこまでする気がないならMVVMなんか何の意味もないんですよ
MVVMでも切り離せない部分あるし、何の意味もないは言いすぎのような。 少なくとも個人ならコストかかる部分だけやる選択肢もある。
じゃあ意味って何?
バインディングは実際
>>815 で普通に使えるわけでMVVMのメリットではないよ
1行目だけ読んで書いたのかよ。 相手すんのもアホらしい。
教条主義なんで
824 :
デフォルトの名無しさん :2011/03/01(火) 20:44:41.21
>>821 意味がわからないうちは*.xaml.csにイベント書いたりしてていいんじゃないの?
そのうちバインド使った方がいろいろ楽できることに気がつくから
その辺が見えない人に利点を説いても無駄
825 :
815 :2011/03/01(火) 20:50:40.46
概念としてのMVVMがわからないとか、コードビハインドがどうというよりは、 空の*.xaml.csに何の意味があるかがよくわからないという話です。
826 :
821 :2011/03/01(火) 20:50:40.89
>>824 そうじゃなくて、.xaml.csに書いたらバインディングが使えないというわけではないってこと
ビュー自身のプロパティにバインドすることも普通に可能
>>815 の「なぜVMを別のクラスにするのか」という質問に対して、
「バインディングが便利だから」は回答になってないよ
827 :
815 :2011/03/01(火) 20:52:37.25
828 :
デフォルトの名無しさん :2011/03/01(火) 20:52:57.80
だからコード書けって
>>827 ウインドウの*.xamlに書くべきだけど書けない(またはスゲー量になる)部分をコードとしてそこに書くんだと思ってな
つか
>>821 は何で突然バインディングなんて言い出したん?
5日前から誰もバインディングの話なんかしてないが
831 :
デフォルトの名無しさん :2011/03/01(火) 20:57:59.23
バインドという仕組みを利用しないと自分でごりごりコード書いて そのコード全部をテストしないといけないが、バインドをうまく利用すれば 書くコード量も減るので、自分で面倒みる部分もかなり減る つまりバグの作りこみも減る この辺は理屈で言ったところで納得しないだろうから コード書けって言ってる ネットで転がってるサンプル程度ではなくてもうちょっと大きなのを
ウィンドウの一部分だけにMVVMパターンを利用しても、全く意味がないってことはないだろう、って話。 別にダイアログ呼んだっていいんだよ。それでトータルコストが浮くのなら。 正義は何だ?MVVMパターンを100%適用することか? ちげーだろ。
>>832 >正義は何だ?MVVMパターンを100%適用することか?
バインド使うことを覚えると将棋の最短手を考えるようにバインドだけで何とかできないか?
とコード減らすことばっかり考える奇妙な状態になるけどなw
それだけ便利
正義(笑)JUSTICE(笑)
なんか熱くなってるぞ
836 :
815 :2011/03/01(火) 21:10:15.33
自分が聞きたいこととは少し話が違う方向にいっているので、再度聞きたいことを書きます。 バインドを使わないとか、コードビハインドで書きたいとかいっているわけではなくて、 単純になぜ*.xaml.csとは別のViewModel.csを用意するのかという話です。 *.xaml.csにバインドするプロパティやコマンドを定義しては駄目なの?、っという所が出発点です。
>IDialogServiceインターフェイスとか作ってDIしたりとか >かなり大掛かりな仕組みが必要になる なんてのは確かに手間考えるとどっこいな気もする
そこに書いたらMVVMにならないから が一番シンプルな答えじゃないの 最初の質問で「MVVMで」って言ってるんだから
>>836 バインディング使いたいだけなら別にそれでも構わない
クラスを分けるのは、単体テストのしやすさと
どうせならクラスごと分けてしまったほうが役割分担や設計がはっきりするから
InitializeComponentを何だと思ってんの?
思い切りgolden hammer patternに嵌ってんな。
方法は別にして、ファイルダイアログくらいはUIに依存しないで開けるようにしないとそれこそMVVMにならんよ それくらいは最低限必要
かまってちゃんが沸いてるのか
VからもVM(面倒だからといって、絶対にVMから直接ダイアログを開いたりしてはいけない
>>821 )からも開かないでどっから開くん?
Mだろ。
847 :
815 :2011/03/01(火) 21:32:29.19
- 責務的には*.xaml.csはあくまでViewでしょ - なので、責務を考えればViewModelは別クラスにするのが当然 - InitializeComponentしかない*.xaml.csが出来ちゃうのは開発環境的な都合 - *.xaml.csが空なのは気にすんな - 逆に、MVVM的な責務を気にしないなら、*.xaml.csにコマンドやプロパティを定義するのはあり(別にそうやりたいわけではないですが) っという認識で合っていますでしょうか? これで合っているのなら、自分的には納得ですが。
・InteractionRequestでViewに通知してViewのビヘイビアで受けてダイアログ開いてViewModelに結果を返す。 ・インターフェイスを被せておいて、その実装クラスでダイアログ開く。VMからはインターフェイス経由で扱う。 ファイルダイアログなら後者のほうがいいと思う 特定のビューでしか使わないダイアログなら前者でもおk
>>847 >InitializeComponentしかない*.xaml.cs
もしかしてXAMLでイベントハンドラを指定すれば
*.xaml.csにイベントハンドラのコード部分がかかれるんだが・・・
*.xaml.csってWinFormでいうところのForm1.csと同等に扱えるぞ
*.xamlはWinFormでいうところのデザイナーが勝手に書き換えするやつ(名前忘れた)と同等
俺はコードビハインドにプロパティ書いて、DataContextに入れてバインディングしてるよ。 Modelに関係ない、純粋にViewでしか使わないようなプロパティばかりだからViewModelに 書くってのはなんか違うような気もするし。
WPFっていってもXAMLで配置した部品に名前付けて コードビハインド側で名前を頼りにWinFormのころのようにコードを ごりごり書くってやり方も可能なんだが、そういうのもよくわかってないのかな?
>>850 >Modelに関係ない、純粋にViewでしか使わないようなプロパティ
ViewModelはそういうのを置くための場所
ViewModelはModelのラッパーじゃなくて文字通りViewのModelなんだよ
853 :
815 :2011/03/01(火) 21:54:38.29
>>851 いや、さすがにそれは分かっています。
*.xaml.csが空と言っているのは、VMを作ってコマンドやプロパティを定義したり、
Blendでビヘイビアとか使えば*.xaml.csってほとんど空になりますよね、っという話です。
>ほとんど空になりますよね そうだよ WinFormのころはForm1.csにごりごり書いてたビュー関連の コードを書く必要がなくなる仕組みがあるんだからw だから何?って話だけど
>>852 なるほど。
あとはコードビハインドなら初めから依存プロパティを宣言できるってのもある。
ViewModelでもDependencyObjectを継承すればいいけど、ネット上で見つかるViewModel
の実装はなぜかINotifyPropertyChangedの方ばかりだね。
>>855 モデルが特定の実装技術に依存するのは糞
っていうのが最近の流行りだから
POCOってやつ
INotifyPropertyChangedを継承するにしてもほぼ定型なので もうちょっと手抜きさせてもらえないのかねw 微妙に定型をまいど書くのがなんかしっくりこないw
コードスニペットから初めて自動生成に飽き足らずAOPとかIL書き換えとか
いろいろあって訳わからなくなるな
訳分からなくなるなら使わなければいい。 使わなくても作れる。
861 :
デフォルトの名無しさん :2011/03/02(水) 01:09:07.60
INotifyPropertyChanged自体が、依存関係プロバティーの代替えだからね
INotifyPropertyChangedより依存プロパティの方がパフォーマンスも機能も優れてるけど
ViewModelではなんで使わないの?
>>856 のいうモデルとは違うだろうし。
EventTriggerで使えるのはアニメーション要素だけ。 Style.Triggersはいろんなトリガ使える。 FrameworkElement.TriggersはEventTriggerだけ。 このへんの関係がよくわからん。EventTriggerでXAML内でさくっとプロパティ値変えたいのに、 それはハンドラでやれってか。
複数のViewが必要になった時点でViewModelを作ることにしてる 最初からViewModelも作るのは不必要な抽象化だと思うし 既存コードを再利用する必要があるとかでない限り ViewModelには依存プロパティすればいいと思う
実際のところダイアログ部分だけコードビハインドに書いても テストに大きな影響は無いと思うんだが。
>>863 トリガは過去の遺物
VisualStateManagerを使う
>>866 じゃあアニメーションはそれでやる。
イベントに対して(他の要素の)プロパティを変えるのはやっぱコードからしかないか。
ようやくXAMLでできる動的なことの限界が見えてきた気がする。
>>867 一瞬で終わる離散キーフレームのアニメーションにする
アニメーション適用してるプロパティに直接値入れてもアニメーションがプロパティ値を上書き してる状態なので、アニメーションを削除しないとその値は有効にならない。 アニメ化したいプロパティはユーザーの希望でアニメーション無効にしてても、 実装自体は終始アニメーションで固めてしまったほうがいいってことかなあ。
見た目に関する遷移は全部アニメーションでいい Blend使うとそんな感じになる 論理的な状態の変化はVMかコードビハインドで
VisualStateManagerの使い方が謎
XAMLで困るのは構文だな やっぱBlend依存でやるしかないのかな? どうもBlendいやなんだよな・・・
嫌なら手書きでやれば
アニメーションというか画像処理みたいなのしたいなぁ 画像にぼかしかけたり、モザイクとアニメーションを同時にやるとか そういうのは結構難しいんだよな
>>875 XAMLだけでやろうとしなければそれほどでもなくね?
一旦コードビハインド側でコード書いてXAMLに直せそうならやってみればいいし
そういうのはピクセルシェーダを使う 仕組みが分かれば超簡単でクソ速い
>>871 Blend 使えば簡単なんだけどね。
Visual Studio のライセンスで Blend 自由に使えればいいのに・・・
パワーマシン上で仮想マシン構築して90日間のお試しを・・・ 実行するかどうかはあなた次第 というかそんなに難しいか? というかそういうtipsサイトってないのかな? みんなツール依存なの?
MVVMのコマンド内で、処理分岐してWindow クローズするか、別Window起動するか、もしくはメッセージ表示して処理抜けるか考えてみたけど、 Windowクローズするならイベントハンドラにしないと無理そうなんだと思うんですが、どうよ?
>>881 きっちりMVVM的にやるなら、
PrismのInteractionRequestなりMVVM LightのMessengerなりつかって
VMからViewへメッセージ投げるべき。
View 内に完結してやるにしても、
Button.Click とかのイベントハンドラーで Close() するのはいまいちで、
Button.Command に ApplicationCommands.Close を指定した上で、
CommandBindings で Close() する方がいいと思う。
>>882 インターフェイスを使うのもアリ
interface IWindowService {
void CloseWindow(string windowName);
void ShowWindow(string windowName);
}
例えばこういうのを実装してViewModelのIWindowService型のプロパティに渡しておく
これだとウィンドウ剥き出しすぎるからもうちょっと抽象的な名前のほうがいいかもしれん
メッセージよりはわかりやすくて使い回しも利く
885 :
デフォルトの名無しさん :2011/03/08(火) 10:09:04.22
メニューに割り当てるショートカットキーについて質問です。 ↓みたいにXMLファイルをバインディングするのと <MenuItem Header="{Binding Source={StaticResource Strings},XPath=String[@name\=\'menu1\']/@value}" > ↓みたいにショートカットを指定するのを両立させるにはどうしたらいいでしょうか? <MenuItem Header="File(_F)"/>
ファイル分けたいだけなんだったら そのXMLファイルをResourceDictionaryのXAMLにすればいい XAMLが嫌で俺XMLで書きたいなら XSLTでXAMLに変換するとかXLINQでコードでMenuItem作るとか メニューなんてアプリ中にいくつもあるもんじゃないんだから、 悩んでる暇があったらそれくらいコード書け
ウィンドウに貼り付けた画像の指定色を透過させるにはどうすればいいんですか? C# Window2 w2 = new Window2(); Background = Transparent; AllowsTransparency = true; OpacityMask = White; w2.Show(); XAML <Grid> <Image Source="test.jpg" /> </Grid> これでtest.jpgの画像で白い部分を透過させたいんですが透過しません jpgもC#で違う画像を指定して入れ替えて使いたいんですが、どう書けば良いんですか?
OpacityMaskはそのブラシでコントロール全体を塗りつぶしたと仮定したときのアルファチャンネルの値が コントロールの透明度として使われるというもの。特定の色を透明にするというようなことはできない。 だいたい、jpgは白で塗りつぶしても正確に白にはならないのでそういう用途には不向き。 アルファPNG使いましょう。
jpgの白く見える部分は白じゃない
すげーかっこいいーできたありがとう!
WPFは結局流行らなかったね
マイブームきてんよ
ほんまにね
XPが消える頃に流行りはじめるんじゃね
なんでWPFはゲームに向かないの? サンプルにゲームがあるんだけど
WPFが流行らない理由 Microsoftが「かっこいい見た目」を前面にだしすぎたため 「かっこいいのを作るだけが目的」と誤解されている C#だけでなく、ザムルも覚える必要がある 勉強ページや勉強本が少なく、自分で考えても車輪の再発明よりむしろ劣化にしかならない
業務で使いそうなDataGridなんか特に重い JavaのJTableは重くならないために中はコンポーネントじゃなくて独自実装になってるというに WPFのはスクロールしただけで中のコンポーネントの幅をみな再計算するため酷い重さ
>>895 ゲームの描画なんて画像と文字と線を指定位置に描画することさえできれば充分なので
Direct3DやXNAのような低レベルなAPIでも無問題だから
Silverlightならクロスプラットフォームだしブラウザ上で動かせるのでメリットはあるが
WPFでゲームを作るメリットはない
ベクターベースのゲームならメリットはあるかもしれないけどね
表現力と聞いてRIAに対するflasherと同じ発想しかできないのが悲しい。
業務向けの便利コントロールは完全にSilverlight優先 WPFの次のバージョンではSilverlightのホスティングに対応するらしいから、 いずれはWPFのUIといえばウィンドウいっぱいにSilverlightHostコントロールを貼り付けただけになるんだろうなw
>>901 >WPFのUIといえばウィンドウいっぱいにSilverlightHostコントロールを貼り付けただけになるんだろうなw
それでいいと思うよw
.NET Frameworkのサブセットの機能で十分なやつはSilverlightでいいよ。
描画と入力だけSilverlight使えばいいわけでしょ SilvelrightはActiveXコントロールとしてホスティングできるから、 フルセットの.NETからSilverlightのVisualTreeを操作できるように橋渡ししてやればいいだけ 現在のSilverlight4+.NET4でも実現は難しくないはず
Blendのストーリーボードで卵を消しても範囲だけ残るんですがこれはどうすれば消えますか?
<Style TargetType="Button">... みたいにx:Keyを付けないと private void Button_Click(object sender, RoutedEventArgs e) { var resource = (ResourceDictionary)Application.LoadComponent(new Uri("Dictionary1.xaml", UriKind.Relative)); grid.Resources = resource; } のように動的にリソースを入れ替えても瞬時に切り替わるけど、 x:Keyを明示的に付けてStaticResourceとして参照してると切り替わらない(DynamicResourceならOK)。 x:Keyを付けないときはDynamicResourceと同じ扱いになるのかな?
>>895 正確には、アクションゲームみたいなフレームごとに描画しなおすタイプのゲームに向かない。
WPFはイベント駆動で画面再描画することを前提にパフォーマンス最適化されてる。
>>908 WPFやSLのお作法でいきなり作ろうと構えるとそれだけで負担になるので
とりあえずは名前付けてイベントハンドラ使って従来の方法で触ってみるのが
一番だよ。
その中で従来の方法で書いたコードをバインドなどWPFやSLのお作法で
書き直すとどうなるかってアプローチが一番いいと思う
大体の人はWinFormになれてるんだし
910 :
906 :2011/03/08(火) 23:22:56.90
911 :
デフォルトの名無しさん :2011/03/09(水) 01:51:46.76
>>909 WPFで一番戸惑ったのはポトペタでGUI作りにくかったことだな
Blend抜きだとタグを直接書いた方が楽だなんて何処にも書いていないし
実行時までコントロールの数が不定のインターフェースって MVVMの流儀だと、どう実装したらいいの? 例えば、接続されているハードウェアを列挙して、アイコン付きの ラジオボタンあたりで選択させたいみたいな状況です。 (NVIDIAコントロールパネルのディスプレイ周り等)
ObservableCollection<T>に突っ込んでListBoxにでもバインディングしとけばいい。
((Storyboard)FindResource("Story")).Begin(this); で例外がでるんですが、ストーリーボードのリソースはXAMLから検索してくれるんじゃないんですか? <Storyboard x:Key="Story"> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="SB">
Sliderの値を整数で取得したいのですが、 値を整数で変化させるにはどうしたらいいですか?
916 :
デフォルトの名無しさん :2011/03/09(水) 19:12:05.41
>>915 数値としてならConverter書いた方がいいのかな?
文字で欲しいのならStringFormat
918 :
デフォルトの名無しさん :2011/03/10(木) 00:26:07.76
>>917 WPFはまあ・・・あれだがSLはいいと思うんだけどなあ・・・
やっぱりFlashとかの方が歴史が長いだけに開発者が多いので
厳しい目で見られるってことなのかね?
「大手のコンポーネント開発元がWinFormsを切り捨てたから一部のユーザーが怒っている」 というだけの記事だろ
"A Case for WinForms"が「WinFormsの場合」になるのか 相変わらずの超翻訳で安心した
そりゃ今までWinForms用のDevExpressのコンポーネント使ってた人にとっては 切り捨てられたらショックだろうな 逆にWPF切り捨てならWinForms叩きでもっと荒れただろうな 別にただそれだけのこと
922 :
デフォルトの名無しさん :2011/03/10(木) 19:40:01.79
WPFでユーチューブみたいなストリーミング再生をするにはどうすればいいのでしょうか? MediaElement.SetSourceで出来そうだけどSilverlight限定?
UIを複数のUserControlで作っていて、共通の部分がでてきたので一元化したいんだけど、 Xamlとコードの両方に共通化したい部分がある場合はCustomControl化してしまったほうがいいの? デザイナーによる支援が貧弱になるのは痛いけど、UserControlを継承して…ってのはなんか違う気がする。
>>922 直接URL渡せばWMPで再生できるなら再生できるよ
>>924 XAMLも一緒ならUserControlでいい
カスタムコントロールはXAML(テンプレート)とコードを分離できるコントロールを作るためのもんだ
MSのガイドラインに沿ったもの作ろうとすると途端にしんどいな
>>925 UserControlの継承はやり方がよくわからんです。
継承元(一元化したい部分を含んでいる)はコードのみで書かないとうまくいかない感じです。
・共通部分をまた別のUserControlとして括り出せないか ・コードをビヘイビアとして再利用できないか を検討してね
>>928 上が一番簡単そうだけど管理が煩わしそう。
下は今回のケースなら適用できそうです。
XAMLはResourceとして括れるだけ括ってみます。
DOBON.NET の中の人は WPF攻略しないの?
簡単な方のビヘイビア(添付ビヘイビア)だとインスタンスフィールド持てないので困った。 めんどうだけどBlendの方のビヘイビア使うべきか。
どぼんのひともう死んでるんじゃないの? 情報も古いままだし、初心者とって紛らわしい使えないサイト
初心者は
>>908 のサイト見てれば基本的なことは分かる。
これテンプレに入れといてもいいかもしれない。
Commandが失敗したことってどう通知したらいいんだろう
WPFの資料が少ない最大原因は Expression Blendとかいうのがなかったらきつすぎるから。Visual StudioだけでやるならWindows Form のほうがいいし。 ごく一部の専門家が使うイメージだ。 解説ペーjなんて作っても WPFやるならExpression Blendを買おう。 これ買ったこと前提ですすめます なんてやったら、そもそもそんなの買うようなのは解説ペーjなんてなくてもMicrosoftのページでいいだろうし全然よんでもらえないし かといってExpressionなしでやるのも なにこれ?XAMLでアニメーションとか依存プロパティとかテンプレート作るのコード複雑になりすぎてちょっと無理ある でもアニメーションとか使わないんだったらWindows Formでよくね?ってなるし。
書き込む前に推敲した方がいい
>936 WPFでも、Formsで実現できるレベルの事しかしないならBlendなんか要らん。 つか、使ってもたいして楽にならんよ。
>>935 バインディングの失敗とは違って
制御はコードにあるんだからどうとでも
好きにできるだろ
アニメーションなんかより レイアウトエンジンの有無 半透明のサポート の方がよっぽど需要。 これらはBlendが無くても十分役立つ。
Blendのテストデータを自動生成する機能だけはVSにも欲しい バインディングの設定自体はVSのデザイナでも十分やれるけど、 BlendがVMのデータを適当に自動生成してくれて、プレビューしながらUI作れるのは便利
うむ BlendはVS2010以上に重いし
そろそろ仮想PC上にWindowsとBlend体験版をインストールしなおす時期だお…
昨日削っていいから無料版Blend出して欲しい
BlendExpress ・・・・そうなったらおれも使う
無料版を出すくらいならVisualStudioに統合してくれと思うが。
同意 全く分けてる意味無いと思う こんなもんプログラム書けない人が使えるわけないわ ビヘイビアとかInteractionRequestとか、どんどん本末転倒な方向に進んでる
WPFはオワコン
プログラマが作業の手間を軽減させるのであればいいソフトだ。 デザイナーはDesign使ってろってこった。
デザイナとの分業とか、夢見てちゃだめだと思うわ。 デザイナ向けツールはあっても良いけど、VS単体でプログラマが作業できるようにならないと、WPFなんて絶対流行らんわ。
分担するということは人件費がかかるということ そんなことできる会社が日本のどこにある
絵で描いてもらえればそれでいい
Blendのデータストアとかアホかと思う 結局XAMLでプログラミングしてるだけじゃん
折れ線の描画方法をおしえてください
955 :
デフォルトの名無しさん :2011/03/19(土) 11:03:42.62
Polyline
VisualState内のStoryboardで、 <Storyboard> <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="RenderTransform.X" Storyboard.TargetName="LayoutRoot"> <EasingDoubleKeyFrame KeyTime="0" Value="{Binding ActualWidth, ElementName=LayoutRoot}"/> </DoubleAnimationUsingKeyFrames> </Storyboard> こんなふうにValueに動的に値をいれたいんだけど、Storyboard内ではBindingは使えないらしい。 ウィンドウサイズによって値が変わるので動的にやりたいんだけど何かいい方法ないですかね?
957 :
デフォルトの名無しさん :2011/03/20(日) 21:26:04.30
OuterGlowBitmapEffectって.net4.0でビルドすると表示されない? MSDNではBlurEffect使えって書いてあるけど 元絵とブラーさせたやつを重ねるのはメンドクサイ 何か良い方法はありませんか?
Freezableを分かりやすく解説してくれ
クリリンのことかー!
ドキュメントに書いてるだろ・・・
>>956 添付プロパティとして親のサイズに対する比率(0-1)で要素の位置を指定できるPanelを自作するとか
ピクセルシェーダならそういう条件での移動は簡単にできるので、移動させるだけならさすがにやりすぎだと思うけど
他にもエフェクトかけたりするならついでに移動もピクセルシェーダでやってしまう手もある
>>957 DropShadowEffect{ShadowDepth=0}
>>961 なるほど、カスタムパネル、ピクセルシェーダー。目から鱗です。
Canvas並の機能のGrid軽量版をつくろうかと思ってたのでまずはカスタムパネルやってみます。
MainViewのメニューコマンドでいろいろなダイアログをモーダルで開くタイプのアプリケーションを MVVMで作成しようとしています。 このとき、MainViewModelのコマンドからダイアログ(HogeDialog)を開くにはどうするのがいいんでしょうか。 (1) HogeDialogを先に作り、HogeDialogの中でHogeDialogModel(ViewModel)を作る (2) MainViewModelでHogeDialogModelを先に作り、HogeDialogを後付けする どちらにしても、HogeDialogをMainViewModel内で直接newすると VMがVに依存することになってしまうので、HogeDialogはMainViewModel以外の場所で作る必要がありますよね。 それを考えると、(2)の方が(1)よりも構造がシンプルでVM間のデータの受け渡しも楽になると思うのですが webでよく見かけるのは(1)の方ですよね。 そもそも単体テストを楽にするのが目的なんだから、(2)のようにVM同士を依存させるのは避けて 必要なものだけInteractionRequestなどを通して間接的に渡した方がよいということなんでしょうか。
964 :
デフォルトの名無しさん :2011/03/22(火) 19:13:17.24
>>961 DropShadow使ったらいいのか…
ありがとう、できました。
DropShadow だとタイトルバーみたいなグロー効果でないんだけど
この話題定期的に出るNE!
967 :
964 :2011/03/22(火) 20:52:21.59
アニメーションが使いやすいな Storyboadで回転しながら拡大しつつ色を変化させて移動 なんてDirectXとかでやったらちょっとコードがごちゃごちゃするけどXAMLならスッキリかける
>>968 そういうのはストーリーボード相当のものを自前で実装するからごちゃごちゃしませんよ。
その理屈ならWPF相当のものをDirect3Dで自前で実装すればごちゃごちゃしないし Direct3D相当の抽象化レイヤを自前で実装して直接ハードを叩けばごちゃごちゃしないね
WPFやFLASHほど高機能ではないけどね。 アニメーションエディターは2DだとFlashやDirectorやアフターエフェクツから取り込んだりね。 ほとんどのところではベクター画像とりあつかってないよ。 3DだとMayaとかMaxのデータをそのまま再生できるようにしてりしてます。
OnPropertyChangedって意外に重いのね
UIの更新とかに比べたら誤差だからどうでもいい
500個くらい値かえたら結構カクカク
WinFormsのころはBeginUpdateってあったろ それと同じこと
UIの更新に時間がかかってるだけで OnPropertyChangedは関係ないな 使い方が悪い
どうすればいいの?
わかりません 情報を出してください
Rect(形状)と文字列(色の名前)のプロパティとをもつクラスAがあって ObservableCollection<A> OCを用意して ItemsControl内でRectangleGeometryでAのプロパティをBindingして箱パコパコ描いてて MouseMoveでOCのヨウ素の文字列を書き換えてるだけ
おい、おまえのプログラム放射線だしてるぞ!
いまこんなの書いてるんだが
http://ideone.com/Zq6TX CommandParameterの指定をもう少しマシにできないものか
CommandParameter="{Binding PlacementTarget.SelectedItems,RelativeSource={RelativeSource FindAncestor,AncestorType=ContextMenu}}"
じゃなくて別なアプローチで…
これが駄目な理由はよく分からない
http://ideone.com/5BguP
WPFとは全く関係ないけど、GUI以外軽視してるプログラムが多くて悲しい ワープロソフトにたとえるなら保存するときはいちいちファイル→名前をつけて保存(or上書き保存)をクリックしなきゃならなくて Ctrl+Sキーで保存する機能がない、みたいな。 プログラマはもっとユーザーインターフェースのこと考えようぜ。
( ´_ゝ`)フーン
てか、それ、MSは再三言ってることじゃない。
WinFormsのころはBeginUpdateに相当するものはありますか? 実現できますか?
CompositionTarget.Rendering使うと あるプライベート変数が イベントハンドラから見たときと それと別のスレッドから見たときとで値が異なるということが起きてるのですがなぜでしょう?
考えられるのは、自分の忘れてるところで書き換わってるか、 スレッドローカル属性付けちゃってるか?
>>985 ViewModel側でObservableCollection使うのやめて、
自前で、自分の好きなタイミングでCollectionChanged起こすようなコレクション作ればいいんじゃないかな。
見た目とコードの分離なんて机上の空論だよなw まで読んだ
美人デザイナーと仕事ができる可能性を残している
>>989 アーキテクチャパターンを実装パターンと混同してるからそういうことになるんじゃないのかな。
MVCとかMVVMってどっちかって言うとアーキテクチャパターンなのに、
実装レベルの同一性で議論してないか、それ。
でも純粋に実装抜きでアーキテクチャだけならMVPパターンと同じでしょ ViewとPresenterの間の通信にWPFのバインディング機能を使えば便利じゃね? というのがMVVMなんだから、どうしても実装抜きには議論できないと思う
MVPよりMVVMのほうが単体テストしやすいような
いやー、わざわざそれに名前付ける必要あったのかなとも思う。 正直、ステートフルで仮想化されまくりなGUI向けMVCって言い方でもよかった気がする。
WPF用に作られた一般的なViewModelに対するViewを もしWinFormsで実装するとしたら、Viewがdynamic型を通してViewModelを監視したり ViewModelのコマンドを実行するようにすれば、V->VMの結合の強さもMVVMと全く同じになるけど それをMVVMと呼ぶかというと…やっぱりMVPじゃないかなw
>>995 「ステートフルで仮想化されまくりなGUI向けMVC」長いよw
いや、もちろん、一般向けに言うときはMVCしか言わない。 どうせ細かい実装わかってない人にはそれで十分じゃなかったかなぁって。
次ぎ立てるから黙れ
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。