WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part13
WPFは死にました
4.0.3で重要な修正ある?
ガベージコレクションの変更とか。
ARM版Windows8の名前Windows RTになるみたいだがややこしいな
コントロールのTemplateって部分的に書き換えるとかできないの・・?
できないなら、デフォ設定を引っ張ってくる記述ってないのかな。トリガーとか。
デザインモードでよくわからんエラーが出続けてて格闘してたが
プロジェクトクリーンで直った
.g.cs達の影響うけすぎ
>>8 「リソースに書きだす」だかなんだかいうのがあるだろ
同じコントロールでもvsとblendで書きだす内容が違うけどな
WindowのLoadedイベントにCommandをバインドしたくても
コード上でDataContext設定したんじゃイベント発生に間に合わないのな
イベントにはICommand型はバインドできんやろ?
MVVMはもう詰まったら逃げろが正解な気がしてきたぜ。頑張っても自己満足だしな。
そのケースなら、もうデリゲートとかで渡しちゃえよ的な・・
WindowsRTのデスクトップアプリってWPF使えないのかな
どっかで誰かが言ってたみたいに、ビヘイビアもメッセージもコマンドも使わないで
常にイベントハンドラからVMのメソッド呼ぶことにしたらほとんど悩むことがなくなった
もうこれでいいわ
SliderのValueをとある自前クラスのint型プロパティにBinding(OneWayToSource)しているんだけど、
スライダを動かした際にプロパティのsetに加えてgetも呼ばれてるのは仕様・・・?
実装の都合でgetのコストがちょっと大きいので、setだけにしたいんだけど
コマンドもメッセンジャーもインフラ構築しないと面倒くさすぎるからな
色々な機能をふやすと労力をMVVMじゃなくて機能面に注ぎたくなる
書いてないことは仕様じゃないし充てにしてもいけない
趣味のプログラムでも
ユニットテストやらなきゃいけない時代なんじゃないかなぁ
ビハインドで書くとまずテストできんでしょ
まあ、MVVMで書くのも、テストしないのも、同じくらいコスト高いけど
DataGridでe.Row.Getindex()をバインドさせて行番号を自動で振ってる場合に、
コレクションの追加、削除等をすると、ObservableCollection は変更があった行しか
CollectionChangedを発生させないからか、既存行の行番号が再付番されないのですが、
普通はどのようにしていますか?
ObservableCollection を継承してCollectionChangedを公開・・?
それかコレクション側に行番号を持つにしても、付番しなおさなきゃならないですし・・
OnCollectionChangedを公開する方法で上手くいきました。
>>19 ビヘイビアで書かれた複雑なスクリプトをデバッグするよりはコードビハインドの方がマシ
つきつめるとViewModelもいらんくね?ってなるけど。
ViewModelのコレクションはまじで煩わしい。
アプリの機能が増えてくると機能単位のVM作っておいたら割と便利だた
画面単位でVM作るのは本気でいらんと思ったわ
バインドだけ使えればいい
バインドが楽なところはバインドでそうじゃないところはコードビハインドが妥当
VM作る作らないは開発規模次第
Blendがある環境ならまだしもフルスクラッチなメッセンジャーやビヘイビアで作られたやつとか触りたくないわ
できるやつはそれでいいけど、ビヘイビアとかを完全にフリーダム?wにすると
カオスになりそう。デフォアクションが足らなすぎるんだよなぁ。コンバータとかも。
つか、よく読んでなかった。使わんでいいだろって話か。多分。
いろんな状態持ってたり複雑なロジックで導出される値があったりするならVM必要だけど
エンティティのプロパティをテキストボックスで編集できて
保存ボタンで保存できればいいだけの画面にVMなんかいらんわな
大切なのは一貫性だと思うが。
机にきれいに収まっていてもどこに何があるのか分からない部屋より、
乱雑に置かれているけどどこに何があるかすぐに分かる部屋のほうが良い。
俺は事務の仕事をしているのだが、
C#とWPFを使って、業務を高速化させているw
うちの会社のシステムはWebアプリ化しているから
自分で作ったアプリで、WebBrowser上で表示させて
HTMLDOMで情報抽出、自前でデータ管理しているから
仕事が速い。
仕事が出来る奴と思われてWPF様々ですよ。
周りの奴らは、俺がそんな自作ツールを使っている事は当然気づいていない。
有名なIT会社が作ったWebアプリで、
重要な項目には必ず、id属性がふられているので、GetElementByIdで簡単に取得。
データ加工したものは、Sqliteを使って保存している。
だから情報検索も早い。
仕事しながらツールを作るのが大変だったけど、作った後は激楽になった。
デバッグ環境が会社にしか当然ないからw 同僚に隠れてVS2010起動しながら作るのが一番大変だったw
C#たん、様様。
>>29 MVVMってビュー単位で閉じてるのが基本で、
VM持ってるかどうかは外から意識することじゃなくてビューごとの実装の詳細みたいなもんだろ?
そんなに大したことじゃないと思うが
>>31 よく隠れて作ったな。
そのうち使っているのがばれて、
皆が使い出して改造を頼まれてるようになり大変になったりてな・・・。
スクレイピングはいいよな
俺はPowerShellでやってるけど
>>30 仕事が速いだけじゃなくて正当に評価されると良いのにな。
調子こいてバレてシステム部門に異動で泣きを見るな・・・
趣味レベルだと面白いんだ。責任はないし逃げれるからな。
WPFの場合は、Forms.WebBrowserを使わないとdom操作できないよな。
dynamic使う
XAML系ってXAMLで書いたら静的になっちゃうよね?
なんつーかスタイルとかモーションとか。
その辺動的にゴニョゴニョ出来る仕組みってあるの?
トリガーはどうよ
なにを意図してるかよくわからんが・・・
cssのa:hoverみたいなのなら
>>40とかテンプレート弄るなりできるし、
外部にリソースディクショナリ出しちゃえばcssみたいにスタイルは外に追いやれるが。
XAMLを使わないプログラムはやらないかなあ。
GWTとかMacでIB使わない開発してるからそっちのほうが
違和感がないんだが
>>40,41
ユーザーの設定とかでトランジションや何かした時のアニメーション動作を変えたり、全体的に文字を大きくするとかを動的に変えることが出来るのかなーと。
UIの階層構造にしても出来れば動的に変えたい。
いや、XAMLまだ触ったばかりでよく知らないので、こうすれば出来る的なのがあればぜひ教えてほしい・・・
>>43 文字サイズなら、包含継承っていう仕組みで親要素から子要素にプロパティが継承される
はずだから、最上位のGridとかだけ設定してやりゃ子は全部変わるはず。
そこのfontsizeにバインドなりさせりゃ動的に変更できる。(と思う。やったことない)
階層構造を動的にか。やったことないが、
0からコントロールをコードで追加していくってのはできるよな。
現実的には、ある程度部品纏めてユーザーコントロール作るとか。
普通にコードビハインド書けばいい
アニメーションでできることならできるだけXAMLでストーリーボードとして定義して
コードから開始させる
>>44.45
前アニメーションとかは使ってなかったんだけど、UIについては自分でゴリゴリ書いて動的にコントロール追加とかしてた。
いいたいのはXAMLで書くと不必要に静的にならんかということ。
うまく混在させればいいんだろうけれど、そもそもXAMLで書いたほうが幸せになるのか、動的な構造変化も出来るような独自のDSL作っちゃったほうが、幸せになるんじゃないかとか。
そもそものINotifyPropertyChangedとかの実装が醜すぎて嫌いというのがある。
XAMLでBinding楽に書けるよレベルのは自前DSL書いて楽にできるだろうし。
まぁそうするとBlend使えなくなったりとかもあるので痛し痒しなんだが・・・(;´Д`)
WinRTにデスクトップアプリという概念はない
49 :
デフォルトの名無しさん:2012/04/27(金) 14:02:19.97
XAMLを使わないと簡単にコントロールをラップするクラスが作れて本当に便利だ。
依存関係プロパティの定義とか、いちいち定義がダルいのをどうにかして欲しいな。
普通のプロパティに属性付けたら勝手になる感じでいいだろと。
コールバック?シラネ!
>>50 スニペット使うといいよ。
wpfdp とか wpfdpa とか idataerrinfo とかetc。
ここは自ら好んで苦難の道を行かんとする猛者多いな。
>>47 その仕組でILいじるのはありっちゃありだが、テストとかじゃなくてプロダクトコードにそれでやるのはちと怖い(;´Д`)
WP7などでバインディングがもっさりの現況とか言われてたことがあったけど、実際のところどうなんでしょう。
たしかに無駄な処理してそうな気がしますが・・・
それってバインディングじゃなくてレイアウトの再計算の方がボトルネックになってるんじゃないか
formsみたいにcanvas1枚の上にコントロール全部のぺって貼り付けたら早いんじゃね
Livet使ってるけど、参考になるサンプルが少ない。
難しいことはわからなくても大丈夫なように作ったんだろうに、
下手な解説資料よりサンプル増やしたほうがいいってことに気付け
携帯の画面ごときにレイアウトのコストなんてほとんどかからんやろ
デスクトップとは比べ物にならないくらい単純だぞ
久しぶりにAccess触ったらSQLにコントロール名入れたりとかすげえなw
そりゃこういうのに囲い込まれた連中がMVVMとかあんまりにもギャップがありすぎるわな
VBA7.0なめるなよ
>>57 最近はフォーラムでも幾つも使用例上がってんだから
サンプルなんて探せばゴロゴロあんだろ
それでも判んないならやりたいこと言えばいい
62 :
デフォルトの名無しさん:2012/04/29(日) 06:17:34.08
マイクロソフトは開発言語がC++とMFCだったころは強制的にフレームワークで
プログラミングをがんじがらめにしておいて、
NETになったら、すべてユーザー任せにした。これに対応できないユーザーがほとんどだった。
WPFになっても同じ失敗を路襲している。
WindowsFormsのリソースをどのようにしたら、WPFのアプリケーションに再利用できるのかぐらい
サンプルコードで提供できないのか?
これではプログラムのロジックの継承も断絶する。
おっさんは切り捨てる方針に決まりました
現在25歳以上の人はご愁傷様
>>62 MFCもそうだけどどうせ現場では出来る(興味のある)やつが
ひな形を作ってコピペする作業が始まるよ
偉そうに記事見つけたからLivetいれてみたけど
サンプルのUIが糞すぎてワロタw
疎結合だMVVMだと偉そうに語ってても
こんな糞UIしか作れないんじゃ意味ないな
Messenger.Raise(new TransitionMessage(new MemberViewModel(new Member(_model),this), "Transition"));
なんだこれ分けわかんなさすぎるぞ
ここまでしなきゃだめなのかって
>>65 Viewの部分の見た目とかはLivetと関係ない部分だろ
>>66 Livetのソース公開してるから見たらいい
new MemberViewModel(new Member(_model),this), "Transition"
の部分は、その例で、たまたまそうなってるだけであってLivetと直接関係ない。
わざわざMessenger.Raiseの中で3回もnewが出す必要はなく
サンプルのコードが悪いとしか言えない
ttp://ugaya40.net/livet このページのいくつかの使用例と、あとはLivetのソース追っていけば
後は動かしながら試していくと一応なんとかなる
しかしドキュメント整備するとか言ってて、結果が何もないまま1年間経っちまったなw
なんとかして欲しいわ
使えないことが露呈するからサンプル作れないんだよ
見た目関係ないないなら、Livet、強いてはMVVMパターンさえいらない
Livetだからこんなことができますって表現がほしいね
てか、WPFのアイコン化とかコードビハインドなしでできるの?
ソース見なきゃコード書けないって、そもそもそういう設計ってどうなのよ?
疎結合とか言っておきながら、ライブラリのソース見なきゃ使えないっておかしくないか?
ViewModelHelper.BindNotifyChanged
ReadOnlyNotificationDispatcherCollection<MemberViewModel> Members
DispatcherHelper.UIDispatcher
あとこれなんだよ、この長ったらしいの
わけわかんないコード自動で書くんじゃねーよ
とにかくさ、MVVMができるのかなんか知らないけど
初心者お断りって書いて欲しかったわ
アンインスコ決定
あーあとさ、Win32APIを使う場合、一体MVVM的にどこにコード書くのさ?
それもLivet使えばxamlで書けるの?無理なんだろ?
この作者のMVVMの説明みたけど、WinFormではTreeViewで子ノードにチェックできないとか
書いてたけど、それぐらいカスタムコントロール作ればできるだろ
去年の年末以降、ぴたりと開発止まっちゃったみたいだけどもう投げ出したのかね
バグも多いみたいだしさー、他人のライブラリにバグがあるのが一番致命的なんだよ
<l:DirectInteractionMessage CallbackCommand="{Binding RemoveCommand}">
あとこれだよ、削除するときの確認ダイアログにメッセージを表示する機能があるか
どうかなんてどうやってV側でわかるんだって話よね
Removeって打っても、インテリセンス働かないしさw
VMがどんなプロパティを公開しているかすらわかんねーじゃん
結局V側がVMの内部実装を見て判断することになるわけで
だったら、VMでダイアログ出したほうが早いだろって話だよ
Vから作ったとしても一緒だよな
RemoveComandつけたから、VMで実装しようと考えるわけで
結局、VとVMどちらがわもソース見なきゃ書けないわけだろ
構造的に分離されてても、作業分担できないってことじゃん
しかも個人でやっている人間からすると無駄でしか無い
MVVMでどうやってゲーム作るんだ?
VMに依存しないで書けるんだよな?
スカイリムのようなゲームをMVVM+Livetで作ったサンプルを公開してほしいね
一つのフレームワークで業務アプリからゲームまでなんでも対応できると思っている奴
俺はもうlivetとかを使わずに自作の使ってるわ
>>73 なんでも対応できるように書いてたからね
Livet最強、他では無理
みたいなことばっかり書いてたくせに
何もできないじゃないか
MVVM以前にそもそもLivetに依存しているだろとw
Livetなければできないようなパターンを学習する意味あるのかって話
いつ投げ出すのかわからないようなライブラリに依存したコードを書くほうが
VとVMが依存したコードを書くよりも恐ろしい
ものすごくゆとりだなあ
問題をはき違いえているようにしか思えない
あとlivetをつかったそこそこ大きいソフトはKrileがある
銀の弾丸探しに労力かけるアホがいたのか
ソースもサンプルもドキュメントも、少し集中してLivetの作業やれよ、っという外野の声は多数。
>>76 ゆとりでも使えるものとして作ってるんじゃねーの?
あと、そこそこ大きいとかじゃなくて、小さいサンプルをくれと言ってる
ReadOnlyNotificationDispatcherCollectionでぐぐってもろくにサンプル出てこないだろ
ライブラリを提供する側としては、使ってもらうためには単純だけど網羅的なサンプルとか必要だからなー。
メッセージにstring使ってtypoする危険犯すくらいなら
enum使うようにデザインすればいいのにね
生産性に寄与してない
MVVMでゲームか。速度出なさそうだな・・
Messengerでオブジェクト出して座標をバインドとかだろうか・・・
一般的?なBBに全部自力描画でフリップ的な仕組みだと、どうやりゃいいか想像も付かんな。
LivetじゃなくてMVVM Light ToolkitとかSimple MVVM Toolkiとかどうなの
Simple MVVM Toolkitが特にきれいにまとまってていい感じなんだが
MVVM Light Toolkitこれはだめだわ糞すぎ
外人のサンプルみたら、MVVMどころか
ViewModelクラスすらなく、イベントハンドラにベタ書きしてた
86 :
デフォルトの名無しさん:2012/04/30(月) 06:33:53.39
>>85 それでいいんじゃね?
慣れてくればMVVMのお作法使ったほうが自分で面倒見ないと
いけないコード量が減らせるのでこっちがいいやって感じるんだけどさ
>>85 なんのためのサンプルかによるよな。
サンプルプログラムレベルだと冗長に感じるだろうし
88 :
デフォルトの名無しさん:2012/04/30(月) 07:18:02.64
動的にコントロールのインスタンスを作成するとき、
そのコントロールのイベントハンドも動的に追加するだけで、
柔軟性のあるコントロールが利用できる。
カスタムコントロールなんて作るだけ骨が折れるだけで拡張性がない。
所詮プログラミングはイベントハンドラを使うしかないのだ。
>>87 ゲームプログラマだから相当な実力だと思うんだが
90 :
デフォルトの名無しさん:2012/04/30(月) 08:23:27.51
>>89 それだったら「ゲームでMVVMなんて使えるか!」じゃないの?
そうかもしれん
素人がメモリリークやVとVMの分離を意識するだけ無駄だな
MVVMどころか、WPF使わないわな
リアルタイム系のシューティングやアクションとかだったら
カードゲームとかのんびり系ならいいけど
今のところオナニーコードや意味不明な文章を垂れ流してTwitterで騒いでるだけだからな
コードから伝わってくる神経質なデザインがコーディングしてていらいらする
各所での回答も冗長で的外れ、なんか統失っぽい
みんなVMからDispatcher使いたいときどうしてる?
Vのインスタンスを渡すとか
最初にUIスレッドで初期化させてDispatcher.CurrentDispatcher
そのDispatcherは持ったまま後で使いまわしてもいい・・・よね?
VMをdispatcherobjectにするのはダメなの
LivetのDispatcherHelper.UIDispathcerとかも、
まさに99みたいにCurrentDispatcher取得しといて
それを100のように使いまわしてるだけだしね
101のはちょっと違うと思う
System.Windows.Application.Current.MainWindow.Dispatcher
を使うってのは何か問題ある?
あれこれいじるとVMの単体テストができなくなるから
VにCheckAccess入れたほうがいいんじゃないかな
確かに意味不明だな。
System.Windows.Application.Current.Windows から画面探せばいんじゃね。
App.CurrentとApplication.Currentどっち使う?
単体テスト的にはVMにUIのDispatcherを渡すって感じだろうな。
単体テスト時には適当なDispatcherを渡すと。
109 :
デフォルトの名無しさん:2012/05/02(水) 12:46:52.64
マウスジェスチャの機能を付ける予定だけど
WPFだけでできる?Win32API使わないと無理なら
素直にWinFormでやるけど
mousemoveイベントは拾えて座標も取れるから
やれば出来る
>>111 105は極めて妥当な指摘。106はよく分からんが、乗っかってボケてみただけとか?
>>103 V以外でPresentationFramework.dllなんか参照したくないから問題
まあ、Task使う方が普通だからDispather自体いらないけどな
WPFも触りたてだけど、ちかぢかMetroにも手を出さないといけないんだが、ICommandとかMetroというかWinRTだとどうなるん?
要はWPFでやってたようなBindingとかCommandとかMetroでも同じようにあるんだろうが、元の名前空間とか変わってるよねというかいまだに.NETとWinRTの関係がわからん。
MetroアプリをC#で書くとき、言語バインディングがどうたらで.NETに大して書くようにWinRTのAPI呼び出せるよとは聞いたけれど、その時は.NETのクラスは呼び出せない?
それともSilverlightみたいにWinRT用のCoreな.NETライブラリーがあってそれだけは呼び出せる?
その時はICommandとかどこに定義されてんのよ、別の場所だったらICommandとかを使うようなViewModelのWPFとの共通化はバイナリレベルでは絶望的でソースレベルならなんとかなるかもってことかい?
どちらかにしかないコントロールを使ってなきゃXAML部分は使いまわせる、程度に考えていたほうが
>>114 ん、XAMLの方は言われてるように、独自コントロール使ってなければ使い回せそうです。
でもタッチとか含めて色々違うから、共通にする部品と、それを組み上げた独自のものとの組み合わせですかね。
むしろModel、ViewModel的なものをどこまで共通化出来るのかに関心が。
上のリンクにあるようにPortableLibrary使ってればかなり共通化できそうなのかしら・・・
リンクのパワポで大体疑問点解消。
やっぱり名前空間の違い、何かしらで吸収しないとダメなのね・・・
F#でpartial使えないのに(-_-;)
プログラミング初心者がWPFから始めるのは無謀ですか?
簡単だと書いていたのでLivetを入れたのですが
メモリリークとかよくわからない単語がたくさん出てきてびびってます
最初はコンソールアプリからしたほうがいいのかな?
コンソールまで戻らなくてもいいけどmvvmは止めといたほうがいいと思うよ
直感的じゃないから
デザイナにボタン配置してイベントにコード書くとかなら
別にWindowsFormと変わらんしWPFからでも問題ないと思わなくもない
しかし、ブログにはコードビハインドにコードを直接書くことや
イベントドリブン型のコードを書くとメモリリークが発生すると書いてます
メモリリークしているかどうか判断する方法すらわからない初心者なのですが
やっぱり気になります
C#はC++と比べてメモリリークが発生しづらいと聞いていたのに
WPFだと違うんでしょうか?
そんなに重大なメモリリークなんでしょうか?
u氏の解説は誘導じみた書き方をするから胸糞悪い
鵜呑みにしないほうがいい
window1からwindow2を参照して
window2からもwindow1を参照したらリークする
ふつうは別に考えなくてもいいよ。どうせプロセス落としたら解放されるもの。
だいたいそんなこと言い出すやつに限って
もっと重要なリソースリークについて何も言及してないでしょ
>>123 それって結構使いそうな感じですが、
window2にはデリゲートやイベントを作るとか
window1からwindow2を作らないで
VMから作るようにすればいいということでしょうか?
初心者がきにするようなことじゃなさそうなので、ほっとしました
window2を呼ぶときに必要な情報を全部渡してwindow1にはアクセスさせない
どうしても2窓使いたいなら死ぬ時は全部後始末する
そんなとこかな
なるほど、それならなんとかできそうだ
ありがとうございます
>>123 これってなんでガベコレ効かずリークになっちゃうん?
何処かに詳しく書いてるのとかある?
参照カウント方式だと循環参照でリークするが
.NETのGCはマークアンドスイープだからリークはしない
WPFでリークが問題になる(と例の教祖が主張しておられる)のは寿命が長いモデルのイベントをVやVMで受けるパターンだが
不用になるときにイベントハンドラを忘れずに外してやれば問題ない
ていうかそれWPF全く関係なくて普通にWinFormsでもありうること
>>128 それはWPFとかがウィンドウ同士の絡みではハンドルとかの関係で参照カウント的になってるってこと?
寿命の長いモデルのイベントが-ってのはマーク安堵スィープでも一緒だよね。
間違ってないよ
君らtextboxのイベントがどうとかって絶対やるじゃん
それでリークしてるかしてないか試してみ
コードビハインドでダイアログ表示しただけでもリークすると書いてたぞ
循環参照によるリークじゃなくて、
window1から2を起動して2が閉じられた後も1が2の参照握ってたら2がリークするとかそういう話か?
2のイベントに1のイベントハンドラを登録するのは問題ない
逆の場合は片付けないとリークするがあまりそんなことはしないし
そもそもWPFもMVVMも全く関係ない話
Livetの場合、VとVM間でリークが起きるという話だったよね
それはVMからVに通知するときの話だろ
コードビハインドは直接関係ないぞ
まあなんにせよ自分で確かめりゃいいよ
10Mだか100Mだかの配列作って強制GCして
タスクマネージャーからみりゃすぐわかるさ
結局問題はVMからVへの通知だろ?(MからVMはこの際関係無いので)
VMからの通知(メッセージ)をVのコードビハインドで簡単に受信できて参照を適切に管理する仕組みさえ用意すればいいわけだな
V→VMはコマンドは使わずイベントハンドラからVMのメソッドを呼び出す
ビヘイビアは使わずイベントハンドラ
これでかなりとっつきやすくなるんじゃないか
俺はメッセージ集中管理クラス作って
自分を呼んでほしいところは自分で管理クラスに登録するように作ったよ
weakなんとか使えば勝手に落ちるはずだし
windowまたがろうが何個window出そうが単体テストだろうが大丈夫
今後WPFからイベントハンドラは消える
Livetのようにコマンドだけでやっていくようになる
イベントが消えたらビヘイビアはどうやって実装するんだ?
コントロールが直接ビヘイビアをサポートするなら結局仕組み的にはイベントと変わらんぞ?w
よく知らんけどBindingとかでコマンドなりイベントなりプロパティなりつなぐと結果的に相互参照になってModelが生きてるとずっと残っちゃうって感じなんじゃね。
>>130 なんで性能最悪・拡張性皆無な方法を取ろうとするのかなぁ・・・
GDI脳だな
OnRenderがOnPaintの代わりになると勘違いしてんだろ
こうして、もっさりテキストエディタは完成し、
>>130は
「WPFは遅すぎてつかえねぇ」
と吐くのであった。
おわり。
OnRenderはDrawingVisual置いてその中に図形登録してるのとほぼ同じだからな
毛嫌いするもんでもないがOnPaintの代わりでは決してない
お前ら詳しそうだな。ずーっとasp.netしかやってなかったしブチギレそうです!
困ったらJSゴリゴリみたいなことできないし・・・。いやそれがコードビハインドか。
実際やろうとしたらむずかしい
テキストボックスはカレットの行桁取得表示しようとするだけでひどいことになる
まあVSと同じように1文字ずつ置いていくのが妥当なんだろうけど
フルスクラッチになる支那
お仕事じゃない限り手を出さないほうが無難
152 :
130:2012/05/03(木) 17:23:40.62
>>146 WPF的にはそういう方法取らないのか
ということはavaloneditorみたいなやり方が一番いいということ?
自作コントロールの中にさらに自作のコントロールがあってその中にModelとViewとControllerがあるのはすごく気持ち悪いんだが…
>>151 実はWinFormのほうはできている
あとはMVCの部分を取り込んでレタリング関連のインターフェイスを実装すればおしまい
>>151 >テキストボックスはカレットの行桁取得表示しようとするだけでひどいことになる
Uniscribeは低レベルAPI使うしかないからもうそれはひどいことになるけど、
DirectWriteを使えばキャレット関連はメソッド一個呼び出すだけで終わる
2600Kの石かって、プログラミングしているけど、
ほんとCPUって劇的に早くなったな。
前のCPUだとWPF開発は重すぎてダメだったけど、2600Kだとどんなに重い処理をしても
CPU使用率5〜10%で済んじゃうからな
特にRibbonのUI作るのが楽になった
結構Ribbonって重いんだよ
メモリリークなんて常駐アプリでもなけりゃ無視だわ
ユーザーが使うもの作る立場でそんなセリフが言えるなら大したもんだ(´・ω・`)
>>152 > ということはavaloneditorみたいなやり方が一番いいということ?
一番良いというか、教科書的な作りだな。AvalonEditは。
最適化に不足はあるかもしれないが、WPF的におかしな方法ではない。
158 :
130:2012/05/03(木) 20:26:45.74
VS IDEはWPFで作られているんですよね?
つまり、最低でもVSと同じぐらいのものは作れるってことですよね?
C++など使わずとも
WPFかも試練がMVVMだとは言ってない品。
>>159 極端な話をすれば、好きな時に好きな場所に好きな図形が描けて入力が拾えればGUIの下地としては十分なの
VSほどの規模になるとGUIにじゃんじゃんコストかけても全体から見ると大したことないわけよ
VSは独自に巨大なGUIフレームワークを構築してその最下層にWPFがあるような形で
そもそもあんまりWPF関係ないの
>>162 それはWPF自体にも言えることだぞ
Direct3Dを使ったゲームと全く同じ
OSの仕組が変わって従来の2D表示もあれだしな
>>161 上に独自のフレームワーク乗っけてようがWPFである事は間違いないだろ。
MVVMであるのかは知らんが。
ただ何処までWPFなのかは知りたいんだが全部そうなん?
VSがMVVMなら、MVVMサンプルとしてソース公開してくれ。凄くありがたい!
ダイアログとかでMVVMに近いのはあるけど例の宗派のMVVMとはかなり違うよ
逆コンパイルすれば見れるけどカスタマイズされすぎて参考にならん
逆コンパイルって中間コードをILで見るのと違って
ソースコードに近い状態で見れる方法あるの?
>>168 ネイティブコードは無理じゃないかな?
アセンブラまでだと思う
.netの場合はいろいろ情報が入ってるので
難読化をほどこしてなければほとんどもとの状態になる
MVVMって話出るたびいつも揉めますね
別にバインドするとこだけViewModel用意しとけば事足りる話なのにね。
何か皆考えすぎてないだろうか?
172 :
デフォルトの名無しさん:2012/05/04(金) 13:40:08.34
データバインドは誰でもやるとは思うが、コマンドバインディングは労が多い割りに益が少ないんだよね
それと全てのイベントをバインドしようと思ったら怪しいライブラリのお世話にならないと行けないのがな
ボタン2つしかないソフトならそりゃいらないだろ
特に荒れるのは、プレゼンテーションモデル以外のモデルへ話が及んだときかな?
というか、そろそろマトモなWPFアプリが出てきてくれてもいいんじゃないかと。
やっぱ起爆剤として2ちゃんねるブラウザが一番良いかと。
JaneStyleなんて90年代のテクノロジーですよ・・・いつまで使ってんのと?
小規模なアプリなら作ったけどね
参考までに
1)mvvmまでいかなくてもコマンドパターンにしとけばテストコードは書ける
2)インストーラーはノウハウないとアプリもう一本作るくらいしんどい
3)ファイルやフォルダや色やフォントの各種ダイアログは用意しとかないとそこで詰まる
2chブラウザならコマンドパターンだろうなあ
シェルにLivet教系のMVVMを適用しても間違いなく余計に複雑になるだろう
2chブラウザほどコマンドが多くなるとメインウィンドウのVMにICommand並べるわけにもいかないから
動的にコマンドを登録してグローバルに管理するような仕組みにした方がいいか
MVVMはダイアログに使う程度だな
179 :
デフォルトの名無しさん:2012/05/04(金) 16:55:02.41
>>175 スマホやタブレット向けであるじゃん
そういうことだよ
180 :
デフォルトの名無しさん:2012/05/04(金) 16:56:09.79
<Sale>中国語版の書籍<IT|3D|NN|理系|上古漢語などなど>(格安) 280円より
http◎lang-8○com/194279/journals/1457398/
2chへのアクセス方法がすでに時代遅れだしなあ
datを差分取得()
新しいプラットフォームならともかく、デスクトップ向けで今から作るならまずは
膨大な機能を持つ既存のブラウザに追い付かないといけないわけで、全くやる気がしないな
WPFと関係ないところでの車輪の再発明にアホみたいに時間がかかる
2chブラウザって簡単そうに見えるけど、実際作ると大変なんだよなw
iPhoneレベルのものなら何とかなるけど、デスクトップアプリだと難儀で大変。
だから、Jane以来、まともなソフトが出てこない。
だいたいJaneは個人じゃないしな。
燃料がもらえるとこと機能(シェア?)争いしても不毛すぎるw
2ch の API がうんこちんちんなのが悪い
スレ表示にブラウザコンポーネント使ってるやつが山ほどあるけど
WPFで作れと言ってる人は、そういうのは2chブラウザとして認めないのだろうかという疑問。
プレゼンテーションモデルとバインディングによるUIの構築、っていう点については疑問の余地もあまり無いと思うんだけどなあ。
Triggerとか部品が足りないとか、単純じゃない個別ケースでのビューモデルの構造をどうすべきかとか、
WPFと関係ない部分をどう設計してビューモデルと連携させるのかとか、そういう事で考えることはあっても。
webbrawser使ってるのは認めても
複数レス選択できないlistboxは絶対認めないのは火を見るより明らかだな
MVVMを使った2chブラウザを見てみたい
というか新世代の2chブラウザを使いたい
C#スレの惨状見てると2chブラウザなんて誰も作る気にならないと思うけど
WPFは悪いものじゃなく、逆に使い次第では化けるFWなんだけどな。
気難しいから誰も近づからないという可哀想な子。根は優しいんだけどね。
そんなことを言い出したら
>好きな時に好きな場所に好きな図形が描けて入力が拾えればGUIの下地としては十分
だからな
VSやBlendみたいに莫大な金かけて凄いもの作れても意味がない
>>192 クラウドガールみたいにプレゼンテーションガール作ればいいんだよ
クラウドみたいにフワフワしてるからなぁ。
誰もこれぞwpf!って像がはっきりと言えないと思うw
化けさせたら意味ないんだよね
標準的なレールに沿った使い方で手間を書けずにそこそこのものが作れないとフレームワークとしては失格
画面デザインに別アプリ買えとか寝言こいてる内は普及しないだろう
ツール習得コストもタダやないんやで
WPFで2chブラウザとか言ってる奴はさっさと自分で作れよ。
お前がやらなきゃ2chユーザーの為にタダ働きなんて誰もしないぞ。
化けさせなきゃいけないのは目に見えてるからなあ
だったらどうせWPF使う意味ないからスレッド表示部分は最初からDirect3D使ってフルスクラッチしたほうが賢い気がする
WindowsPhone7用の2chブラウザがあるじゃん
正確にはWPFじゃないけど、似たようなもんだろ
あれをみて「コレじゃない・・・」と思うなら、それはWPFに幻想を抱いてるだけだ
WPFを使ってない人ほど、映画の中のような突拍子もないUIを想像してるよな。
実際に作られてるのはWinForms+αなUIでしかないのに。
(ただし、αの部分がWinFormsでは実装しにくいので戻れない。)
まあでも今からWPFで作るなら、
ビジュアルを最前面に押し出してネタ方面に走るくらいしか価値はないんじゃないかな実際w
でも、今がチャンスだと思うよ。
誰も新世代の2ちゃんブラウザを作ってないのだから。
一攫千金のチャンス。
人気が出れば、●収入やアフェリエイト収入が出来て
年収1000万も夢じゃないっすよ。
そう思うなら1000万払って誰かに作ってもらえばいいじゃないか。
夢がショボすぎてワロタ
WPF製のテキストエディタすらないんだから無理だろう
てかパソコン自体もう人気ない
商用製品ならある
個人で片手間に作れるレベルじゃないがな
WPFで2chブラウザ作っているところだけど、個人用に作るのが限界
汎用的に作ろうとしたら機能が多すぎる
一番の難問はセキュリティ、素人じゃだめだ
2chは無駄機能が複雑すぎる
皆が作れないからこそ、完成させた時にはお金がたくさん入ってくる。
Win8時代でもXAML+C#は現役だからな。作る価値はある。
金払ってまでブラウザ欲しがるとは思わないが
まぁ儲かると思うならやりゃいいんだ。なにも金儲けのネタ晒すこたないだろw
そもそもソフト作って儲けるとかいつの時代だよ…
カスタムコントロールの初期化ってどこですればいいの?
カスタムコントロールのデザインの仕方とかはMSDNに載ってるんだが、これだけはくぐってもわからなかった
自分のプロパティを設定するだけならコンストラクタで構わない
プロパティの値を読み取る必要がある(レイアウトに依存してたりバインドされてたりするとき)ならLoadedイベント
WinFormsならOnLoadメソッドをオーバーライドするところだが、
LoadedはルーティングイベントだからOnLoadedはなくて常にイベントハンドラを使うことに注意
>>214 イベントパンドラ―を使うってことはどこでアタッチすればいいの?
デフォルトの状態だと静的コンストラクターしかないからアタッチしようがないんだが
普通にpublicなコンストラクターを追加して、そこでやればいいのか?
カスタムコントロールじゃなくてユーザーコントロールのことだよな?
ならXAMLから追加すればいいだろ
カスタムコントロールなら普通にコンストラクタで
>>217 publicなコンストラクターは呼び出されないのかなと思ったら、普通に初期化できた
ありがとう
>>219 (追記)
FooTextBaseにたいしてFocuses()を投げても無駄だったし、IsFocuesbleをtrueに設定しても無駄だった
なんでFooTextBoxBaseと全く関係のないXAMLとFooTextBox.csも張り付けてるの?
>>221 とりあえず全部晒したほうがいいのかなと思って晒した
こういうやり方で解決した
http://codepad.org/Bi5T1p5x これでとりあえず動くようになったんだが、文字の入力が重たくて仕方ない
前の書き込みを見てるとOnRenderで描写すると重たいと書いてあったんだが、軽くするにはどうすればいいの?
(ただ、キャレットの移動自体は思いのほか軽かった)
そーいや、FrameworkElementから直で派生させてるサンプルって全然見かけないな。
>>211 どれぐらい売れてるかは知らんが、iPad用のブラウザかねだして買ったよ。
無料のに比べて激しく使いやすくなったから満足してる。
そう思うなら黙って作って儲ければ良いのでは
別に意見を言ったっていいだろう(´・ω・`)
2chブラウザ自体というよりも、洗練されたWPFアプリケーションのサンプルソースになら金を払ってやっても良いよ。
BlendがなければWinForm以下のアプリしか開発できない
それがWPF
でもWinFormなくなるんだろ?
>>223 君のパフォーマンスとの戦いはこれからだ!
マイクロソフト先生の次回作にご期待下さい。
ちぇ。
俺たちのパフォーマンスとの戦いはこれからだENDで打ち切りかあ
新規連載面白いといいなあ
>>223 GetVisualChild() と VisualChildrenCount つかえ。
235 :
219:2012/05/06(日) 01:36:15.44
>>223 どういう風に使えばいいの?
あと、もう一つ質問なんだが、結構な数のプロパティがあるんでFooTextBoxBaseにあるやつと同じ奴をFooTextBox追加するのは結構面倒くさい
でも、FooTextBoxに依存関係プロパティがないとかなり使いにくくなってしまう
何かいい手はないんだろうか
> FooTextBox追加するのは結構面倒くさい
標準的な方法ではどうにもならないね。
他にも、WPFは色々と定型的で面倒な部分が多いので
ソースコードの自動生成で効率化することをお勧めする。
238 :
219:2012/05/06(日) 02:08:26.39
>>236 それ使っても早くならなかった
なぜ遅いのかわからないのでプロファイラーを使ってみたら、別なところに原因があった
>>237 どうにもならないのか
現段階のWPFに実用性はない
"次回作" ではXAML周りも結構改善されてるし
そのうちWPFにも反映されるんじゃないかな
hogeがhogeBaseから派生してないとかなんかくらくらするな
作るの2年早いんじゃね?
Tips読んでも、Tipsに載っていないことやろうとするとさっぱりどうしていいかわからない
TreeViewにList表示することもできないWPFむずすぎる
ボタン配置するだけとかそんなんじゃないんだよ
XamlのTreeViewの属性に直接データ書き込むなんてするわけ無いだろ…
こんなチュートリアル何の参考にもならない
まずわかんないのが、プレフィックスとか言うやつだよ
x:Typeとかx:Keyとかなんだよこれは
それにDataContextにVM渡しているのに
Binding設定でまったくプロパティが表示されないってどういうことだよ
Vとロジック並行作業できるって、VのデザイナーがVMのソースコード見て
やらなきゃできないのか?だったら分担になってないだろ
もうわけわかんね、WPFやめる
よし一緒にアンチWPFやろうぜ
たしかに
おまえそのサンプルコードどっかのサイトからコピーしただけで
実際にどう使うか考えたことあるのか?
っていうのはよくあるね
でもタダ情報だしそんなもんだね
洋書のpro wpfは結構使えるよ
TreeViewなんて殆どの場合、コレクションをデータバインディングするだろ
直接データ書き込むって使い方をするケースなんてほとんどないだろ
それで済むならTreeViewとか使わないでボタンとか他のコントロールでやるだろ
CodeZineとかほんと糞みたいなコード貼ってるよな
しかもログインしないと見せれないって、それでみたらこのありさま
どこの世界にTreeViewでTreeViewItemをXamlに階層構造そのままに直接書き込むんだ
これみてなるほど、非常に参考になりましたなんて言うと思うんかカス
他の個人のサイトも同じようなもんだよ
HierarchicalDataTemplate使って入るが
データバインディングするのに、VMでDataContextに直接node入れたり
TreeViewのItemSourceに直接入れたり、そんなやり方常識的に考えてやるわけないだろ
なめんな
>>244 へーpro wpf、アマゾンでみたら中身みれるんだなw
買わなくていいじゃんw
>>244 ちらっとみたけどさ、msdnと同レベルぐらいの内容だったぞ
xmlnsの意味、x:Nameの意味をちらっと説明したら
もう次はプロパティの説明になってるし
俺が知りたいのはさ、こういうやつだよ
x:Type x:Static のマークアップ拡張機能
x:Code 組み込み XAML 型
x:Key ディレクティブ
x:Member ディレクティブ
x:Members ディレクティブ
これらがわかんないと、応用何もできないだろ…
あと、local:とかもどういう意味かわかんないしな
こういうのを説明している書籍もサイトもない
みんなどうやって使いこなしているんだ
ほんと尊敬するわ
local: とかは自分で勝手につけてるものだから別に
abc: だろうと aiueo: だろうと構わないんだよ
x: に関しても、XAML名前空間を示す通例として広く使われてるだけで
y: とか z: でも(それに統一していれば)それで動く
そこらへんはWEBのあちこちのWPF講座とか読んで回ればすぐわかるでしょ
アマゾンでプレビューできるPro WPFにも書いてある
>>238 そこまで書いたのなら、遅かった原因ぐらい書いとけよ・・・
そろそろ洋書ならまともな本の1つや2つで出るだろ・・・
出てないのか・・・
洋書読める奴はわざわざ2ch掲示板なんかに来ない
>>248 自分で勝手に付けられるのか
どうりで検索しても出てこないわけだ
pro wpfにも書いてたな、msdnのtipsより多少濃い内容かもしれない
それにしても10代の頃のほうがパパっと作りたいもの作れてたな
知識増えるごとに、デリゲートやインターフェースやデザインパターンなど意識して
手が動かない時間のほうが長い
それXMLの知識
XMLだと常識なのか?
C#やる奴はC++わかってて当然みたいな感じか
新規の人向けじゃなくて、他の言語から移行する人向けのサイトがほとんどだな
説明するまでもないだろうみたいなノリで書いているから
5時間かけてWPFについていろいろ調べたのに全く頭に入ってない
できるのは、ボタン作成してポチポチ押すだけw
>>254 そこも見たけど難しすぎるんだよ
x:Nameとは何か?って人に
属性構文、プロパティ要素構文、マークアップとか言われてもさっぱりなんだわ
あれ読んで理解できるレベルのひとは、そもそもx:Nameとは何かなんて思わないでしょ
本末転倒って感じなんですよ
一応ざっくりWPFの概要は読んだからそれらの単語は専門用語ってわかるけど
初心者が読んだら、属性構文は専門用語の和訳なのか、単なる日本語的な意味なのか判断つかないんですよ
やっぱり上級者の説明はわかりにくい、初心者が回りにいないからわからないんだろうね
そこらへんはどのWPF本にも書いてあると思うが
wpfで続けるつもりがあるならエッセンシャル読むことをすすめるよ
立ち読みでもいいし
wpf作ったリーダーが「なぜこんな設計、構造にしたのか」とつらつら書いてるから
javascript使える程度の知識があればわかるように書いてる
それとライブラリの使い方でわかんないことがあったらilspy使うことだね
ソース(じゃないけど)見ればあっさり解決することもある
そうじゃないときは…想像力働かせながら検証あるのみだな
Metro手出してる人おる?
WPFとどのぐらいかぶってて、どのぐらい違うのか知りたい・・・
名前空間、コントロールの違い、タッチゼスチャーなどの扱い全体的なUIの構成は違うとして、その他の部分は大体同じようなものと考えてていいのかしら・・・
ちょっと弄っただけだけど
await、asyncで投げっぱなしってのが強烈だったな
その他はだいぶノウハウを流用できそうだったけど
たとえばimageにウェブ画像を読み込むとか
「このアドレスで適当に読みこんどいて。終わっても通知しなくていいよ。
失敗したらこの通り処理しておいて」でぶん投げ
慣れたら楽なんだろうな
ILSpy丸見えじゃないか
しばらくこれで遊んでよう
ついでにSharpDevelopってのも落としたけど
こっちのほうがVSより軽いからいいな
WPFも開発できるし
262 :
219:2012/05/06(日) 12:27:28.34
>>241 そうしたいんだが、そうするとBorderの中に描けない
>>249 ITextRenderのGetHeight()が呼び出されるたびにTextFormatter.Create()を呼び出していたの原因だった
>>261 そいつWPFで動いてるよ
AvalanEditダウンロードしてソース見てみたら、ICSharpCode.AvalonEditがWPFで書かれてる
ILSpyおもしろいな
SharpDevelopみたいなすごいソフトがオープンソースで作られているのに
糞みたいな有料ソフトが難読化されてたりw
>>263 その辺は目指す方向と背景が違うので比べても・・・
勝手にソース使われるのいやじゃん
フリーでだってちょっと見た目変えて「おれが作った!」って公開されたら凹むぜ?
それと難読化技術も調べてみたらおもしろいよ
おれは編集可能までもっていった段階でやること多すぎるのわかって投げたけど
確かにコピーされるのは嫌だけど
コピーされるぐらいのソフトを作れるわけないからどうでもいいな
ILSpyにはそういう機能ないけど、作った人は
直接編集したり、ソース吐き出させたりしまくってるんだろうな
あまり知名度の高いソフトはコピーできない
コピーは一瞬で、あとはSEOで勝てば自分のソフトになる
難読化は大事だよ
>>262 普通は
・描画用の(内部)コントロールをユーザーに指定させたりしない
・描画用の(内部)コントロールにHogeBaseという命名はしない
>>255 別にxaml直で弄れんくてもプロパティエディタ?からほとんど設定できると思うんだが。
VMのをバインディングビルダで表示したいときは、デザイン時インスタンスを設定して
ないと出てこないと思った。
まー、動かせば分かってくるってのもあると思うし、とりあえずワカランのはほっとけばいいのに。
270 :
219:2012/05/06(日) 17:23:57.57
>>268 なるほど
内部のコントロールをScrollViewerに追加するにはどうすればいいんだ?
コード内からnew FooTextBox()とやって、ScrollViewerのContentに代入してもうまく行かないんだが
ほかのコントロールみたくChildrenプロパティに追加することもできないし
> コード内からnew FooTextBox()とやって、ScrollViewerのContentに代入してもうまく行かないんだが
普通はそれでうまくいく。
ダメってことは何か変なことしてるんだろ。
どうも基礎が全然できてないようだから
WPFの本を1冊読むか、MSDNのWPFの解説を一通り読んで来い。
MeasureOverride と ArrangeOverride を実装してないからレイアウトサイズが 0 のままとか?
Snoop 使って期待通りのプロパティ値に設定されているか確認してみれば?
>>273 調べてみたらレイアウトサイズが0のままだった
一つ不思議なんだが、コードから追加するとうまく描写されなくてXAMLから追加するとうまく描写されるのはなんでなんだろう
あれ、アバウトなように見えても
ちゃんと作法通りに書かないとレイアウトがアップデートされんのよね
文書化されてないから公式サンプルの手順通りにするしかないけど
276 :
219:2012/05/06(日) 19:46:25.86
すまん
コードから追加すると表示されないのはどうも勘違いだった
先ほどやってみたら、うまく行った
>>269 VMの名前空間を設定しているのに何でプロパティ名が出てこないの?
app.csでVのDataContextにVM渡しているから一応実行時には
バインディングできているけど、xaml編集時には出てこないから面倒
デザイン時にインスタンス化って、xaml内でコード書いてインスタンス化するってこと?
C#だと普通usingディレクティブさえ設定すれば、プロパティ参照できるけど
xamlだとそれができないってこと?
Xamlの仕組みがさっぱりわからない
xamlはbamlに中間言語にコンパイルされてInitializeComponentでインスタンス化されるんだよ
そこらへんエッセンシャルに書いてあるだろ
たしか
「ダミーデータが出てないと作業できねぇよ!」ってならグローバルにすりゃ読み込むよ
リボンのバインディングと同じだな
「modelをグローバルにしたらmvvmがうんぬん!」なんていうなよ
デザインが終わったら書きかえればいいだけだろ
全部お膳立てされてないとできないっていうならformsに帰るんだな
>>278 グローバルってどうすんの?
リボンって頭につけるのしか浮かばないんだが
>>278 あとインスタンス化についてなんだが
俺が聞きたいのは
>VMのをバインディングビルダで表示したいときは、デザイン時インスタンスを設定して
>ないと出てこないと思った。
デザイン時にインスタンス化したらなぜ表示できるのか
そして、インスタンス化しなければ他のクラスのプロパティを参照できないのはなぜかが知りたい
聞く前に自分で調べたのか
調べたよそりゃ、もう何時間も調べてる
一応
<Prefix:object x:key="objectname"/>
これをxamlファイルに書き込むことで
staticResouceとして参照することはできたけど
それ以外に方法があるんでしょ?
やれやれだな。d:DesignInstance をググレ。
普通につながる
うそでしょ〜
繋がらんな。pingすら飛ばん。
繋がるよ
一時的に、低学歴低所得にのみ見えるサイトになってます。
>>284 bb.exciteからフレッツ光でアクセスしてるが、繋がらねえ
見えてるよ
見えてる人は、本当ならば、相手方のIPアドレス書いてみろよ。
もし、本当に見えているなら、落ちているのはDNSだけなのかも……
でも、多分、ふしぎな力で
>>289状態になっていると思うけれど。
低学歴ニートだが見れない
ニートは低所得ですらないからな……
HTTP/1.1 502 DNS Lookup Failed
Content-Type: text/html; charset=UTF-8
Connection: close
サーバー: ntt.setup
Address: 192.168.1.1
*** ntt.setup が www.code.project.com を見つけられません: Non-existent domain
192.168.1.1 は僕のIPアドレスです。
勝手に使わないでください。
はい
192.168.*.*はプライベートアドレスで予約されてるから
インターネットにパケットは送出されないよ。
おそらくそのIPアドレスはネットワーク管理者が
内部LAN用に割り当てている物だから、外部的には
プロバイダーが各家庭に割り当てたグローバルIPアドレスに
変換して外部のネットと通信してる。
だから僕のパソコンのIPアドレスも192.168.1.1だけど
あなたのパソコンのIPアドレスと競合する心配はしなくて良いよ
300 :
デフォルトの名無しさん:2012/05/07(月) 21:43:43.46
PG,SEなら誰でも知っていることを得意げに書かんでも・・・
ずっと俺のものだと思って生きてきた
>>297の元ネタって何年前?
10年以上前だよな
303 :
デフォルトの名無しさん:2012/05/07(月) 22:12:50.17
似たようなネタだと、My Documentsのパスを直にネットに貼る奴
ユーザー名が本名で釣果が凄いことに・・・・
10年前は、ニートという言葉も無かった気がする。
普通に、ロリ、ヲタ、プーって略さずに言っていたよな。
プーという言葉があったんだから
ニートなんて呼び変える必要なかった
やっぱり、あれじゃない?
プーさんだとキャラかぶるから。
プーの方が名称として優れている。
響きかが滑稽で恥ずかしいことだと明確に伝わる。
ニートだとneat?小綺麗ってこと?みたいに錯覚しやすいせいか
ことの重大さがわからずこじらせる奴が続出する。
ヤフオクのマイページURL貼るネタもあったな
>>308 10年たってないのか
改めて読み直すとなんか釣りっぽく見えるなw
JPNICの存在を知ってるくらいには知識があるのに
「192.168.0.1は〜〜」というのはちょっと不自然さを感じる
IPアドレス絡みだと↓のネタを思い出す。
「私のIPは202.423.387.689なので、明らかに違います。」
>>311 間違ってるのはわかるけど
どの辺りがおもしろいかわからん
FooTextBoxをWPFに移植してみたんだが、CPUの負荷がWinForm+Direct2Dを使った奴より高くて悩んでる(WPFだと20%を推移してるんだが、Direct2Dだと10%前後で済んでる)
OnRenderではなく、DrawingVisualに描く方法なら低くなると思ったんだが、CPU負荷の点では差がなかった
CPU負荷を落とすにはどうすればいいの?
>>313 まず、WPFにDirect2Dって概念はない
それにお前は質問するだけで質問には答えてやらないのはなぜだ?
お前でも答えられる質問はいくらでもあっただろ
質問しかしにこないのか?
そんなやつに答えてやる義務はない
>>313 それだけの情報だと何とも言えない。
WPF Performance Suite を使ってアプリケーションイベントの CPU 使用率を調べてみたら?
ソイツだけ見ただけで誰か分かるよなw
WPFを止めるのが最善
正解が出てしまったな
>>314 すまん
あんまり詳しくないんで答えるのもあれだと思ってた
>>315 それ使って調べてみた
レタリング:15%
レイアウト:3%
その他もろもろ:合計で2%
レタリングの負荷を落とすことってできないのかな
>>319 AvalonEditと比べて性能はどうなってる?
既に同程度の性能が出てるならこれ以上は無理なので
>>317 しかない。
322 :
319:2012/05/10(木) 15:45:47.07
>>320 AvalonEditの方が早かった
>>321 例のツール使って1行ずつスクロールさせてみたけど、再描写している範囲は変わらなかった
なんであっちの方が早いんだろう
コードは読んでないから分からないけど AvalonEdit は OnRender を最適化してるんじゃない?
事前に準備できるものは OnRender 前に構築、一度構築したらキャッシュ、一度描画したらキャッシュ、重いメッソドコールを一回にまとめるとか。
AvalonEditはWPFの流儀に沿った書き方をしてるので
WPFのレンダリング最適化機構がちゃんと動作してる。
>>319はGDIのプログラムのような書き方をしてるので
WPFの最適化機構が全然働いていない。
つーわけで、速くしたかったら
WPFの解説書をよく読んで、AvalonEditを参考にしつつ1から書き直せ。
325 :
319:2012/05/14(月) 16:02:15.92
OnTextInputをオーバーライドしただけだと、IMEのウィンドウが外に出てしまう
このままじゃあ、使い物にならないから、オンスポット入力に対応させたいんだが、どういう風にすればいいのかさっぱりわからない
くぐっても出てこないし、avaloneditorもそこらへんは特に何もしてなかった
MSDNならあるだろうと思い調べてみたが、IMEに関するサンプルは何もなかった
どうすればIME対応にできるんだろうか
>>324 なるほど流儀に従っているから早いのか
もう一度参考にしつつ書いてみる
326 :
755:2012/05/14(月) 16:03:55.48
>>323 ざっと見たが、行を構築してキャッシュしていた
でも、今作っているやつも一度構築した行は再利用している
やってることはほとんど変わらないんだが、なんであそこまでCPU負荷が違うんだろう
>>325 > IME対応
オイオイ、一番重要な部分がまだだったのか。
てっきりIME周りは実装済みかと思ってたよ。
WPFはIME関連の機能を持たないので、TSFを直接使う必要がある。
TSFのドキュメントは不親切で、
まともなサンプルは皆無、それでいて実装すべきコードの量は膨大。
WPFのレンダリング如きに苦戦してるようじゃ、到底無理だと思うけどなぁ・・・
もうかまうなよ
329 :
319:2012/05/14(月) 19:12:17.38
330 :
デフォルトの名無しさん:2012/05/14(月) 21:33:21.17
XAMLにボタンとユニフォームグリッド(100X100セル)の記述しかなく
ボタン押下でデータをよみ、グリッドのセルに動的にコントロールを生成する場合
MVVMのようにコードビハインドに一切記述せず実現することは可能なんでしょうか?
> XAMLにボタンとユニフォームグリッド(100X100セル)の記述しかなく
> コードビハインドに一切記述せず
XAMLもコードも書けないなら詰んでるじゃないか
332 :
デフォルトの名無しさん:2012/05/14(月) 22:00:08.31
ウディタの新バージョン「ウディタ2.00」が公開されました(2011年10月27日)
「WOLF RPGエディター」とは?
・高度なRPG開発が可能な、完全無料のゲーム作成ツールです。
・雰囲気はRPGツクール2000に近い。RPGツクール2000で自作システムを作りこむ際に
不満だったところがいろいろ解消されていて、かなり自由度が高いです。ただし
その分初心者には難しいかも。すでにツクール2000で自作システムを組むのに
慣れた人やRPGツクールでは物足りないけどプログラミングはちょっとという方にお勧め。
・作成したゲームは自由に配布したり、コンテストに投稿することも可能。
また本ソフトを持たない人でもプレイ可能!ファイル暗号化も完備!
■作り方しだいでパズル系やカードゲームやシミュレーションやシューティングや
アクション、RTSや他なんでも作れます。
■また他の人がネット上で公開している「コモンイベント」を組み合わせて利用すれば、
自分では開発が難しいゲームシステムも容易に実現することができます。
333 :
デフォルトの名無しさん:2012/05/14(月) 23:02:00.52
>>331 そうなんですよ。
V側にデータを表示するためのリストボックスなどのコントロールすらない場合などは
MVVMは破綻しますよね?
実現したいのは横軸に日付3か月分、縦はデータにより増減する行のグリッドに
数日間かかるプロジェクトのコレクションを列またぎのスタックパネルを動的に配置して内容を出す事
(スケジューラーみたいな画面)をやりたいのですが、
コードビハインドに書くしかないかなと思ったわけです。
そういうのはカスタムコントロールを作るのが筋だ
その上でMVVMしたいなら自作コントロールを画面に貼って自分で定義したプロパティをバインドする
カスタムコントロールの実装は当然コードビハインド(というか普通にコントロールの動作の実装コード)
なんかmvvmって言葉が実体を伴わず独り歩きしてる感じだな
1)m v vm それぞれどれにも依存せずテストコードが書けるようにする
2)それを実現するように「すべてを」書き換える
Vを書き換えず「MVVMは破綻してる」とか言われても困る
MVVMってのは主にModelとViewの間にVMを挟むことでViewをなるべく馬鹿にすることで、ドメインとUIのぶんリヤテスト容易性というメリットを得るためのもので、それが成り立たない領域にまで金科玉条のごとく持ち込むものではないと思うよ。
スケジューラみたいな画面ならMVVM的なものに落とし込めそうな気もするけど。
>>333 Infragisticsのスケジュールコントロールとか使った方がよっぽどよさ気じゃねえ?
カスタムコントロールの動作はコードビハインドにプレゼンターとして実装する
データはコントロールのプロパティにViewModelをバインドさせるから、このケースだとMVPVMになるのだろうな
TreeViewItemにTextBoxを載せて、
・TreeViewItemがフォーカスを取得した時にTextBoxにフォーカスがくるようにしたい。
・TextBoxがフォーカスを取得した時にTreeViewItemを選択状態としたい。
としたいのですが、どのようにしたら良いでしょうか?
TreeViewItem.GotFocus で子のTextBoxのfocus()を呼び出すようにすると、親のTreeViewItemにも
イベントが発生してしまいルートアイテムのTextBoxがフォーカスを取得してしまい困ってます。
FocusManager.IsFocusScopeじゃね
知らないけど、e.Handled = true じゃダメなの?
343 :
340:2012/05/16(水) 00:15:05.34
まもなく、WPF2ちゃんねるブラウザが誕生するよ。
2ちゃんねる界に革命が起きる!
>>339 そのページはわかりやすいね。
けどtsfappは、リンク先にも書いてあるけど、
Win32のテキストボックスコントロールをTSFで拡張する例であって、
WPF用テキストエディタを作るにはちょっと頼りない気がする。
肝心な部分はテキストボックスコントロールの内部実装を利用してて、ソースコードが見られないから。
DataTemplate内で使われてるパネルを独自のものに置き換えりゃいいんじゃねーの?
フックがどういうことを想定しているのか不明だが、
少なくともDataTemplateが使えなくなる事は無い。
>>346 ダウンロードして10階層ぐらいにしてみたけど重くないぞ?
変なことしてんじゃないの?
>>347 んーレイアウトのロジックだけ別のをインジェクトするとか的な意味なんだが、パネルを変えればいいのかな。Canvasとかに。
その場合はコンテンツを変更した時に一番下のから順にサイズ測ってセットとかすればいいのかな・・・
>>348 そのExpressionTreeTemplates.xamlのりソース定義をGrid.Reaourcesにコピーして試してるんだが、だからかしら・・・
(x,y)=>x+(y*21)+x+(y*21)+x+(y*21)*(x+(y*21)+x)+(y*21)+(y*21)+(y*21)+(y*21)+(y*21)+(y*21)
を表示させるとGridのレイアウト時とかに5秒以上かかる。
>>349 > レイアウト時とかに5秒以上かかる。
こっちでは0.01秒しかかからないぞ。
レイアウト中にGCが発生すると0.08秒になったが、5秒はおかしすぎる。
>>349 やってみたけど
>>350と同じく問題ない。
DataTemplateはWindows.Resourceの中に突っ込んでるけど。
CPUはCorei5。
>>345 そうなんだよな
そこら辺の部分は全部internalだから全部自分で書かないといけないという…
>>353 実行してみたけど、特に問題なし。
コンパイルに150msぐらいかかっててテキストボックスの入力がもたつくぐらい。
とりあえず、%d じゃなく、{0}。
>>354 あれーなんでだろう。
(x,y)=>1+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)+(x+1)
といった感じに後ろの+(x+1)を貼り付けを繰り返してると応答が返ってくるまでにどんどん時間がかかってく。上の状態だと最後の貼付けでは20秒ぐらいかかってた。
Corei7 820でGPUはしょぼいが。
上のをそのまま貼り付けると10秒。その後に+(x+1)を増やすと1分かかった。その間CPU使用率が13%のままになっている。終わると0になる。
%dは最近F#触っててそっちの癖でやっちまってた。すまんそ。
C2Qでも一瞬だ
壊れてるんじゃないの
.net3.5だと遅いとか
359 :
349:2012/05/17(木) 09:30:24.99
別のノートで試したらデバッガーで動かして40個以上コピーしても一瞬だね(´・ω・`)
ノートもCorei7だけど。
環境のせいとしてスルーします。なんかある意味貴重な環境なのかしら・・・
Blendすら使い方の怪しいWPF初学者ですが、どのUIElementにも使えるMouseEnterしたら左右にシェイクするというアニメーションを作ろうとしています。
ただで配られてたWindowsPhone用のBlendでStoryBoard作ってそれをコピペでVSにはっつけて試そうとしてるんですが、デバッグ実行して初めてそんなプロパティねーよとか言われたりしてます。
Blendで作ったものはTargetNameとか指定されてて、ちょっとやりたいことにそぐわない・・・
いまいちまだどれが対象になって、プロパティのパスはどうでとか理解しきれてないんですが、より手早くその辺があってるかなどを確かめるすべってありますか?
コンパイラが目的とするものを知らないのに、どうすればいいかまで教えてくれるわけがない。
インテリセンス出せるぐらいだったらわかるでしょ。
blend使うメリットって手で書くより速く正解教えてくれることなんだから
「ふつう」の体験版でも使えばいいだろ
364 :
デフォルトの名無しさん:2012/05/18(金) 09:27:44.60
wpfって何も考えずにDrawingGlyphなどで描写すると遅くなる・・・
AvalonEditで使われているコンポーネントにDirect2dだと1回の呼び出しで済むけど、
WPFだとグリフ一つにつき8回も呼び出す
おまけにDirect2Dのようにまとめる事がない
と書いてあった
即時モードでレタリングできるようにするか
Direct3D10やDitect2Dと簡単に連携できるようにしてくれ
今のままじゃあ使い物にならない
WPFを低レベルAPIかなんかだと勘違いしてるんじゃないの
いい加減うざいから完成するまでこないでくれ
>>364 .NET 4.5でWindows7より前のOSが非サポートになる事に伴って
そのあたりも改善されるかと期待してたけど、
何も変化はないようだね。
とはいえ、いつまでもDirect3D9のままってわけにもいかないだろうし、
いずれ改善されるんじゃないかな。
> Direct3D10やDitect2Dと簡単に連携
標準で用意してほしいとは思うけど、
連携用のライブラリを一度作ればいいだけじゃん
既にDirect2Dを習得してるなら簡単でしょ
Direct2DはWin7からだったっけ?
wpf ってmargin(left, topのみ)で絶対配置してても微妙に座標がズレたりするんだな。
ナニコレ・・・
丸めだろ
>>366 そうなることを願いたい
metroの方は比較的簡単にDirect2Dと連携できるんだけどな
>>367 サンプルあったのか
ちょっと試してみる
ありがとう
>>369 vistaから
テキストエディタにDirect2Dてw
文字入力やスクロールでカクカクしてなきゃいいんだよ。
以前、行番号表示したくてテキストエディタコントロール作ったが最適化して実用程度にはなったぞ。
行番号表示とか矩形編集、シンタックスハイライト、スペースやタブの表示といった機能がかけていたので、作ってみた
http://kie.nu/aLB >>373 Direct2D使わないとCore2Soloを積んだネットブックでひどいことになるのよ
ためしにCore2Soloを積んだネットブックで動かしてみたら、カクカクはしてないんだが、CPU使用率が天井に張り付いてて笑ったw
あと、半角スペースを表示できるようにしてみると、Core2DuoE8400+HD5770というスペックでもめちゃくちゃ重たくなる
>>374 これ、もうDirect2D版?
7 だと表示されたけど、2003 Serverで動かしたら真っ白だな。
WPF使って高速に描画するならDrawingほにゃららを使うのがいちばんよいんだっけ?Direct2Dとかは除いて。
で、それはSilverlight,WP7、Metroにはないんだっけ?
パフォーマンスよりも、いまさらWinFormsには戻れないよ。WPFというより、XAML+C#が主流です。
WinFormsの方が作りやすい
コントロールに値代入してくのもうめんどい
一度やったパターンだとwpfの方がラクな気もしてきたが、
ハマると100倍時間かかる。。慣れてないだけといえばそうなのかもだが・・
>>382 RequestLock() してない。
385 :
382:2012/05/19(土) 13:06:12.70
>>384 デバッカーで例外が出る時の状況を調べたんだが、すでにロックされてた
386 :
382:2012/05/19(土) 13:17:00.08
すまん。
間違えて別のメンバーを渡していたのが原因だった
でも、今度は別の問題が発生した
property.GetValue()でプロパティの値を取得してGUIDを取得しようとしてるんだが、guidを取得する段階でInvaildCastExpectionという例外が発生してしまう
guidを取得するにはどうしたらいいの?
http://codepad.org/x3s7Hx7w
実行不能なコードの断片なんか出されても回答のしようがない
問題を再現可能な、最小の実行可能なコードを出せ
>>389 多分、これで合ってると思うが…
間違ってるってどういうこと?
>>393 ありがとう
参考になった
もし、差支えなければ、コード全部アップしてくれ
車輪の輪の再発明はもうこりごりだ(笑)
そういや、コード読んで気になったんだが、VARIANTはどこの名前空間で定義されてるの?
VARIANTって.NET Frameworkにはない型のはずなんだが
あと、_servicesはどういう感じでインスタンスを作ってるの?
PROPVARIANTはともかく、VARIANTはObjectじゃないのか
>>396 くぐったら、それができたんだが、objectだとどうもGUIDが取得できない
>>396 2年ぐらい前に作ったやつだから良く覚えてないけど、
>>398が言うようにobjectだと正しく取得できなくて、色々調べた挙句
ランタイムの定義をぶっこ抜いたらVARIANTだった、と記憶してる。
ランタイムの定義がobjectではなくVARIANTだから無理なんだろうな、と結論づけた。
VT_I4なら、System.Int32とか整数系の何かに一度キャストしてからでもだめなん?
>>400 試してみたら普通にいけたわ。
特に関係なくぶっこ抜いたらVARIANTでそのまま使ってただけだったかな?
>>400 お、ホントだ
試してみたら、普通にできた
ある料金システムをWPFで開発することになったで、
デザインパターンはMVVMにしようということになったんで、
Livetで開発しようとしていたんだけど、いつ迄たっても、ver0.99のまま。
怖いんで、やっぱりMVVM Light ToolkitかPrismにしとこうかと悩んでます。
完成後の8年後もメンテするかもしれないし、メジャーな方が良いかな。
MVVMパターンの勉強は、主にU氏のドキュメントとかサイトで勉強したんで、
どうしたものかと思ってます。
社内的な言い訳で言えばMVVM Lightのほうが説得力が増してよいんじゃないかなぁ
それ以外だと好き好きでどうぞとしか言いようがないが。
Prism使うかどうかはともかくPrismのドキュメントは必読
U氏のやつより遥かに分かりやすいし、一人よがりな意見じゃなくて
こういう場合はこっち、こういう場合はそっち、みたいな感じで書かれててためになるよ
オープンソースだし、コード見てもそんな複雑なことしてないから八年後でも十分メンテできるだろう。
でも八年後だとMetroも飛び越えて、さらに違うアーキテクチャがメインなってるかもしれんが。
XAML系、生き残ってるといいが・・勉強させといて捨てたら電凸!
XAML系は生き残ると思うよ。ただし八年後WPFがオワコンの可能性は高い
ネイティブアプリがオワコンだろ
ネイティブもASP.NETベースに統一されて終わり
ネイティブって.net framework 自体ネイティブじゃないとも言えるが、
もっと広義でデバイスで直動くもの全般がって意味かw
WPF並みの表現力があってHTML5+.NETでクライアントもWebもいけるフレームワークが出たら
XAMLなんか一瞬で無かったことになるのに
XAML←これは読み方はザメルでいいの?
ガッシャ
マジレスするとクスァーミル
>>410 ターゲットとするプラットフォームでしか動かないものをネイティブと呼ぶのが最近の流行り
もっと言えばAndroidとiOS両対応でないものがネイティブw
420 :
デフォルトの名無しさん:2012/05/22(火) 09:47:24.60
D&Dはオブジェクトの参照を取得できるのに、クリップボードのカスタムデータはシリアライズされたデータのコピーした取得できないのね。
同一プロセス内でのみしか使用できなくて良いから、なんかうまい方法ない?
D&Dってコピー&ペーストの一つの表現方法だと思ってたけど、違う思想なのかね?
同一プロセス内で良いならクリップボード必要ないだろ…
>>422 もっともだw
421も文章変だし、眠くて頭がいかれてきてるらしい。
すまん。ありがとう。
市販のデータグリッドってインフラジスティックスとグレープシティのどっちがおすすめ?
表示系はインフラ、入力系はグレープシティという棲み分けだね
海外製コンポーネントは入力に気を使わない(というか使う必要ない)ので
インフラのコンポーネント使ってなんか入力しようとすると違和感ある
グレープシティは国内製だけあって、細かいとこ気が利いててかなり嬉しい
GrapeCity のwpfの入力系は今はランタイムフリーだけど、
次期ver で突然配布ライセンスも必要になったりしそうで・・・。web系はそうだったし。
428 :
424:2012/05/23(水) 10:57:08.77
レスありがとう
NetAdvantageのがComponentOneより
WPF最適化すすんでそうな感じには見えますね
旧版との互換性とかの兼ね合いあるんだろうけど
入力はどっちにしろこだわるならInputMan使った方がよさそうな
>>428 クラスライブラリとして見た場合、ComponentOneのが判りやすいだろうね。
NetAdvantageはWPF出始めの頃からあるけど、その分クラス構造洗練されてなくて
気付いた頃には遅すぎたから、変更できずにずっと引きずってるらしい。
まぁそれでもいいツールだと思うよ。
>>427 デスクトップアプリ用だから、Formsと同じくランタイムフリーは変わらないと予想
GrapeCityのコンポーネントはWindowsのバージョン上がるたびに動かなくなるんじゃない?w
最近使ってないけどWOW64で動作しないのが多いのには辟易したぜ。
>>430 WOW64で問題なかったけど、バージョン上がるたびにいろいろあるから厄介だ。
開発者ライセンスにしてほしいわ
アクティベーションあるけど、ネットワーク同じなら1ライセンスで二〜三台くらいまで通るよ
インフラさんが凄いのは開発者ライセンスで、同じユーザーなら所持するPC何台入れてもOK
しかもソースコードまで提供してるのってのは大したもんだね
ActiveReports for WPFはまだなのか
出る予定あるの?問題はプレビューとかだけだし
437 :
デフォルトの名無しさん:2012/05/28(月) 06:04:07.88
WPFってあんま普及してなさそうだけどなんで?
重いから
・既存のFormで済むことが多い。
・遅かった。
・前はメモリリーク起こしやすかった。いまでも?
・柔軟なこと出来る分、複雑な処あり。
などなど。
Formの開発手順を継承できないのがいちばん痛い
クライアント寄りじゃなくWebApp開発者向けの設計になってるし
そもそもコードビハインドなんて言葉Form開発者は使わない
少しずつxaml系で開発始めるってとこは出ては来てるぜ。wpfっていうか、系な・・・
コールドブートが遅いんだよねぇ
うちの5年物のPCだと10秒はかかる
せめてスプラッシュくらい数秒で出ればいいのに
10秒たってから表示されてすぐ消える
意味ねぇ
それ何のアプリだよ。自作?
5年ものとはいえ10秒はないわー
正直アプリの作りを疑ったほうがいいと思う。
すでにモジュール読み込んでるVSでデバッグするのとちがうんやで
インストーラー作って他のPCにもっていってやってみたらええわ
SSDがふつうにならん限りなんともならんと実感するや炉な
スプラッシュスクリーンぐらいC++で作ってそっちからWPFアプリを起動すりゃ済む話だろ。
もしくはスタートアップに何もしないWPFアプリ登録しとけ。
SplashScreenクラス使えなさすぎ
ビルドアクションで使うにしろSplashScreenクラスは簡易すぎて
自分でスプラッシュ用Window作った方がいい
Direct2DとWPFを共存させた適当なサンプルらしきものを作ってるんだが、入力した文字がなぜか表示されない
Test2のコンストラクターでIDWriteTextLayoutを作って表示させるとうまく行く
(でも、それだと入力した文字を表示することができない)
どうやれば、入力した文字が表示されるようになるのか教えてほしい
http://kie.nu/bRC
このまえ完成させただろう
>>451 DrawingContextを使うとどうも遅いんでDirect2Dに変更することにした
またお前か
どうも邪魔みたいだから移動するわ
板汚してすまんかった
意外とできてそうだな。タブのxボタンの位置が気になるw
458 :
455:2012/05/30(水) 16:20:17.32
UI部分は出来るだけコードと分離してXAMLを外部にだして
好きなように改造してもらうようにしたいです。
>>455 NG機能強化してくれたら即乗り換える
単語やスレ選択して右クリックでNGダイアログを出しNGの詳細オプションを指定できるような感じにしてくれ
特定のスレに粘着している一般的な単語を使った荒らしなどをスレ指定して簡単にNGしたい
Jane系のNGExは手間がかかりすぎる
D3DImageにDXGIサーフェイスを流し込む形で描写したら、CPU負荷が半分以下に減ったw
WPF遅すぎ
専ブラは┣形の UI から進化しないのか
462 :
455:2012/05/30(水) 20:38:19.33
>459
まだ作り始めたばかりなので...
(とりあえずの画面とデーター取得まで入れただけで、まだほとんど張りぼてです。)
申し訳ないです。少し普通の機能が出来てからゆっくり考えます。
基本的には単体で高機能化を目指すよりは、必要な人は
自分でコンポーネントを作って追加して使えるようなアプリにしたいです。
>単語やスレ選択して右クリックでNGダイアログを出しNGの詳細オプションを指定できるような感じにしてくれ
これは凄く参考になりました。
ソースコードをさらす気はない?
ソース公開なんて
もうこれ以上触るのいやだ飽きた
ってなってから考えればいいのさ
466 :
455:2012/05/30(水) 21:07:05.86
>463
結構悩んでるところですが、さらすにしても限定的になると思います。
例えば2chとの通信部分をコンポーネントとして非公開、GUI部分はオープンにするとかも考えられますが
主目的として、バックエンドサーバーを利用してスマートフォントとの同期を出来るようにしたいと考えていて、
2chとの通信部分だけ利用して、同期部分(まだ実装してませんが)は使われないならうれしくないのが本音です。
どちらにしてもある程度目処が付いてから、ということになると思いますが。
.NETで公開非公開はあんまり意味ないような・・・再利用可能ライセンスとかの話?
難読化知らんのかい
まあタダのやつだとソース再利用を防げる程度やけどな
作り方を知らん子が作ったらそうなるという見本
悲惨やな
今時、モジュールを逆解析してプログラミング次術を盗んでまで欲しがる奴なんて居るのか?
'80〜'90年代頃までは上京して高ゲタを履く、そういう御上りさんプログラマは多かったがw
472 :
デフォルトの名無しさん:2012/05/31(木) 09:26:49.45
evernoteはちゃんとしてないどころじゃなくて、パット見でわかるくらいひどいコードだったっぽいけどね。
Microsoft自身が作ったWPF製ソフトが軽けりゃ
Evernoteが酷い!で済むんだけど・・・
Expression Blend 4の性能を見ると、そうも言えないのが困ったところだ
VS側でXAML弄ってるとき、構文チェックを切ることってできないのかね。
いちいちチェックしやがって、モッサリする。
使いこなせなかったから使い慣れた環境に戻したって言ってたよね。
WPF3.5なんて文字の滲みがひど過ぎてそれだけで使わない理由になっただろ。
レイアウトで座標が整数から外れた途端ぼけぼけになってたな
当時のEvernoteスレで重いって言ってる連中ほとんど居なかったけど?
いいこと教えてやろうか
VS上で実行じゃなくて、Releaseビルドして生成したexe直接叩いてみそ
全然速さ違うから
うんうん、全然違うね。
もっさりとフリーズくらい違う。
それ、ハード古過ぎなんだお
483 :
デフォルトの名無しさん:2012/06/01(金) 19:18:34.56
484 :
455:2012/06/01(金) 22:10:08.32
頑張れw
やめろー、こんなところでソースを公開したらMVVMがどうだとかデザインパターンがどうだとか、うるさいのがくるぞーーーー!!
基本的に全部コードビハインドか。
GJ
教徒共を黙らせてやってくれ
>2ぃとちゃん
ワロタ
おれはファクトリーパタンで処理してるけど
493 :
455:2012/06/03(日) 19:43:47.11
>492
「矩形選択をおこなう」で複数行方向にマウス・ドラッグするとアサートが出るみたい
>>491 モデルからビューモデルを生成してるってこと?
>>492 ずいぶん頑張ったな。
ファイルを保存するとエラーになるとか不安定だけど形にはなってるじゃん。
496 :
492:2012/06/03(日) 20:44:30.58
>>497 [ファイル]⇒[新規作成]⇒[保存]でファイル名がnullのまま保存しようとしてるみたい。
499 :
492:2012/06/03(日) 20:49:49.14
>>497 OSのバージョンと再現手順を教えてくれ
500 :
492:2012/06/03(日) 20:57:23.42
501 :
デフォルトの名無しさん:2012/06/04(月) 18:21:52.29
質問です。
2つのCanvas1・2が同じアニメーションなのでstyle(key=ani)で定義してます。
別々のタイミングでアニメーションを開始したいので
beginでStoryboardを呼びたいのですが、
Canvas1.ani.begin();
のように書くと ani は canvasの定義に含まれていないとエラーがでます。
どのように書けばいいのでしょう?
animationbegincanvas1
503 :
501:2012/06/04(月) 19:47:05.93
('・ω・`) ごめん。もうちょっとヒントください。
WPF4でもTextBoxやComboBoxにメイリオ指定するとやたらボヤけて見えるんだけど
皆MSPゴシックとかに変えてるの?
TextOptionsの全組み合わせを試せ
あーxaml構文チェックオフにしてえ
.net frameworkから離れて5年くらい経つ。
当時は2ちゃんブラウザ作ってて最初はC#でやってたけど、
パフォーマンスとか納得いかずに結局ATL+WTLにやることに。
今、twitterクライアント作るとしてWPFでプログラミングして、
十分なパフォーマンス出るのかな。
結局はATL+WTLってことになるんだろうか。
既にいくつかあるが、パフォーマンスは十分だと思う
>>508 Metrotwit使ってるが十分。
前はメモリ食いがひどかったが、古いのを削除するようにしたのか平気になった。
今更ATL+WTLで通常アプリ開発ってまぁよっぽどでなければ無いね。生産性わるすぎ。
XAML系かDirectX系の2択でしょ。
2chブラウザは無駄な仕様が多すぎて開発ハードルが無駄に高い
Twitterクライアントぐらいのものを作るのにはいい感じなんだよなあ
>>507 VB6で開発してる人の苦労を再認識してもらうための
MSの粋な計らいだ。存分に味わいたまえ
514 :
508:2012/06/05(火) 19:03:51.59
よくわかってないんだけど、例えばボタンとかリストビューとかも
.net framework 2.0のときなんかとWPFとではクラス自体違うのかな。
>>511 確かに何気にハードル高かったよ。
あれに比べたらtwitter API叩くのかなんか楽チン。
基本的に全部 System.Windows.FrameworkElement から派生してる。
516 :
508:2012/06/05(火) 20:34:01.88
なるほど。Formsとは別物ってことですね。理解。
久々にC#やってみたくなった。
>>515 DependencyObjectだろ
FrameworkElementから派生してるのはWPFの中でも高レベルなクラス
ボタンとかリストとかって書いてるからそう書いたんだが。
まだこんな厨房いたのか
分断させて過疎らせて誘導荒らししてスレを消滅させるよくある手口、スルー推奨
MVVMはWPFオンリーの設計パターンじゃなく、XAMLUI共通のパターンだろ
ならこのスレで論じること自体筋違いとしか思えんのだが
>>521 いや、このスレはWPFに関する話題に徹して、MVVM信者とアンチは向こうでバトルさせた方がいいだろ
まぁむしろXAML系スレとしてまとめちゃってもいい気がする。現状はMetroスレとか過疎りそうだし。
ム板は過疎なのに自治厨が多い
言語、統合環境毎の総合スレしか要らん
データ構造とアルゴリズムに関するスレだってあるんだから、UIパターンに関するスレがあってもいいだろ
UIパターンに関する議論でWPFの話ができなくなったからにしろよ。過疎スレ増やしてどうする
WPF内で分断されるほど元の人口が居ない
ここ数スレの半分以上がMVVMの話じゃねえか!
もうウザいから別スレでしてくれよ!
WPFからMVVM取ったらなにが残るというのだ(´・ω・`)
最初から煽りスレタイで立てろよ
1)MVVMってなーに? 必要なの?
2)WPFでDirectX叩くのどうやんだよおせぇんだよ
おまえらの持ちネタってこんだけだろ
別に分けてもいいんじゃね
たしかにそれだけだw
10万行スクロールだろ
分けてもいいと思うけど、このスレからMVVM奪ったら過疎るぞw
ここはFormsから流れてきたアンチがウザすぎて駄目だわ
Silverlight使いやWP7アプリ開発してる連中の意見も聞きたいので、スレ分離に賛成
同感、勉強嫌いのレガシーおじさんはすっこんでろ
気分はWinForms!
ポップアップヒントみたいの出してるんだけど
そのヒントにカーソルがあるとき、その下のオブジェクトにクリックとかがいくように
なんて言ったらいいんだろう。マウスのイベントを透過させたいんだが
方法ある?
よかれと思ってるんだろうけど
標準と違う動作させると
ユーザー怒るで
それでもやりたいなら
同じICommandバインドすればええんちゃうか
542 :
540:2012/06/07(木) 03:06:42.46
>>541 言い方が悪かったかも。
ポップアップヒントはないものとして(透明として) その下をクリックさせたいんだけど。
hittestまわり弄ればできるんじゃないの
ポップアップは別ウインドウ扱いだからうまくスルーするかはしらんけど
ListBox ってCtrl+AはきくのにApplicationCommands.SelectAllをトラップできないんだな。
545 :
デフォルトの名無しさん:2012/06/11(月) 16:46:10.89
書いてあるじゃん
嫁よ。OnRenderを持ってるクラスから派生させてカスタムコントロール作れと書いてるだろ。
え?マジ?
BuildHighlightGeometry これか。
ありがd。
と思ったら、別レス来てた。
あれ? また勘違いしてたか?
いろいろやってまたわかんなかったら聞きに来まs
そろそろWPFの勉強を始めようかと思うんだけど
どの本読めばいいの?オススメ教えてくれ
それよりWPFに未来があるのかないのか
それがわからん
WinRT作ったりとMSが力を入れて推進してるのは確かだから潰しは効くさ
>>550 Webで十分。理解を深めるのにエッセンシャルWPFあたりはあっていいかも
>>550 Prismの解説書。
本としてもまとまってるが、Webでも見れるらしい。大体同じと聞いたけど詳しく知らん。
自作のカスタムコントロールで、CaptureMouse() したいんだけど、
GotMouseCapture イベント発生直後に、なぜかLostMouseCaptureが
発生してしまってキャプチャーできない(正確には一瞬だけキャプチャして
なぜ勝手にロストしている)状態なんだけど、なぜ LostMouseCapture が
発生するか調べる方法ってある?
ふつうにイベントキャッチしてソースみればよくね
子要素から伝播してきてるとかかもな。e.Source見ろ
557 :
554:2012/06/12(火) 23:24:11.15
ありがとう早速ためしてみた。
カスタムコントロール内で、TextBox を生成してるんだけど、
そいつが発生元だった。
最初の説明の書き方が悪かったかも。
・カスタムコントロール内で、 TextBox を生成している(名前をtextBox1とする)。
・textBox1にフォーカスがあたると、そのイベントハンドラ内で、textBox1.CaptureMouse()する。
↓
どうもキャプチャしている様子がない。
↓
textBox1のGotMouseCaptureとLostMouseCaptureでログを吐くようにする。
↓
キャプチャ直後にリリースしてることを確認。
↓
半日ググりつつコードいじったが解決できず
↓
2chで質問。
↓
直後に、
ttp://stackoverflow.com/questions/6715555/wpf-mousecapture-being-force-released-immediately を発見。解決せず。
↓
2chでレスもらう。
↓
e.Source は textBox1 だた ←イマココ
助けてよ、ママン。
もう疲れたよパトラッシ
558 :
554:2012/06/12(火) 23:32:35.18
口数が多くて言葉が足りなかったよ。
e.Source が textBox1 なのはわかった。
でも、textBox1 がなぜ、リリースしてしまう
のかわからないんだよ。
どうやって調査したらいいかもわからなくて
僕は途方に暮れてるんだよ。
キャプチャしてると不都合だから外すんじゃないの
たとえばどっかにキャプチャされてるとマウスで選択できなくなるから
これは俺のただの想像だけど
ライブラリ覗いたらなんかわかるかもしれないけど
そもそもテキストボックスでキャプチャする意味なくね?
NumUpDownっぽいの作る時くらいしか必要ないと思うけどな
tabじゃなくてクリックで当てると、MouseLeftButtonUpでキャプチャがリリースされるっぽいから、
upとPreviewうpの両方でe.Handld = True すればリリースされないんじゃね。
TextBoxしかクリックできなくなるが。
そういや、Snoopは3.5までしか対応してないんだな。
4も対応してるだろ。
古い配布ページ見てないか?
564 :
554:2012/06/13(水) 22:56:47.97
>>559 ttp://www.codeproject.com/Articles/31592/Editable-TextBlock-in-WPF-for-In-place-Editing をいじってた。
explorer のように背景をクリックしたら、編集モードを終了する動きは実装されてなかったので、
GotFocus でキャプチャ、LostFocus でリリースしたら期待どおりの動きになった。
UserControl はだせぇと思って、添付ビヘイビアでコントロールを生成するようにしたら、
>>554 の問題発生。カスタムコントロールで作り直しても結果は同じだった。
オレがなにか余計なことをしてるのかもしらんが。
>>560 おしえてくれてありがとう。
その方法を試してみた。キャプチャするときにフラグ立てといて、Preview で1回だけ、
e.Handled = True にしてみた。すると、TreeView の背景をクリックしたときは期待どおりの
動きになったんだけど、TextBox 自身をクリックしても編集が終了するようになってしまった。
キャプチャしてるの状態なので、e.Source を見て、TreeView がクリックされてるのか、TextBox
がクリックされてるのか区別する方法はないようだ。
マウスキャプチャの意味わかってる?
フォーカスとは無関係なんだけど
キャプチャの意図が全く見えないけど、キャプチャしてる状態なら、
TextBoxしかクリックできないんじゃね?
VS2012でWinRT使って遊んでるんだけど
[CallerMemberName]が素晴らしいな。
C#5.0の新機能だからWPFでも使えて
面倒だったINotifyPropertyChangedのプロパティ名指定が楽になる。
async/awaitしか注目してなかったけど、これは嬉しい機能追加だね。
おお。ホントだ。これは良い。
569 :
567:2012/06/14(木) 09:03:10.12
Metroアプリのテンプレートに入ってるBindableBaseを継承して
http://ideone.com/KIvoJ ↓みたいな感じで使える。
private string text;
public string Text {
get { return text; }
set { SetProperty(ref text, value); }
}
OnPropertyChangedも定義されてて、プロパティ内にOnPropertyChanged()と書くだけでいい。
引数いらずでミスが入り込む余地がない!
うーん、素晴らしい。なんでもっと早く入れてくれなかったんだ。
地味に良いな。文字列とかありえなさすぎるw
ラムダ式を使えば文字列は回避できただろ
実行時に式ツリー生成の負担かけてまで、そんな書き方しなきゃダメか…という感じだったけどもね。
wpfとasp.netって親戚みたいなもん?
関係ある技術なの?
どっちも.NETという点では関係ある技術だけど
WPFはクライアント側、ASP.NETはサーバー側で役割は全然違う。
パっと見はxamlもaspxファイルも見た感じ近いけど、全然違うっちゃ違う。
どっちもxmlだから似てるというだけ。
やっと公式見れた・・・DLのリクエストが凄かったんだろうか。。
ごばくです。。
XAML上に書いてる コントロールテンプレートの
一部だけ(例えばフォントサイズ)を 動的に変更って どう書けばいいの?
リソースで動的ってどんなだよ
やったことないけど、普通にテンプレの中の対象要素のfontsizeにバインドじゃできないの?
トリガー?
BlendがあるならトリガでもいいけどVSMがスマート
ないなら要素に名前付けといてコントロールのコードでGetTemplateChild
多分、578は単にTemplateBindingがしたいだけの気がする
WinFormsのDataRepeaterっぽいことってDataGridでやるのがいいの?
ItemsControlだな
Itemsにレコードに対応するオブジェクトをそのまま突っ込んで
XAMLでItemsPanelプロパティにVirtualizingStackPanelを設定
XAMLでItemTemplateを定義してレコードとコントロールのプロパティをバインドすればできあがり
>>585 レス見てもイマイチ分からなかったけど、試してみたらなんかいけそう
サンクスです
WPFのwindowをTopmostで表示してるんだけど、Taskbarの上にも出るようにしたいんだけど、そのApplicationがActiveじゃなくなると裏に行ってしまう。
ただ単にDisplay全体に赤い枠を表示させたいだけなんだけど、WPFを使って何か方法ありますか?それとも別にいい方法がありますか?
XAMLには、
WindowStyle="None"
Background="Transparent"
AllowsTransparency="True"
ShowInTaskbar="False"
Topmost="True"
を設定してます。
アラートかなにかか。winformで常に手前に設定してもタスクバーが優先されるしなぁ。
directxでフルスクリーンも微妙か・・wpfじゃないが
アクティブを渡さないようにするとか
WPFでウィンドウの枠を消すには、Windowのプロパティ、WindowStyleとAllowsTransparencyを
それぞれNone,Trueに設定して行いますが、このようにして枠を消すと
Aeroを有効にした環境でのウィンドウのフェードイン・アウト効果と影が付かなくなってしまいます。
これを付くようにしたいのですがどのような方法がありますか?
http://techracho.bpsinc.jp/baba/2009_12_15/768 こちらを参考にWinAPIを使った方法も試しましたが同様の結果となりました。
しらんけど、多分作った本人しか気づかないしほっとけばいんじゃねw
Livetの1.0ができてるらしいぞ
このスレでお前らがドキュメント、ドキュメントうるさいから
今はドキュメントサイト構築中で、それ完成してからの公開予定っぽい
宗教はスレ違い
どこぞのDみたいに、1.0だと思ってたら0100だったってオチはないよね?w
>>590 「影をあらかじめ書いておく」以外の方法をみたことがない
chrome使う方法はwin8になった段階でひどい目に逢いそうだからおすすめしない
596 :
590:2012/07/02(月) 08:12:38.33
こだわらない方向でいきます。ありがとうございました。
xamlってドキュメンテーションコメントってあるんですか?
ないと思うけど
あるとしてどこで使うのさ
バインドしてるプロパティの中で例外が握りつぶされるのって、なんとかならないの?
キャッチして手動通知とかじゃなくて。フツーにスローしてくれればいいんだけど。。
後々を考えると、この中であんまり複雑なことやってる処理を呼ぶとか
怖くてできないのだけど・・
あー
例外ね
int型にバインドしてるのに文字列入れたー!とか
あの例外だろ? わかるわかる
ちゃんと処理できるよ
msdnみてね
うぜぇw 他にどんな例外があんだよw exceptionから派生しない例外か
>>600 世知辛い世の中だ。。調べるのは構わないけど、
ValidatesOnExceptions を指しているわけではなくて、
その他に、ただスローだけを行う仕組みが用意されてるわけよね・・?
それともソレ?
ユーザーが1文字入れたら例外で落ちるアプリが作りたいのか?
極端に言えば、そう。
とりあえず今Prism見てるんだが、XAML用のライブラリ、ざっくりと特徴教えてたもれ(´・ω・`)
606 :
デフォルトの名無しさん:2012/07/03(火) 19:35:37.41
やだね
フレームワークを使うならPrism一択でいいと思うよ
画面遷移やイベントの仕組みや複数アセンブリの扱いが非常に良くできてる
あと外せないのはExtended WPF Toolkitかな
>>607 まだ読んでる途中ですが、なんかRegionBehaviorとかこんなんいるんかってのがチラホラ…(´・ω・`)
とりあえずひと通り見ないと設計思想把握できんのでなんなんですが。
なんか車輪作りたくなりそうな予感・・・
Region便利だよ
最初Prism触ったときは意味が分からなくて投げたが
自分で1から作ってるうちに同じものの劣化版を作っていることに気付いて
結局Prismに戻った
>>609 どげんすか、なんか普段使うことのないものがたくさんついてるような巨大ライブラリになってたりはしてないですか?
あとこれからMetroとかWP8とか来る時に、すぐ対応するのかがちと不安(´・ω・`)
円の中央を指定して表示したいんだけど、どうすればできますか?
左上の座標になっちゃうんだけど。
HorizontalAlignment="Center" VerticalAlignment="Center"
とかにしてみたけど、なんかwidthとheight指定できなくなっちゅし・・・。
なにを言ってるんだおm
なにするのか知らないし、なにを指してるのかも知らないが、
左上原点でなにが都合が悪いのかサッパリわからん。
RenderTransform使って
TranslateTransformでXとYにWidthとHeightを1/2コンバータ付きでバインドするとか
同心円を描きたいだけだろ。
Blend使うかコードでDrawingVisual
Metroスレないからここに書くが、忍っちにMetroでは縦スクロールと横スクロールの混在しちゃダメと言われて解せなかったんだが、
タッチのないパソコンで動かす時に縦と横が混在してるとホイールの動作がどっちに行くかでややこしくなるからだったのかなー
使い分けできなくないけれど、不慣れな人にはしにくいかも。
いやタッチデバイスでもわかりにくいだろ
iOSやAndroidアプリで縦横スクロール混在ってほとんど見たことない
標準のブラウザからして縦横スクロールですが
横スク混ざると極端に使いにくくなる
最悪のインターフェースになる
>>618 だから使いにくいだろ?
スマホ向けサイト作るなら縦スクロールだけでいけるようにするのが常識
スマホのブラウザってPC向けサイトをなるべく縦スクロールだけで読めるようにする機能が
もれなく付いてるぞ
通常のWebサイトで横スクロールを使ってるサイトなんてどこにあるよ
>>622 一つのコントロールに対して縦横両方のスクロールを可能にするってのがNGってだけで、子コントロールが親コントロールと別方向にスクロールするのはOKなんじゃね?
>>624 いや以前聞いてみたところ、ダメ言うてた。パノラマみたいな横スクロールがきっちり決まった位置までスクロールするようなものならOKかもと言ってた。
ここでダメというのは推奨されないということで、はじかれるかどうかは不明だけど。
リストの垂直方向へのドラッグはリスト項目の選択を意味するらしいから
それとごっちゃになるよ
>>626 スタート画面でのタイル選択をちょっと下に下げるのと同じ動き?
628 :
デフォルトの名無しさん:2012/07/04(水) 16:07:56.41
んー入力させてOKだったら処理続けるとかそういうのをMVVMでナイスにやるあたりがよくわからん・・・
これがMVPVMで言われてる繊維となPrismで言うNavigationなんかな?
そこら辺ってこうすればナイスに出来るよっての、まだまとまってないんだっけ?
数字枠に英字入れたら「数字だって言ってんだろ死ねやおらぁ!」って
メッセージボックス出すのは10年前に禁止になりました
よろしくね
>>620 俺はスマホ向けのほうがいやだったりする
いちいちPC向けに飛び直してるよ
少数派か・・・
Prism、Metro対応まだなんだっけ・・・
なんか予定あった気がしたが・・・
対応しなくていいと思う
UIも主用途も違いすぎる
やるなら一から作ってほしい
MetroにRegionをそのまま移植したらガイドライン無視しまくりでKYなクソUIだろ
635 :
デフォルトの名無しさん:2012/07/09(月) 14:19:01.81
Clipの逆側が欲しいんだけど、どうすりゃいいのかな?
赤い四角の中に文字を切り抜いたものとかどうすりゃできる?
OpacityMaskにVisualBrush突っ込む
でも静的なロゴの表示なんかに使うだけなら別のデザインツール使って
XAMLリソースやビットマップ画像を生成した方がいいと思う
>OpacityMaskにVisualBrush突っ込む
どんな VisualBrushにすればいいの?
動的に作るわけだよな
うーん わからん。
ジオメトリ作ってtostringすりゃパスマークアップになる
そのままコピペすりゃxamlに早変わりさ
639 :
デフォルトの名無しさん:2012/07/10(火) 07:12:20.48
>>631 タッチパネルなら、縦横スクロールもそんなに苦じゃない。
マウスだとコロコロで1方向にしか行けないから使い辛い。
しかしMetroって今ストアにあるアプリの大半が横スクロールで作ってるけどなんで?
別に縦スクロールでも良いはずなのに。大抵のwinアプリは横スクロールなんて使ってないのに。
>>639 MetroはGUIとしては横スクロールが推奨なんだと
ドキュメント表示やブラウザは縦スクロールだけど
指でスクロールするなら縦より横のほうが動かしやすいからじゃない
643 :
デフォルトの名無しさん:2012/07/11(水) 10:31:10.74
一ヶ月以上も前の話題で、どうもすみませんが、
可能でしたら、テキストエディタを作る話題のコードを、
再び、アップロードして頂けないでしょうか?
>>395 >>418 >>492 AvalonEditとか、とっかかりにするには巨大すぎて把握できません……
>>641 人間の目は、縦より横に動く物の方が捉え易いからじゃねーかな
パチスロばっかりやってる様な奴は知らんがw
>>639 WP7のパノラマUIを発展させた感じじゃない?
自分的には左右からのフリックでの操作とあわせて操作はしやすいと思う。
>>644 そうですか?
例えばMSストアで「仕事効率化」を探すために横スクロールしてると見逃しやすいです。
横に動くものを目で追うのはやりやすい(眼球は上下より左右の方がより動きますから)ですが、
横から次々に流れてくるものを見る場合、目線は左右ではなく上下に何度も動かす事になります。
結構やり辛いと思いますけど。
>>645 ページ切り替え、なら分かるんですが…
しかし、みんな横スクロールに抵抗無いみたいですね。自分だけなのかなぁ。
横スクロールしながらだと、文字って読めなくないですか?
文章は当然ですが、ラベルみたいな短いものでも。
皆さんはメトロ対応するときは、横スクロール使う予定ですか?
自分は縦で行きたいけど、他が横スクロールばかりだと、他のアプリとのギャップで却って使いづらくならないか不安です。
俺は
>>646と同じ感覚だな。
Pivotは良く使うけど、Panoramaは極力避けるつもり。
いいかげん他所でやれよ
ここのModel,ViewModelをこぴってPortableLibrary作ったんだけれど
MetroアプリのXAML上で
<Page.Resources>
<vm:CustomerViewModel x:Key="ViewModel"/>
</Page.Resources>
とやると
"XML 名前空間 'clr-namespace:SimpleMVVM.ViewModel;assembly=CSPLib' に不明な型 'CustomerViewModel' が含まれています"
WPFアプリで
<Window.Resources>
<viewModels:CustomerViewModel x:Key="ViewModel" />
</Window.Resources>
とやるのは通って実行できる。
この辺何か違いあるんだっけ?
コンストラクタで
DataContext = new SimpleMVVM.ViewModel.CustomerViewModel();
とやるならMetroでもWPFでも実行できる。
Metroは型をWinRTにコンポーネントとして公開しないと認識されないんじゃないの
上のxmlnsは違ってるけど合わせてあります・・・すいません・・・
>>650 あ、それは.NETで作ったクラスをC++やjavascriptから使うときの話だと思います。
clr-namespaceの代わりにusing
View使いまわしとかどうせ不便なだけだからやめとけ
含まれています。・・だから、存在は知ってるけどナニコレ的なことなんだろうか。
意味がわからん。
>>653 とりあえずVMまでのportable libraryでの実装をどこまでできるか試してみるざんす。
>>654 エディター上では見つけられてるっぽいのでなんかコンパイラがおかしいのかとも思うんですけどね…
>>646 横スクロールが糞なのは同意だけど
最近の端末のUIは横サイズに合わせて勝手に縮小して
必ず縦スクロールだけにしてくれるようだ
メトロは池沼の発想による産物だから。
横スクロール推奨で、MSのガイドラインに
「スクロールできることが視覚的に分かるように次のページの一部が入り込むようにしましょう」
とか書いてあるのを見て目眩がしたわ。
658 :
デフォルトの名無しさん:2012/07/11(水) 20:11:05.60
>>659 いやいや、理にかなってないよ。
そういうのはスクロールバーみたいな共通ウィジェットの役目だから。それをもっと分かりやすくすれば良いだけ。
なのにコンテンツ側が変な位置でちょん切れてるからスクロールがあるのが分かりやすい、とかアホの極みだろ。
スクロールバーなんていう記号に頼らないで直感的にわかるようにしろってことだろ
>>657 使ってみるとそれで結構いい動きになるよ。
IS12Tが安いのでとりあえず入手して試してみるのがいいよ。
>>660 とりあえずお前はUIデザインについて学んでこい。
Metroデザインに文句言ってる人
言うのはいいと思うんだけど、それに反してデザインするとストア登録審査却下されるぞ
チャームどん無視とかなら知らんけどそんな厳しくないだろ
ゲームだって登録されてんだから
>>658 どうもありがとうございます。
サクサク動くし、GapBufferとかGerptとかてんこ盛りだし、
これは、すごいんじゃないでしょか?
本当にどうもありがとうございました。勉強します。
画面サイズが一種類ならともかく複数あるのに
どうやって確実にはみ出させるんですか?
次のページ作っといて何ピクセルかかぶせるだけやろ
パノラマなら別のインターフェースがあると思うけど
669 :
デフォルトの名無しさん:2012/07/14(土) 21:07:04.84
>>66 Gerptについて詳しく教えてくれ
くぐっても出てこない
Metro って DataTemplate.DataType ないのか
禿げ上がるほど便利なメカニズムだったのに
>>671 おおそうなのかサンクス
3個投票したわ
なるほど、WinRTはまだ完成度が低いんだな。
もうちょい様子見が良さげだな。
>>667-668 今あるメトロアプリを見る限りだと、ページの横幅を1200ピクセルで固定で作ってるものも結構あるね。
たぶん1280x720や1366x768以上ではみ出るように合わせてるんだろう。
一応メトロの最低解像度は1024x768なんだけど。
Canじゃなかった。ResizeModeだった・・
SS
ksks
リボンウィンドウでNoResize使うなってことじゃね
リボンアプリでもダイアログとかは標準ウィンドウだし
それよりVS2012RPでリボンがぶっ壊れてて使い物にならないのを何とかしてくれ
なんとかしてくれってのはさすがにconnect辺りに言ってくれ
いつからWinRTスレになったのか
コンバーターをどうにかインライン的にXAMLで書きたい。
しょーもないのまでいちいちクラス書くとかアホらしい。なんかないの?
ない
概念が違ってる
WPFて黒やなぎさんがやってるとこ?
それはWWF
>>669 どうもすみません、Grepのtypoです。
>>658はTFSにDirectWriteと非常に勉強になることばかりです。
どうもありがとうございます。
Office2013を見るにデスクトップ側でもメトロっぽいUI混合推奨なのか
UIの退化を感じる
WPFにもMetroコントロールくれないと
リボンはマジ勘弁してほしい。画像とラベルを設定してると、
画面サイズで勝手に見た目が変わるから最悪。
画像じゃなかった。Large画像。
今更Officeにリングコマンド導入か
聖剣伝説から何年遅れてんだよ
2013すげーいいな
UIもスタイリッシュになった
リボンの設定も満足にできない男の人って…
俺はCoco派
重い処理を別スレッドで動かしているときに、画面ではボタンとかがクリック可能な状態になっていると思います。
そこら辺どのように実装していますか?
単純にボタンをクリックできないようにしているだけですか
698 :
デフォルトの名無しさん:2012/07/22(日) 16:44:54.63
>>697 クリックされては困るものはクリックできないようにしてる
canexecuteでいいんじゃね
コンテンツのIsEnabledをfalseにした上で、ウィンドウ全面を
ProgressBar乗せた半透明黒色のパネルで覆うようにしてる
ナビゲーションベースならそういう風にするのが自然に見えるかと
ダイアログベースならVSみたいに進行状況を表示するだけのモーダルダイアログを出せば
GDI+である範囲をクリッピングして線を引いたり四角を描いたりするのと同じようなことをしようと思うんですが、Canvas上でShape使ってやるとしてClipの仕方どうすべきですかね。
各Shape各々のClipにのShape位置にずらしてGeometryを設定する?
それともクリップの形状ごとにCanvasを全面覆う子Canvasを作ってそれにShape追加してクリップすべきですかね。
何か良い作法があれば教えてたもれ
APIのSendInputをwpfから使いたいのだが、Windows Formsで動くコードを、
そのままwpfに持ってきたんだけど動かない。wpfはなにかあるの・・?
マネージじゃないし関係なさそうな感はあるんだけど・・・。
703 :
デフォルトの名無しさん:2012/07/28(土) 21:00:32.22
>>701 DrawingContextにそのものずばりな命令がある
>>703 すまぬ、SilverlightとかWindowsPhoneとかMetroでも同じ事をしたいのでDrawingContext使えないのじゃ・・・
705 :
デフォルトの名無しさん:2012/07/29(日) 11:11:58.12
>>704 Shapeだと大量の図形を生成したときに結構重くなるし、メモリーも食う
面倒だけど、モデルの部分を別にしてUI部分をプラットフォームごとに書くかFactoryパターンでプラットフォームごとにレタリング用のクラスを書くしかないと思う
>>706 WPFはDrawContext使えたけれど、その他のSilverlight、WP、Metroだと類するもの無いよね?
>Canvas上でShape使ってやる
ここが間違い
基礎知識不足
709 :
デフォルトの名無しさん:2012/07/31(火) 23:09:38.35
ドキュメントの内容が変更されていたらタイトルに*をつけて
保存されたら*を外すようにしたい
初めのうちはOnTextChangedでやってたんだが、これだとかなり遅くなることに気付いた
この仕様をできるだけ低コストで満たすにはWPFの何を使えばいいんだろうか
これだとってどれ。そのイベントはイベントハンドラ?トリガーアクション?
一度変更通知受け取ったら解除しちゃえばいいじゃないか
712 :
デフォルトの名無しさん:2012/08/01(水) 01:49:31.81
>>710 イベントパンドラ
>>711 変更通知後に保存した場合、マークを解除しないといけないから無理
714 :
709:2012/08/01(水) 01:53:19.38
テンプレートの編集わけわからなくなる
Blendの使い方が悪いのか
Blend SDK、なんかおかしくなったん?御大がtwitterで騒いどったが(´・ω・`)
for VS2012 Previewでバージョン上がっただけじゃない?
キーボードフォーカスをwindowに戻すにはどうすればいいですか?
TextBoxにキーボードフォーカスがある状態で
this.Focus();
とかやってもキーボードフォーカスを戻してくれません。
721 :
デフォルトの名無しさん:2012/08/19(日) 17:23:38.17
>>719 Keyboard.Focus(コントロールのインスタンス)
だから
Keyboard.Focus(this);
だろう
Blend for Visual Studio 2012がすべてのバージョンに含まれるってことは
もう別売りのはなくなったってことなんかね
フル機能のが別にあったりするのかな
BlendのためにExpression Studio買ったのが少々勿体ないような気がするけど、普及してくれるならそれはそれで許せる。
だったらもうデザイナにblendを統合してくれよ・・
統合されてるよ
今までのデザイナがなくなってBlendの簡易版みたいなのに置き換わってる
VSMやアニメーション使わないならそれで十分
ローカルアプリもHTML,CSSやJSだけでUIつくれたららくなのにな,,(ブラウザ無しでさ)
>>726 今そういうの探してる最中なんだけど、そしてたどり着いたのがXAMLなんだけど、それに近いのってないの?
Metroなら作れるよ
WPFなんか無くなってビューがHTML/CSS/JSで作れたら嬉しいのは同意
ビュー以外はC#で書きたいが
だれか作れよw phpからHTML出すように
C#からローカルアプリ用HTMLだして起動するような
ASP.NET MVCのソースコードをベースにすれば案外簡単に作れそうだな
単純なやつならHTML+CSSで作りたいってのは分かるけどJSまでは入れたくないな…
JSないと価値無いだろ
JSがあればネットの莫大な資産を丸ごとパクれるんだから
結局ブラウザコントロール使えって話になるよね。
スレ違いになってきたからこの辺で止めようや
ブラウザコントロールを使うことにして
ASP.NETのRazorを組み込んでHTML生成するようにして
JSとC#のバインディングを整備するだけか
けっこう使えそうだけどなんで無いんだろうな
だから「枠」事態をたよった考えがいらねぇんだって
HTML CSS JSが窓ごと出しちゃうって話だろブラウザ房はどっかいけ
737 :
デフォルトの名無しさん:2012/08/22(水) 10:19:34.20
>>727 世の中にはQTって奴も存在するんだけどな
<winhtmlform>
<header>
<css...
<js....
</header>
<formbody id="mdiparent">
<div>< main menu
<div id="leftpanel">... C#loadMyLeftPanel ,,</div>
<form name=".,,,>..
<div id="mainpanel">....C#loadmainpane()..</div>
....
</form>
</formbody>
</winhtmlform>
>>728 ガジェット?なんかも議論されていることに近い実装になってるんじゃないの?
後継はMetroがあるからいいとして。
ガジェットはIEにガジェット用のAPIを足しただけのHTAの親戚みたいなやつ
グラフィカルなUIのやつは大抵ActiveXでFlash使ってる。
HTMLでクライアントアプリって流行んないとおもうけどな。
HTAとかガジェットとか流行らなかった例はあるけど成功例ってないじゃないか。
QTハニー
製品版win8ではガジェット廃止されたぞ
おまえらもHTAは知らないんだな
もういいからWSHでも使っとけ
WSHは画面ないしDLL使えないしEXEにもDLLにもなれないし
ぐぐったらMakeExeとかvbs2exe, js2exeとかあるんだな。
だけどMakeExeの実態はブラウザなんだな
> MakeExeは、速度を上げるためのものではありません。処理としては、
>
> 1)vbsファイルをテンポラリフォルダに展開
> 2)作成したvbsファイルを、wscript.exeもしくはcscript.exeで実行
> 3)スクリプトの処理終了後、vbsファイルを削除
HTML2EXEも実態はブラウザなんだな
> If you selected Generate separate EXE and DB files, 2 files will be produced:�
> a data file (.DB) containing your HTML and images.�
> a dedicated off-line browser (.EXE) to view your site.�
vbs2exe も多分そんなんだろうけどDLL呼び出しをサポートしてるんだな。
サンプルをダウンロードしてみたが・・・ビルドするとウィルスとして駆除された。
コンバーター自体は引っかからないんだけど、作成した実行ファイルがウィルス扱いですよ。実際ウィルスなんだろうか。
既存のブラウザコンポーネントを使うのが嫌だからって
自分でHTML/CSSの処理系作って組み込んだとして
それブラウザとどう違うのかと
環境依存が嫌ならWebkitのラッパーでも使っとけばいいだろ
AndroidやiPhome向けにHTML/JSでアプリ作れるようにするものがたくさんあるけど
基本的にブラウザコントロール使っててHTMLファイルやJSファイルをパッケージ化するだけのものだな
V8のようなJavaScriptエンジンを組み込んで、HTMLも使わないで
JavaScriptだけで完全ネイティブなアプリ作れるものもあるけど
C#はJavaScriptのスーパーセットみたいな気分で使える言語だし、
マルチプラットフォームにはMonoがあるから、無理にJS使うメリットが特に見当たらないな
>>748 データを延々更新する場合、動作が速い。軽い。
ネイティブコード化できるならDLLインジェクションもできるかもしれない。
まあ、JavaScriptとかにこだわらなければいろいろあるけど、ちょっとめんどくさくなるなと。
正直、ろくに覚えられないんで、多少でも使ってるDOMアクセスでやれたらいいなと思って。
やっぱり普通のコンパイラ言語使うか、Luaとかみたいにコンパイラ言語とリンクして使うような組み込み言語使うのが現実的か。
ただ、それだとRADツールでぽんぽんと配置できないんだよな。
どっかのRADツールでデータ起こしてプロパティをコピペしてくるとか、
RADツールで作ったデータをLuaで読み込んでC言語とかで表示か。
表示はいいとして、中間的なイベント処理をスクリプトで・・・
・・・
やっぱり画面はちゃんとコンパイラ環境で作って、COMオブジェクトとして登録して、
それをCOM経由でスクリプトでコントロールするのが間違いないな。
COMオブジェクトってインジェクションしたDLLでも動くんだろうか。
無理だろうなあ。
DLLとCOMとスクリプトの3段構成しかないんだろうなあ。
Titaniumでも使ってみりゃわかる。
書いててイライラするよー。
SIlverlightでManaged Jscript使えばいいじゃんと思ったが、需要無かったからサポート対象外になってたのか。
4になった時にスレで誰も触れてなかったから今まで知らなかったw
>>750 コードからDOM操作するようなのはWPFじゃ普通やらない。
DOMアクセスしてテキスト書き換えるような事もやらない。
バインディングしておけば自動で更新通知受け取って書き換えられる。
UIの更新のための無駄なコードは書かない。
一部スクリプト言語使いたいならDLRでいいじゃないか。
ブラウザコントロール使うならJavaScriptからC#のオブジェクトを操作したりメソッド呼んだり
その逆も普通にできるよ
ブラウザ使わないにしてもV8とかC#アプリに組み込んでC#からJavaScriptのコードを実行させることは可能
その場合、JavaScript側に.NETのリフレクションAPIをラップして提供しておけば
JavaScriptから.NET側のあらゆる機能に自由にアクセスできる
>>753 そんなめんどくさいことしなくてもDLRでいけるだろ
DLRはJavaScriptもサポートしていたはず
言語だけJavaScriptでDOMは別物なんて何の意味もないだろ
あえてJavaScriptを使うのは、HTMLベースなら既存の膨大な資産を生かせるという
ただ一点が目的であってそれが最強の魅力でしょ
マルチプラットフォーム対応のためにJavaScriptで書く例はあるけど
.NETはMonoで対応できるしなあ
>>754 頓挫したよそのプロジェクト
DLR自体も結局失敗して今アクティブなのIronPythonだけだし
>>755 あらまw
DLRは結構便利だから期待してたんだが
>>751 俺も試したことあるけど正直幻滅した
ネイティブな機能性を求めるならMonoが推奨するようにUIは別個に作る
必要なければHTML
気に入らないがやっぱりこれだわ
DLRの成果はC#のdynamicにも使われてるCallSiteの仕組みとか
動的言語やC#のdynamicなどの間の相互運用のプロトコルを決めたこと
当初のゴールからはかけ離れてるけど一部CLR入りして役に立ってるよ
dynamicの中身はなかなか素敵だけど、
それでもDLRの一部しか入らなかったの残念ではある。
DLRでなくてもいいけども、動的言語間でのオブジェクト共有プロトコルはほんとほしいんだけどなぁ。
言語ごとに別ライブラリ覚えるとかナンセンス。
761 :
741:2012/08/23(木) 12:39:34.17
Qt と VS ならRADツールがあって云々で
一応コントロールを配置するところまで行ったけど
どっちも開発環境でかいし、その割りに使いから
MIKOScriptとか言うので画面作ってみるわ。
ただ、コントロールはコモンコントロールっぽいけど実体は中間コードだから
目的の Cheat Engine に付属の Lua スクリプトとトレーナ使うのと変わらない気はしてる。
>>760 ああ、DynamicMetaObjectが.NET上で使えることは知ってる。
そうでなくて、IronPython以外の実装も増えてほしいなぁという意味と、
ネイティブ実装なLLでも、もっとそういうメタプロトコル意識して作ってほしいという。
最近だとPhalangerというPHP実装があるよ
相互運用対応はまだイマイチみたいだが
質問する板を間違えてる
デスクトップアプリを考えたときに、Windows8を見据えると
WPFの将来ってどうなんでしょう?
WPF以外に使いたいプラットホームがあるならそれでどうぞ、って感じ
答えになってない
やりなおし
意味が分からないとは馬鹿な奴だ
>>767 WPFもSilverlightもRTも使えるコンポーネントに少し差があるぐらいで
ほとんど同じじゃんって思うのだけど
WinFormはもう終了なの?
スレ違いの気もするけど、Windows8のタッチパネル自体微妙だなって思う
単に見たりするだけの用途ならタッチパネルでもいいけど、
入力とか編集とかする場合はアプリなら10年後でも20年後でも
キーボードの方が入力効率はいいと思うし、
ゲームとかにしてもキーボードとマウスをフルに使ってプレイするような
複雑なものだと、タッチパネルだけで遊べるようになるとも思えない
他プレイヤーとのチャットとかもキーボード必須だろうし
結局、タッチパネルはタッチパネルで
外出先でノートで、何かを見るだけとか
一部の用途には有用だろうけど
デスクトップアプリやゲームは現状のまま残ると思う
スレチ
みんな最初は純粋だった
2ちゃんやってるうちに汚れてしまった
質問しても、揚げ足・コピペ・上から目線
もともと過疎だったのが、ますます過疎化していくんですよねぇ
>>773 終了
>>774 10年後、20年後なら音声入力の精度も向上しているだろうし
脳に電極埋め込んで、考えたことをダイレクトにアウトプットするようなことが出来るかも知れない
幼稚なこと言うな能なし
iPhogeなんてバカッターするためだけの道具だもんな。
>>774 タッチパネルがマウスとキーボードの代替になるというのではなく、新しい入力手段が一つ増えたとすればいいと思うけど。
iPadとかであるFlightControlやホッケーとかのゲームはタッチじゃないと難しい。
各々特性があるのだから時と場合に応じて使い分ければいいこと。
Metroアプリだって別にキーボードとマウスを排除してるものじゃないでしょ。
フォーム入力的な業務アプリだってMetroで作れると思うよ?それに意味があるかは別にして。
まぁVSみたいなものがMetroになるかって言うとそれはないでしょ。
自分的には
・フル画面のMetroアプリ・・・全画面でそれに集中するとともに、バックグラウンドではサスペンドするなど省力化に役立つ。OS再インスコ時などの環境の再現も可。
・デスクトップで動くMetroアプリ・・・WinRTベース。サスペンドなどは行われない。ストア経由での配布、設定のクラウド経由での共有など幾つかのMetroアプリの特徴を持つ。OS再インスコ時などの環境の再現も可。
・旧来のデスクトップアプリ・・・プロセス間通信など含め自由。自由が故、環境の再現などは出来ない。
とかが混在するようになると思うんだけどどうだろ。
>・デスクトップで動くMetroアプリ
これはない(ニーズも技術的にも)
Metroデザインはいらないけど、WinRTとか言語プロジェクションは欲しいかなぁ、ほかでも。
>>781,782
MetroアプリっつーかWinRTで作れるデスクトップ(全画面じゃない)アプリって意味だす。
タッチも有ってもいいとは思うけど、マウスとかキーボードをより意識したUIですかね?
WinRTは別に全画面Metroに限定させる必要ないし、むしろデスクトップで必ず使えるようにしてくると思う。
傍若無人のWPF、色々制限やルールがあるがそれゆえにメリットもあるデスクトップWinRTって感じですかね。
>>774 RT版Suarfaceにもキーボード兼カバー付けてくるぐらいだから
キーボード捨ててタッチにするなんてメッセージは発信してないよ。
両方使えるようにするのが基本方針。
お前らが作った自慢できるプログラムの主な概要を教えろ
wpfでか。デザパタ的な自己満の美しさとか、見た目的な俺スゲー感とか、
そんなのしかないと思うんだがw
テーマ変更出来る
Vista出る前にLonghornとして色々なジャンルのUIサンプル動画があったと思うんだが、今でも見れるやつないかね?
youtubeとかに上がってるかしら?
789 :
デフォルトの名無しさん:2012/09/02(日) 05:20:33.09
WPFはマウスのホイールボタンをインターフェイスの中心に置くべきだ。メトロの指志向より便利だ。
実際に作って見てわかった。完成したら公開する予定だ。
VMからMを直接公開するのってどうなんでしょうか。
手間とかは別として、MVVMの作法だけを考えた時に。
INPCとかINDEIとか、どうやってMからVに伝達したらよいかわかりません。
気持ち的にはMで実装VMで間接公開なんですが、冗長感たっぷりなので皆さんはどうしているのかなぁと。
それでいいよ
普通MVCってそうやるもんだし
なんだっけ。動的プロキシとやらをどっかで見たような。
微塵も調べてないしよく分からんが。
MVCっぽい方法…VMでM公開してVで直接Mのイベントを処理する
MVPっぽい方法…Vにインターフェイスを実装して、Mでイベントが発生したらVMがVのメソッドを呼び出す
MVVMっぽい方法…VMでMのイベントを処理してVMのプロパティに変換
3番目でやれる単純なことなら3番目が一番きれいだと思うけど時と場合によるだろ
>>794 もしも794さんが3番でやると決定したとして、どうやってVに伝達しますか?
>>795 そこは普通のMVVMのやり方に従うだけ
VM側は自身のプロパティの値を変更してPropertyChangedイベントを発生させる
V側はXAMLでバインドする
>>795 めんどくさかったらModelそのままVMの外から見れるようにしてVからダイレクトにバインドすればいいんだろうけど、物によるだろね。
MのイベントをVMで受けて、プロパティ値の変更としてVにバインドするのって
MVVMが想定する最も重要なシナリオだよ
てか、MVVMは別スレに隔離したんじゃなかったっけ?
結局こっちでいいのか?
そういや隔離スレがあるんだったな
つうかWPFスレででMVVM別にしても意味ねーだろ
SLやRT、最近はJavaでもMVVMで開発するからな
向こうの方が専門的な意見多いよ
概念は分かるんですが具体的にMが持ってるインターフェイスをどうやってVに伝えたらいいかなと思って。特にINDEIとかはイベント、プロパティーにメソッドまでありますよね。
時と場合に依るのはもちろんわかっていますが、お手本的というかオーソドックスな場合はどうやるのかなあと。
WPFさわって1週間のひよっこです
映画の訳を画面に表示するようなものを作ってます
取りあえず MediaElement と Label を貼り付けたXAMLが下記です
<Window x:Class="test05.Window1"
xmlns="
http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="
http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="378" Width="662">
<Grid>
<MediaElement Margin="0,0,0,0" Name="mediaElement1" Source="ファイル" />
<Label Height="28" Margin="40,300,0,0" Name="label1" VerticalAlignment="Top" HorizontalAlignment="Left" Width="560">Label</Label>
</Grid>
</Window>
これを実行させて、右下端をドラッグすると画面サイズが変わりますが、
Label は同じ場所に固定されたままです
これを画面サイズが変化しても
あたかも動画に埋め込まれたかのように見える
文字表示にしたいと思っています
(完璧でなくてもいいです)
つまり、MediaElement の画面サイズが変化するのと
シンクロさせて Label の表示位置、サイズ、フォントサイズを
調節して表示したいのです
これを自分でやってみたのですが
どうしても実現させる方法が見つかりませんでした
どなたか良いアイディアを頂けないでしょうか
よろしくお願い致します
Viewbox使うのが簡単
スターサイズだ。
フォントサイズにMultiBindingとかで画面のwidth heightをバインドして
コンバータで一定の基準で変換するとかいうアホな方法を考えたが、ViewBoxの方がいいな。
<TextBox Text="{Binding DataSource, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="LostFocus">
<ei:CallMethodAction TargetObject="{Binding}" MethodName="Xxx"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
こんな感じでメソッドをバインディングしているんですが、<i:Interaction.Triggers>をスタイルのように複数のTextBoxに適用する方法はないでしょうか。
一括で処理したいtextboxをgridとかに入れ子して、grid側にトリガー書けばいい。
今ってヘルプファイルは何が主流?
chm ? ただのhtml ? それともReadme.txtのみ?
落ち着いてスレタイ読もうか
>>811 まだWPF始めたばかりでおかしな事を言っていたらごめんなさい。
あくまでトリガーにしたいのはTextBoxなのですが、Gridにどの様に書いてどうやってTextBoxに関連付けるのでしょうか?バブルアップというのですか?
また、対象のTexBoxと対象外がバラバラに配置されている場合は、選択的に設定できますでしょうか?
Trigger部分込みでUserControlにしちゃえばよくない?
複数のTextBoxを配置するところに、そのUserControlを代わりに配置するだけ
俺はそんな感じで似たような部分を作ってたけど。
UpdateSourceTriggerがPropertyChangedじゃなかったら、
setterに書いちゃうのも手なんだろうけど・・
ニコ動プレイヤーでも作りたそうだな
今ってWPFで作ったアプリのヘルプファイルは何が主流?
chm ? ただのhtml ? それともReadme.txtのみ?
だからWPFと関係ないだろw
全部使われててどれが主流ってのはないから好きなの選べ
関係あるだろ
関係あるというならXAMLのフロードキュメントかXPSで作れ
2点質問があります。
(1)
public async void Foo()
{
await Bar();
}
上記のメソッドをCallMethodActionでバインドしている場合、Fooが実行中は特定のボタンをDisableにしたいです。
現在はボタンにCommandがバインドされており、canExecuteの条件にFooが実行中かどうかを追加できればいけそうなのですが方法がわかりません。
(2)
ObservableCollectionをバインドしたComboBoxとそのComboBoxのSelectionChangedで更新されるTextBoxがあります(CallMethodAction経由で更新される)。
ユーザーがComboBoxを変更したときには問題ありません。
しかしModel側でObservableCollection内のItemの位置を変更する場合があり、この場合はTextBoxを更新したくありません。
このような場合は、どのようにしてTextBoxを更新を止めたらよいのでしょうか。
>>822 (1)
try { IsFooButtonEnabled = false; await Bar(); }
finally { IsFooButtonEnabled = true; }
IsFooButtonEnabledプロパティはボタンのIsEnabledプロパティとバインド
(2)
TextBox.TextとComboBox.SelectedItemをいったんそれぞれVMのプロパティにバインドして、
VMで仲介してやれば自由自在
どっちもフラグでも立てとけばいんじゃね。で、canExecuteと、2のメソッドで判定。
CanExecuteって通知のためのコードが汚くなって嫌いだわ
VMにコマンド並べてるような場合、どうせコマンド一つごとにCanExecute設定する必要なんて
まずないんだから、プロパティをIsEnabledにバインドする方がスマート
なるほど!finallyを使えばいいんですね!目からうろこです。
(2)ですが、「それぞれのVMのプロパティーにバインド」という意味が理解できませんでした。VMを2個つくるということでしょうか?
なわけないだろw 普通にバインド。SelectionChangedでSelectedItemのsetterが
走るわけだから、トリガーいらねーだろってのと、あとは分かるな?ってことだろ。
>>826 VMに仮にSelectedItemプロパティとSelectedTextプロパティが定義するとして
それをそれぞれComboBox.SelectedItemとTextBox.Textプロパティにバインドする
そうすればあとはVMのコードだけの問題だからどうとでもできるだろうということ
理解力がなくて情けない&申し訳ないのですが、SelectionChangedではなくSelectedItemのSetterでTextの制御をするということでしょうか?
もしそうだとすると、どうやってユーザーによる変更かどうか判断するのでしょうか…
ModelでItemの位置を変えるのがそもそもマズイ…?
わからなくなってきた…
Model側でObservableCollection内のItemの位置を変更するタイミングは当然わかるだろ?
だったらその後に呼ばれたSelectedItemのsetterは無視すればいい話だろ
概念は理解できたように思えます。
モデルからフラグを公開してそれで判断するような感じでしょうか。
どうしたらきれいに実装できるかまだ頭で整理できてないですが、明日早速試してみます。
ありがとうございました!
出 来 る 事 か ら や れ
できることしかやってこなかったからお前みたいな馬鹿が育ったんだよ。阿呆には理解できないだろうが。
できることすらやってこなかったら君のようになるんだね。
まぁ背伸びしてやってみるのは良いと思う。
業務でやったら殺すけどなw
>>833 できることから、と成長を示唆するひと
>>834 できることしか、と自分で自分の可能性を封鎖しちゃう人
>>835 できることすら、と過去をも否定する人
838 :
805-806:2012/09/07(金) 11:34:17.49
色々ご助言下さりありがとうございました
試してみます!
いえいえ
Windows8だと、デフォルトの状態がTextBoxのレイアウトなんか文字がすごく上端に寄って見た目が悪いんだが、きれいに修正する方法ないですかね。
できれば、XP,7,8で均等なレイアウトを維持したい。
テーマを明示的に指定する
WPFに入ってるのを使ってもいいしWPF Themesを使ってもいいし自作してもいい
スライダーのつまみを自前の画像にしたいんですが
どうすれば出来ますか
843 :
840:2012/09/09(日) 14:46:02.90
解決したかも。
PaddingとVerticalContentAlignment辺りを変更すればわりと普通になった。
XPや7でも見た目大丈夫かはまだテストしてないけど。
てか、8用に良さげな値見つけるの面倒くさい。
WPFが採用されたのはどのOSから?
VISTA
WPFは4以上でないと使い物にならないからプリインストールされてるのはWin8から
インストールすれば4が使えるのはXPから
でもXPだとインストールしてもCPUでエミュレートしているだけでグラボ使ってくれないよね
VISTA以降だとグラボ使ってGUIを描画しているの?
DWMが一人でやってくれました
でも、一本の線を描くごとにDrawPrimitive()を呼び出してるからかなり遅い
話ぶった切るけどxamlをpartial classみたいに割るにはどうしたらいい?
検索してもリソースディクショナリとユーザーコントロールの話しか見つからない
その辺は既にやってるんだけど、不可分な所が膨れてしまったので、収まりがつかない状態になっているんだ
無理ならVS使うのやめてmakeとcatでお茶を濁すので
可能か不可能かだけでも教えてもらえると嬉しいな
xamlでも継承できるんだからそれでいいんじゃないの?
あとはユーザーコントロールを利用するとか
そうすればそんなに長くならないはずだが
ssiとかマスタページみたいな感じか。しらん。
不可能のような気がする
断言は出来ないけど
出来るって話は聞いたことがない。
ちなみになんでそんなに膨らんでんの?そのへんの作りの方が問題なきガス
分割したほうが逆にわかりにくいだろw
膨らんでるのは設計したのが僕じゃないからです
しかし僕には設計者に口を出す権限はありません
そいつここに呼んでこい
ボコボコにしてやるから
Windows8で特にいじってなければ、システムのレンダリングが使われると思っていたけど、微妙に違うよね。
これ同じにするにはどうしたらいいんだろう。
ボタンなんかかなり違うし、テキストサイズ変えるとボーダーな部分が汚くなる。
VS2012のIDE自体も同じ現象あったり。なんか作り込みが甘い気がする。
blendまだかよ
通常のデスクトップ+わきに2割くらいのメトロアプリで、
なんか便利な使い方ができないかなと思った。
メトロなんて言葉使うやつまだいたんだ
>>713 Feedbackで散々報告されてるが、英語圏の人には理解できないらしく、
再現しない。で全て終了だよ。
あっちはもともとプロポーショナルな文化だからな。
1Pixel程度のずれにこだわっているなんて、想像もつかないんだろうなw
WPFって日付 + 時間を指定するコントロール無いの?
デザイナ超使いにくい
<ListBox ScrollViewer.HorizontalScrollBarVisibility="Disabled" ItemsSource="abcdef" >
エラー1
IEnumerable の TypeConverter は、文字列から他の型への変換をサポートしていません。
これバグじゃねえの
2010のデザイナは動いたよね
実行に際しても別に問題はないはずだが
一応確認したけど2010だと起きないな。
それ以前に
ItemsSource="abcdef"がゴミ過ぎる
全く同じメッセージ自体は2010で見たことはあるな。なんだったか忘れたが。
>>869 バグ再現のためにわざわざデータ用意する必要ないもの
そんなことも分からんか?ゴミが
レイアウト作り始めの時とか、とりあえずデータテンプレートを表示させるために適当なシーケンスを与えることはあるでしょう。
別に珍しい使い方じゃないよ。
コレクション要求してるところに文字列ぶち込むなってことだよ
言わせんなよはずかしい
>>874 ItemsSourceはIEnumerableを要求しているけど、Stringは条件に合致してるじゃない。
何が不満なの?
>>874 お宅の言うコレクションの定義って何ですか?
実行時と挙動が異なる理由は?
2010のデザイナと挙動が異なる理由は?
合理的な範囲でお答え下さい
XAMLだぞ?
回答ないな
論破
僕の先生は〜フィバー
>>875 Connectに上げとけw
VS2014で修正されるから。
あなたとコネクトしたい…
あなたと熱中
あなたと熱海
System.Windows.Interactivity.Behavior<T>とGet〜、Set〜を使って作る添付ビヘイビアって具体的に何が違うんでしょうか?
対象の型毎に番う処理ができる。くらいじゃね?
ライフタイムが管理されてる
Prism 4.1でModule側の値をShellのWindow.Titleに代入する方法はありますか?
Prism的な正攻法でいくんなら面倒でもDIを使う。
Titleプロパティを持ったIShellインターフェイスを宣言して
それをShellが実装する。そしてIoCコンテナにIShellとしてShellのインスタンスを登録しておく。
モジュール側のクラスは、セッターインジェクションかコンストラクタインジェクションで
IShellインターフェイスを要求する。
そのインターフェイスを通してShellのTitleを設定する。
Prism使うんならDIコンテナは必須だけど、Prism標準のMEFやUnityは使いにくいから
AutofacやNinjectおすすめ
はやくPrism4.5出ないかな
もう出ないんじゃね
patterns&practicesで次に似たようなのが出るとしたら
ASP.NETのWebサービス + WinRTの各種言語やブラウザのHTML5でクライアント
だろうな
TreeViewにXmlの内容をデータバインドで表示させたいのですが
ItemsSourceにXmlDocumentを参照させただけではやはり望んだ表示にはなりませんでした
特定の属性のデータを表示させたい場合には何をすれば良いのか分からずつまづいてしまいました
どなたか解決方法を教えて下さいませ
ひえらるきかるでーたてんぷれーと
WPF慣れたら楽しすぎワロタ
Formと違って直感的でないとか言ってた
過去の俺をぶん殴ってやりたい
Blendの使い方を覚えるのが面倒くさい。
なんかもっとチュートリアル用意して欲しい。
WPFをそれなりに使えるようになるとFormsに戻れないよなw
今からWPF始めたいんだけど、とっかかりにいいサイトとかないですか?
そんなのあったら俺はこんなに苦しんで来なかった
無いんじゃないでしょうか
とっかかりなら@ITのWPFやXAML入門のやつでいいんじゃないの?
俺はそこから入った
前提知識ゼロでもわかりやすい
同じく最初は@ITとか見てちょこっと書いた程度だったな
ありがとう。
@it見てみます。
でも相変わらず敷居高いままっぽいんですね。
本もあんまりないし。。
とりあえずxpでも動くwin8アプリみたいなのを作りたい。
WPFってwin8だとボタンとかの描画がシステムデフォルトの描画と違って、残念な気持ちになるよ。
未だにこれの良さげな解決方法がわからん。
リボンはRibbon.IsMinimum=TrueにしてApplicationMenuとHelpPaneだけ使用すればFireFoxみたいだな
WPF入門に@IT利用するのはお勧めしないな
無駄が多いし、説明が足りなかったり
(誰が肥満度チェックするためにプログラミングするんだよと)
やっぱりMSDNのラーニングで学習したほうが効率がいい
本当によく使う実例を元に解説しているから吸収しやすい
官公庁向けシステムは今後WPFでもOK?
それともWin8?SL5?まさかのWinForms?教えてエロい人
HTMLだろ
官公庁じゃないけど、ウチのグループの内製アプリはXBAP
官公庁ならまあHTMLでいいんじゃね…
Win8 → WinRTの事か?一般企業やコンシューマ向けならともかく、業務アプリでコレは無いわ
SL5 → サポートは2021年までだっけ、でも開発はWPFの方が楽だからなー
WinForms → 今更感溢れ過ぎ
× 一般企業やコンシューマ向けならともかく
○ コンシューマ向けならともかく
営業職が出先で使用するアプリとかいう想定はどうだろう>一般企業
尚更HTMLだろ
尚更HTMLだな
その場合、昨今の主流を考えるとスレートデバイスでの使用が想定されるから
917 :
デフォルトの名無しさん:2012/10/08(月) 05:14:31.78
>>901 @ITのWPFやXAML入門を何回読んでもわからないので、
いろいろ探したが、次のブログはためになった。
.NETな日々 - WPF
@ITは短いコードに対して長々と説明するから
読んでいるうちにわからなくなるよな
たくさんのコード例を出してくれる方が理解が早い
抽象的な概念を理解出来ない低脳はそうかもしれないね
>>917 ありがとう。
こちらもチェックしてみます。
C++erだが、WPFってまじめにやろうと思うと結構学習コスト高いな
ライブラリドキュメント見るだけでたいていやりたいことはできたけど
何とも前時代的で美しくない
バインドする為の下準備を各所でゴリゴリしなきゃならんのがダルイといえばダルイ。
下準備したのを継承すればいいだけだろバカ
//
/ / バカッ
//⌒)∩__∩
/.| .| ノ ヽ
/ | | ● ● |
/ | 彡 ( _●_) ミ Gayには無理
/ | ヽ |∪| /_
// │ ヽノ \/
" ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
「馬鹿には無理」が段々俺の見てるスレ全体に広がってるよう
俺に言われて悔しいがった奴が各所で使っているんだろうなw
バカはほんと救えない
Pythonスレでアレな質問に対してかなり前から使われてきたけど
最近は濫用がひどい
そうそうPythonスレ
俺以外にも見てる奴いるんだな
<Button ContextMenu={DynamicResource Hoge}/>
コンテキストメニューを、Windowリソースとして埋め込みました。
このコンテキストメニューをクリックした時に、
そもそもその表示をさせた原因となるコントロール(Buttonとか)には、どうすればアクセスできるでしょうか?
private void MenuItem_Click_1(object sender, RoutedEventArgs e)
{
//この中から、MenuItemじゃなくて、コンテキストメニューを呼び出した原因のコントロールにアクセスしたいです。
}
ContextMenu.PlacementTargetだったっけな
storyboardとeffectの使い方がわからない
コントロールにXAMLでアニメーションを定義
任意のタイミングでstoryboardをBegin()
アニメーションさせるのに条件があるから
LoadedとかClickとかのトリガーが使えない
933 :
デフォルトの名無しさん:2012/10/14(日) 08:45:02.11
XAMLを使うと、クリックしたボタンすら取り込めない面倒なことになる。
XAMLをつかわないなら、ボタンのクリックイベントの中で、
このボタンのインスタンスをグローバル変数に保存してから、
作成済みのコンテキストメニューをオープンすれば、
メニューのクリックイベントの中でグローバル変数に保存したボタン
でアクセスできる。
だから、XAMLは嫌いだ。
コード中でストーリーボードの生成から何からやってしまえば多分、今の自分の知識で出来ると思うんだけど
見栄えに関する内容はXAMLの方に書いておきたいんだよね
ビルドして出来たreleaseフォルダの中のものって
必要なファイルはどれですか?
wpftoolkitとかのdll郡はまず必要(外したら起動しなかった)
ソフト名.exeももちろん必要
ソフト名.exe.configも必要?
vshost関係は不要
pdbは不要
で判断に迷うのは
dll名.xmlファイル(Microsoft.Windows.Shell.xmlとか)
これ抜きでも起動できるのですが、
あった場合と無かった場合の違いがわかりません。
>>936 合ってる
dll名.xmlはライブラリのAPIリファレンスなので不要
そのxmlはインテリセンス用のやつだね
実行環境には不要
サンクス!
スリーエフ
原因がわからない怪現象があるんだけど(実際の怪現象はC)
@WPFのreleaseフォルダから、必要ファイルを、releaseとは別の
適当な名前(「10月19日配布要フォルダ」とか) にコピー。
Aこのフォルダをまるごと圧縮。
B自宅のデスクトップとかなら、これを解凍して、普通に動作する。
解凍後にフォルダ名を変更したり、
解凍したフォルダの中身だけを別のフォルダにまるまるコピーしても問題なく動作。
Cところが、別のノートでは、解凍したそのままのフォルダなら動作するが、
フォルダの名前を変更したり、フォルダの中身を別のフォルダにコピーすると
なぜか突然動作しなくなることがある(起動直後に強制終了)。
動作しなくなった後、フォルダ名を元に戻したり、元のフォルダにコピーして戻すと
再び動作するようになる。
(ちなみに、dllなども含めて全て解凍したフォルダに含まれていて、
その外へのアクセスなどは一切なし)
本来ならBの自宅デスクトップのように、フォルダ名変えても
まるまる別のフォルダにコピーしても動作するはずだと思うんだけど、
なんでCの現象が発生するのかわからない。。。
>起動直後に強制終了
せめてどこで落ちてるのか分からないと、エスパーしか答えれないわ…
スローさせっぱなしでデフォのアラート出してそう・・
DispatcherUnhandledExceptionでスタックトレースでも吐かせるんだ
32/64bit両対応の場合、インストーラーはどうしてますか?
PCが固まって強制的に電源切ったり停電したとき
XAMLのファイルが壊れる
WinFormsのようにキャッチしきれなかった例外を最終的にまとめてキャッチするようなイベント等はないでしょうか。
どこか一箇所でまとめてキャッチしたいです。
数行前に書いてあるだろ・・・
WPFのプロジェクトを新規作成して、MainWindow.xamlをダブルクリックして
デザイナーを開こうとすると
System.ArgumentOutOfRangeException
TimeSpan Period は、0 以上でなければなりません。
パラメーター名: interval
場所 System.Windows.Threading.DispatcherTimer..ctor(TimeSpan interval, DispatcherPriority priority, EventHandler callback, Dispatcher dispatcher)
場所 Microsoft.Windows.Design.Interaction.DesignerView.StartHoverCountdown()
場所 Microsoft.Windows.Design.Interaction.DesignerView.OnMouseMove(Object sender, MouseEventArgs args)
(長いので省略)
のようなエラーが出て、画面を編集することができません。
環境は、Windows7+VisualStudio2010 SP1 です。
なにかこの現象の解決策をご存じの方おられましたらご教授ください。
フリーの難読化ツールでおすすめは?
ありませんヌ
NanDokuとExpressObfuscatorを試してみたけど
難読化後のexe、起動しなくなっちゃうのよ
リフレクション使ってたりして問題のあるメンバやクラスは
ObfuscationAttributeで難読化対象から外せ
どれを難読化しちゃいけないのかわからん
どこで逝ってるのか確認しろよ
難読化してても自分で作ったんならなんとなく分かるだろ
作者のページに気軽に使えるようにーって書いてあるけど程度があるなこれは
デバッグビルドのexeを難読化してVSからデバッグ実行できるのん?
難読化の仕組みをある程度わかってないと使えない感じ
ログ吐くとかいくらでもやりようはあるだろ
頭使えよ
起動時に落ちるんだったら、プロセスやCLR自体の起動に失敗してるか、
ウィンドウやコントロールをロードするときに失敗してるか、
起動時に呼ばれる自分のコードで逝ってるか、くらいだろ
呼び出し階層の上から絞ってけばprintfデバッグでも大した手間じゃないと思うけど
Appのコンストラクタ→ログ出た
MainWindowのコンストラクタ→ログ出ない
だったらまずはAppもMainWindowもリソースも難読化無効でやってみて
それで動いたら一つずつ難読化を戻してみれば原因分かるだろ
それくらいいちいち人に聞かなくても自分でいろいろ試せよ
NanDokuでアセンブリのチェック全部外しても駄目だった
動作を停止しました
DLL使ってるから駄目なのかな?
XAMLに書く事があるクラスを
[ObfuscationAttribute(Exclude = true)]
すればいい。
とりあえずVSについてくるやつ試せばいいだろ。
Expressには無いんじゃなかったっけ?
難読化はいくつか試してみて商用レベルのソフトをまともに難読化、稼働できたのはdotfuscatorだけだった。ステマじゃないけど。
後のは起動しなかったり難読化途中で落ちたりとか。
WPFでは試してないけど。
お前の糞コードなんか誰も読まないから安心しろ
読まれると恥ずかしい糞コードだから隠したいんだよ
気持ちはわからんでもない
いい加減、ほぼ100%戻せるのは勘弁して欲しい。なんなんだ中間言語って仕組みは
中間言語であることとは本質的には無関係だよ低脳
おまいらみたいな優秀な人間でも
中間言語からネイティブバイナリ吐く
コンパイラは作れないのか
やろうとする人は皆無だろうね
無駄な手間を掛けるのは優秀とは言わない
単なるオナニスト
オナニー、気持ちいいじゃんw
おめーだけがな
ネイティブ&難読化てんこもりのウィルスですら解析されまくってるのに
ネイティブにした程度でどうにかなると思ってるってのも
ゆとりならではのお花畑妄想ですわ
時代を感じさせるね
無駄な手間を掛けないとRailsみたいなのは生まれてこなかったと思うの
978 :
デフォルトの名無しさん:2012/10/25(木) 21:59:54.68
javascript は中間言語(キリッ
あっそ。で?
無駄な手間を掛けるのが好きな人は
あえて.NET Frameworkの上に何かを作ろうとは思わないのでは。
どうせやるならJavaとかC/C++言語とか、
どのプラットフォームでも動いてそれなりに存続しそうな技術の上に組み立てると思うぞ
どーでもええですよ
バイナリコンパイラ売ってたと思うよ
欲しけりゃ金出して買えば?
きょうも無駄レス御苦労であった。
983 :
デフォルトの名無しさん:2012/10/25(木) 23:40:11.28
Winformだとヘッダーとフッターがあるベースクラスを継承して各画面作ってたんだけど、WPFだとそういうのムリっぽい?
それかWPFでもMVCのレイアウトみたいなことできる?
ControlTemplateだけで行けそう
>>983 そもそもそういうのに継承使うのはどうかと。コンポジション使え。