- 1 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 05:53:16.97 ID:oY263ilm.net]
- WPF(Windows Presentation Foundation)について語るスレ。
前スレ WPF(.NET, WinUI) GUIプログラミング Part30 https://mevius.5ch.net/test/read.cgi/tech/1667010874/ 関連スレ Windows 10 UWPアプリ開発Part 3 https://mevius.5ch.net/test/read.cgi/tech/1627556967/ コードを貼る場合は以下のサイトの利用をお勧め。 https://ideone.com/
- 875 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 18:44:34.81 ID:+wESSzqb.net]
- ViewModelはviewとmodelの間が互いにデコボコしてて
綺麗にくっつかない場合に間に入るつめもの もともときれいにくっつくなら不要 Viewが変わればまた形に添ったViewModelが必要になる
- 876 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 19:17:40.59 ID:0zAKJthF.net]
- クライアント側にあるView層にViewとViewModelがある
サーバー側にModel層があって自分の場合はREST full APIで作られたSaaS出ある場合が殆ど 業務ロジックはModel層内に全てあるので再利用可能
- 877 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 19:22:25.33 ID:0zAKJthF.net]
- View層にはWPFを動作させるための処理しかない
View層をReactで作ってもそこにあるのはReactを動作させるための処理しかない 業務ロジックは全てサーバー側にあって全く無駄にはならない
- 878 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 21:51:01.50 ID:lnQo2el+.net]
- >>762
今思いついたんだが「sugar dragonfly」はどう?
- 879 名前:デフォルトの名無しさん mailto:sage [2023/09/01(金) 16:45:19.11 ID:ba1FgNHl.net]
- 機器の通信サンプルアプリをWPFで作るのは有り?
サンプルを参考にする相手がWPFを使ってるかわからないから、WinFormsの方が無難かな? 一番無難なCUI版は出来たからコアの通信部分は変わらなくて、通信結果を見やすくするだけなんだけども
- 880 名前:デフォルトの名無しさん mailto:sage [2023/09/01(金) 17:16:03.23 ID:E0s4hvcN.net]
- ActiveXでExcel VBA対応するのが無難だな
- 881 名前:デフォルトの名無しさん mailto:sage [2023/09/01(金) 19:47:27.67 ID:+613Qa0i.net]
- >>866
それはVMじゃない。どっちかというとMVCのCに近い。
- 882 名前:デフォルトの名無しさん mailto:sage [2023/09/01(金) 21:56:19.74 ID:42muqi3u.net]
- >>866の説明はCよりVMよりだと思う
VMはModelを特定のView用に変換した状態を持っておくもの MVC Vーーーーーーーー 監視 ーーーーーーー>M Vーーー入力ーー> C ーーー入力ーー>M V<ーーーーーーー 通知 ーーーーーーーーM MVVM Vーーー監視ーー> VM ーーー監視ーー>M Vーーー入力ーー> VM ーーー入力ーー>M V<ーー通知ーーー VM <ーー通知ーーーM
- 883 名前:デフォルトの名無しさん mailto:sage [2023/09/01(金) 22:06:47.51 ID:XOi5r4E6.net]
- みんなめちゃくちゃだな..
- 884 名前:デフォルトの名無しさん mailto:sage [2023/09/01(金) 22:16:55.21 ID:+613Qa0i.net]
- >VMはModelを特定のView用に変換した状態を持っておくもの
なにその珍解釈
- 885 名前:デフォルトの名無しさん mailto:sage [2023/09/01(金) 22:33:11.78 ID:dq5C6mfu.net]
- 一人だけ俺様理論がおるな
- 886 名前:デフォルトの名無しさん mailto:637 [2023/09/01(金) 22:55:04.64 ID:86UzGWyS.net]
- みんなVIEWを差し替え差し替えでMODELを流用することやってるの?
- 887 名前:デフォルトの名無しさん mailto:sage [2023/09/01(金) 23:31:31.63 ID:hl1Bipr4.net]
- いや全然
- 888 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 00:18:16.99 ID:fOS98KnE.net]
- 自己満ですなーー
WPFのMVVMがまさに究極の自己満 MVVMとかvue.jsとかangular、androidとかでも普通に使うし そっちは実装コストもかからん
- 889 名前:デフォルトの名無しさん mailto:637 [2023/09/02(土) 05:21:08.01 ID:6VujaKd3.net]
- android studioはwindows formのポトベタと同じ感覚なんだが?
- 890 名前:デフォルトの名無しさん [2023/09/02(土) 08:18:23.73 ID:Fau+Wvgs.net]
- >>877
モニターアプリでは良くやるよ。 化学プラントの製品毎の画面やライン管理の製品毎の32~4096接点モニターとかね。 モニターと非常停止等の共通アクション画面なら流用する。 ただし、Viewのビハンイドコードトリミングは必要。 それらを再利用というには微妙だな。 VMはペアで消費するものと考えるのが普通。 再利用というのはロジックの再利用を言うのが一般的じゃね?
- 891 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 09:33:36.47 ID:fwdoqn2z.net]
- 結局VMに何らかの描画以外のロジックを書いてる人が多いんだろうなと
mvvm原理主義者じゃなければ別に好きなようにしたらいいんだが WPFは結局どのように実装すべきなのかハッキリとしたパターンが確立されなかった これが一番の問題だった 明確に役割分担してオブジェクトの生死を適切に管理してる人間がどれだけいるのか
- 892 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 09:49:03.02 ID:fOS98KnE.net]
- >>875
あってるぞ MをVに表示させる為に必要な形に変えたものだ 例えばM(Web APIのResult)をVM(Vにバインディンク可能なデータ型)に変換してVと接続する
- 893 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 10:06:25.37 ID:fwdoqn2z.net]
- 状態と言う意味が通じていないので話をしても無駄
v vm mでそれぞれ状態は持ってる 普通はmの状態のことを話すんだけど双方の話がかみ合っていない
- 894 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 10:12:13.25 ID:fwdoqn2z.net]
- 本来はMと全層から利用されるビジネスロジックが主体なんだけど
vmでガッツリロジックなり制御なりのコード書いてる人が多い そういう人から見るとvmは状態を持っていると言う主張になる
- 895 名前:デフォルトの名無しさん [2023/09/02(土) 10:21:43.71 ID:Fau+Wvgs.net]
- >>882
だね。 ViewModelはインスタンスプールの場という認識が無いとそうなるね。 Bitmap加工にしても、ロジックは別の層に置くもの。 ロジックはDomain層、ドライバーはInfrastructure層でカキコしておけば再利用というスタイルの本筋が見えてくる。
- 896 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 10:42:05.01 ID:ePvjWEyO.net]
- wikipediaだとこうだな。VMはVが表示すべき状態を保持するというのが普通の理解だと思う。
ViewModel ViewModel(ビューモデル)はViewを描画するための状態の保持と、Viewから受け取った入力を適切な形に変換してModelに 伝達する役目を持つ。すなわちViewとModelの間の情報の伝達と、Viewのための状態保持のみを役割とする要素である。
- 897 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 10:53:39.97 ID:UWvP69T4.net]
- という事はバリデーションもvmじゃなくてmでやるの?
- 898 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 11:59:17.23 ID:+7egXD0v.net]
- >>887 の定義だとちょっと密に思えてしまうな
https://learn.microsoft.com/ja-jp/dotnet/architecture/maui/mvvm 大まかに言うと、ビューはビュー モデルを "認識" し、 ビュー モデルはモデルを "認識" しますが、 モデルはビュー モデルを認識しておらず、 ビュー モデルはビューを認識していません。 したがって、ビュー モデルではビューをモデルから分離させ、 ビューとは独立してモデルを進化させることができます。
- 899 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 12:40:51.82 ID:CPf5VJuY.net]
- 君たち一旦モデルの事はわすれろよ
めちゃくちゃすぎる
- 900 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 13:16:00.96 ID:CPf5VJuY.net]
- >>882の言うようにハッキリとしたものがないと同意した上で言わせてもらうが
>そういう人から見るとvmは状態を持っていると言う主張になる VMは状態をもつ めちゃくちゃすぎる 普通に状態を持つ
- 901 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 13:18:09.94 ID:fwdoqn2z.net]
- アプリケーションの真の実態はMなんだから忘れることじゃないな
勘違いされがちだけどMはデータ置き場でもライブラリでもないアプリケーション本体 VMは表層でしかない メッセージの仲介所 上で書かれたインスタンスプールでもない 仕事をするにあたりただどこかにあるモデルへの参照を持っているだけ ModelAとModelBを参照して計算してModelCに入れるのはVMの仕事ではない VMはMに単純なメッセージ飛ばすのが仕事
- 902 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 13:35:29.82 ID:CPf5VJuY.net]
- ロジックを単にロジックと表現したりするとこみると
ロジックをビジネスロジックとプレゼンテーションロジックに分けて 考えてないよね ここで>>882のじゃあ明確なその区別のルールは?って問題が出てくるが
- 903 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 13:44:31.42 ID:fwdoqn2z.net]
- どうも自分の書き込み全体じゃなくて部分的な文章しか見てもらえてない気がする
>>884とかガン無視されてる
- 904 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 13:46:57.02 ID:fwdoqn2z.net]
- あ、vmが状態を持つのはそのように書いたからであってあまり意味はない
適切なのかどうかは知らない
- 905 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 14:04:49.20 ID:CPf5VJuY.net]
- でも>>892の見ると、君完全にFatModelの某riga◯◯氏の主張だよね
- 906 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 14:09:38.75 ID:fwdoqn2z.net]
- >>896
誰それ? VMは可能な限り薄くすべきだよ
- 907 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 14:19:20.78 ID:CPf5VJuY.net]
- >VMは可能な限り薄くすべきだよ
いやいや、ViewModelは作る画面をモデル化したものだから それは作る画面次第だから VM薄くするために要件にまで介入する気なの? (もちろん、VMに限らずスパッゲッティ排除したりすることはいいことだが)
- 908 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 14:32:46.57 ID:Opj29vAW.net]
- >>888
サーバー側でも結局必要になる処理なんで バリデーション機能を提供するWebAPI定義してそっちでやってる パフォーマンスもローカルでやるのと変わらん 自分設計の案件は 小計行の合計値など画面に表示されるものほぼ全てサーバー側での計算値だ
- 909 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 14:40:30.69 ID:CPf5VJuY.net]
- >メッセージの仲介所
>デコボコしてて綺麗にくっつかない場合に間に入るつめも これが先じゃないんだよ 例えば、学生を扱う時に「Student」クラス作ってNameとかAgeとか 状態持たせて「モデル化」するのと同じように 作る画面を同じように状態抜き出してロジック与えて名前を 付けたものがViewModel こっちが先
- 910 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 14:48:44.91 ID:CPf5VJuY.net]
- で、ViewModelの実装において画面が複雑なら、ビューモデルに書くプレゼンテーションロジック
が複雑になるし、Modelにドメインロジックの実行を依頼したりする だから、 >メッセージの仲介所 とか表現が極端すぎる ViewModelは画面をモデル化したもので、立派に独自のプレゼンテーションステート やプレゼンテーションロジックも持つ立派な1つのエンティティです
- 911 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 15:38:06.62 ID:5BMaIqoW.net]
- >>900
>作る画面を同じように状態抜き出してロジック与えて名前を >付けたものがViewModel 作る画面(View)のもとになるのがModelなのでその過程をどの程度意識しているかどうか 言い換えればViewを所与のものとして受け取っているかどうかの違いでは? それ以外の点はほぼ賛同できる
- 912 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 16:13:13.84 ID:ePvjWEyO.net]
- >>902
>作る画面(View)のもとになるのがModelなのでその過程をどの程度意識しているかどうか アプリケーションの実装はそう考える場合があるかもしれんがMVVMパターンとして MとVMにそういう関係があることを求めてはいないと思うがな。
- 913 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 16:37:06.13 ID:CPf5VJuY.net]
- >>903
いいこというね >>890のモデルを忘れろってそういうことなんだわ ViewModelはあくまでも作る画面をモデル化しておとしこんだのであって、 その作る画面がどのModelが元になってるか関係ないんだわ
- 914 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 17:02:01.28 ID:fwdoqn2z.net]
- 自分でロジックブーメラン投げて刺さってるし触れるだけ無駄なんだなと
ヒマつぶしにriga○○が何なのか調べてみたけどわからなかった 更に調べるとかなり前から懐かしのugayaのことをrigayaと言ってる人物がいる 多分この人なんだろう rigayaと言うのは別人がいてNVEncの作者
- 915 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 17:08:17.47 ID:CPf5VJuY.net]
- >>905
ごめんごめん rigayaはNVEncの作者でugayaのほうか悪かった
- 916 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 17:18:55.85 ID:fwdoqn2z.net]
- ロジックブーメラン
- 917 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 17:35:30.95 ID:CPf5VJuY.net]
- 何、しつこく
それも謝ってほしいのか? すみませんでした
- 918 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 17:45:52.02 ID:ePvjWEyO.net]
- なんの話をしているんだろうと思ったがこれか?
https://ugaya40.hateblo.jp/entry/model-mistake
- 919 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 17:57:45.40 ID:CPf5VJuY.net]
- そうそれ
全部Modelに押し込めってことか?って事で FatModelって勝手に呼んだけど 完全な正解はないから俺も含めてみんなおれおれMVVMを信じるだけw
- 920 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 18:42:57.12 ID:ePvjWEyO.net]
- 俺も>>909はVMの要件とは思わんな。
ただ、V→VM→Mというクリーンアーキテクチャで考えるならMからVMへの依存性逆転に使うインターフェースは M側に含めることになるかな。それが「Modelの影」にあたるのかもしれんが。 言葉としては違和感があるな。どっちかというと「Viewの影」の方がしっくりくる。
- 921 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 22:11:29.82 ID:fOS98KnE.net]
- 「Viewの影」か...
VMにはMからの応答データ以外にも カレントフォーカスやら リスト系入力コントロールのカレントインデックスやら 入力コントロールの変更前値なども保持してるね これらはMではあまり取扱かわない
- 922 名前:デフォルトの名無しさん [2023/09/03(日) 18:43:28.44 ID:PKYmB8Sw.net]
- >>911
Mにインジェクションはまずくね? そもそも、EntityやModelは定義とロジックが入るクラスで、かつ、Domainに属するクラス。 ViewとViewModelはApplicationレイヤー。 Domainとは、外部参照ができない領域で、そこにPropertyインジェクションはリスクを覚悟した使い方。 何事もトリッキーが必要になる事はあるが、SOLID原則は可能な限り守るべき。
- 923 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 18:47:29.66 ID:McvOhRnv.net]
- この5chブラウザって実行できねぇじゃねぇかよ
とりあえずWindows 11 ProのSandbox環境立ち上げて 実行してもSeach app in the store?だっけ? とダイアログが出て実行できねぇ .NET 7のランタイムとかいれてもだめやわ だるっ
- 924 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 19:07:48.99 ID:Zxyqi4pM.net]
- >>93
>Mにインジェクションはまずくね? どこからそんな解釈が?
- 925 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 20:37:38.19 ID:TWuH3asg.net]
- 本来のMVVMだとVMがMに命令を出してその結果をVMのプロパティーに反映だが
コレクションはMに無いとどうにもならないし、それをVMがリダイレクトする この時点で初期のVMMVは破綻しているよな
- 926 名前:デフォルトの名無しさん mailto:637 [2023/09/03(日) 21:08:54.26 ID:0JPdNbB1.net]
- デザイナーとプログラマーと別けてやるならそうだか、自分一人でやるんならマイルールで頑張れば良い。他人は他人、気にせずに行こう!
- 927 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 21:16:42.81 ID:Zxyqi4pM.net]
- >>916
>本来のMVVMだとVMがMに命令を出してその結果をVMのプロパティーに反映だが 本来のMVVMと言うが、MとVMのやり取りにおける役割分担ってそんなに明確に定まったものはないと思うが。
- 928 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 22:05:14.34 ID:Dhh2faXN.net]
- 【クライアント側】
View (WPF) ViewModel(WPF) Model(c#, 業務ロジック以外のロジック、例えばUI処理に必要なロジックなど) 【サーバー側】 Model(c#, 業務ロジック) みたいに実際はクライアント側にもModelが必要になる事が多い
- 929 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 22:46:24.33 ID:TWuH3asg.net]
- >>918
創世記の頃はさっき書いたようなのだったが、ビジネスロジックをほぼ全てMに書く派閥ができてカオスになった あと、ReactivePropertyでMから簡単にリダイレクト出来るようになったのも大きい
- 930 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 23:12:27.45 ID:3gQjLtaF.net]
- 今時はPropertyChanged.FodyやObservablePropertyで自動化
便利になりました
- 931 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 23:49:15.10 ID:Dhh2faXN.net]
- クライアント側やクライアント側にもModelが存在しえるが
ここにはUI要素が殆どなく(あったとしても抽象化されている) WPF以外からも再利用が可能だ ViewModelは特定のView専用に実
- 932 名前:装されており
異なる種類のViewの実装から再利用する事は望めないのが普通だ [] - [ここ壊れてます]
- 933 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 23:50:04.10 ID:Dhh2faXN.net]
- 訂正)サーバー側やクライアント側にもModelが存在しえるが
- 934 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 01:14:09.52 ID:vsxnPNVu.net]
- VewModelはViewの構成要素(データやコマンド)には依存するけど実装には依存しないでしょ
- 935 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 19:44:13.60 ID:J0Btfpeo.net]
- 昔SilverLightと言うのがありまして…
- 936 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 19:56:38.46 ID:1eoZIF84.net]
- 光ちゃん好き
- 937 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 20:00:29.56 ID:fuW/8CV2.net]
- M、VMはそのままで、VをWPFでもUWPでもUnoでもMAUIでもコマンドプロンプトでもまだ存在しないビューにしても成り立つのが理想のMVVM
まあ本体のバージョンやらなんやらで制約受けるんだけども
- 938 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 22:51:14.61 ID:7E+/PPwt.net]
- >>927
機種やOS依存しないのはMだけで、VMはWPFからWinUI3に変わるだけでも作り直し Win32とWinRTは名前空間が別だ
- 939 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 23:30:01.70 ID:J0Btfpeo.net]
- 前からいるVMは作り直さなくてもいいと言う人は実際に使ってない気がするんだな
- 940 名前:デフォルトの名無しさん mailto:sage [2023/09/05(火) 05:52:19.52 ID:DX9vicfo.net]
- Vが変わったらVMも作り直しとかそもそもお前のはMVVMじゃないぞ
- 941 名前:デフォルトの名無しさん [2023/09/05(火) 20:28:59.35 ID:qu07bRnx.net]
- MVVMでは、Modelはただの定義であって、それがどこにあろうが、ローカルインスタンスはViewModelにある。
ModelインスタンスはViewにバイディングされるが、Model管理はサブスティチューターやインタラクター等の中間介在者経由で行う。 Modelにインジェクションは、中にパーサーを持たせ、ファイヤーや他にアソシエートさせるという事だろうが、それは、再利用性を損ねる事になる。 MVVMは見かけはMVVMだが、実際には、疎結合実現のために、取り巻くサービスから構成される。
- 942 名前:デフォルトの名無しさん mailto:sage [2023/09/05(火) 21:33:41.74 ID:s337iXA9.net]
- お前の中ではな
- 943 名前:デフォルトの名無しさん mailto:sage [2023/09/05(火) 21:50:07.00 ID:vxLs2+zd.net]
- ここに限らずプログラマー板は全般的に設計の話題になるとグダグダだよね
- 944 名前:デフォルトの名無しさん mailto:sage [2023/09/05(火) 22:14:49.56 ID:FTgFHkq3.net]
- もう今はMFC/WinForms/WPFという過去の遺産グループに一括りにされる時代なのよね
WPFはなんていうか、オーパーツを発掘してる気分、腐ってやがる早すぎたんだって
- 945 名前:デフォルトの名無しさん mailto:sage [2023/09/05(火) 22:47:35.31 ID:vcpA6cRm.net]
- 何が言いたいのかさっぱり
- 946 名前:デフォルトの名無しさん mailto:637 [2023/09/06(水) 05:28:15.62 ID:CIPjTMvR.net]
- 結局プログラム言語とかプログラミング作法じゃなくてアイデアなんだよな。
それをセンスと言うのかな? MVVMはオートメーションの作法なんだよ。 俺は機械作業の一部になりたくないな。
- 947 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 06:00:45.77 ID:aEV5JQPD.net]
- ViewModelの再利用性なんて無限のコストをかけていいならいいけどさ
円周率を表示するアプリがあって3.14と表示するかおよそ3と表示するか画像取り込んで表示するかなんて Viewの仕様次第でいくらでも膨らむのにどうやってViewModelの再利用性を決めるんだ?
- 948 名前:デフォルトの名無しさん mailto:637 [2023/09/06(水) 06:51:57.86 ID:CIPjTMvR.net]
- UIは変化(進化)するWindowsとandroidも違うし、あと数年でMVVMなんて有ったなぁとなるかも知れない。昔の構造化とか。
- 949 名前:デフォルトの名無しさん [2023/09/06(水) 09:12:10.70 ID:UTcPybKQ.net]
- MVVM言いたいだけ
- 950 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 09:46:23.58 ID:iXwPGoYi.net]
- おののののか
みたいな?
- 951 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 09:47:40.27 ID:gzG1FQ5Q.net]
- >>937
さすがにその例なら再利用するだろ なんで一から作り直すんだ?
- 952 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 11:09:07.24 ID:EbyA7lxn.net]
- データをどう見せるかなんてViewのシゴトだしな
コードビハインド書きたくないとかはワガママだ
- 953 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 11:35:08.73 ID:Hs78urxK.net]
- >>942
それな! 本来Vのコードビハインドに書くものを外だししただけでこれがVMとか言っちゃうのが多すぎる。 >>937とかその典型。それに再利用ってのは本来将来のコストを下げるためにやるもの。 半端もんは口出さずに100万年ROMってろってこった
- 954 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 11:44:28.70 ID:CARezZ1i.net]
- あくまでも個人の感想です。
- 955 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 11:57:04.90 ID:jZLgLXW4.net]
- VMはVに依存する=WPFならWPF専用になる
汎用クラスだけでVMが書けない以上不可能なんだよね
- 956 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 13:38:44.54 ID:d8gQVss7.net]
- MVVMじゃなくてViewとModelだけのVMパターンだね
- 957 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 19:08:19.79 ID:49e0pxsZ.net]
- 最終的にはそういう事
m vm vをどうしても二つのグループに分けると v vm とmグループになる vm再利用とかありえない
- 958 名前:デフォルトの名無しさん [2023/09/06(水) 20:03:38.91 ID:R922v4XL.net]
- >>946
だね。 V+VMはペアで中味はトリッキーでもなんでもご自由にどうぞ。 V+VMとMの関係がアーキテクトの骨子。
- 959 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 20:08:53.79 ID:ZnJznt7P.net]
- WPFのはMVVMというよりblandパターン
MVVMとは関係ない実装がVMに多すぎ
- 960 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 21:58:31.52 ID:H3c+Isko.net]
- blandパターンって何やねん
- 961 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/09/08(金) 20:01:30.51 ID:xsuhKaXw.net]
- WPFはパフォーマンスでないねぇ
UI仮想化しないと初期表示がくっそ遅いし、仮想化するとスクロールがガクガクする WebViewを試してみるか
- 962 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 20:04:01.88 ID:uWWTBRXF.net]
- >>951
WPFからReactに移ったときWeb速や!って思た
- 963 名前:デフォルトの名無しさん mailto:sqge [2023/09/08(金) 20:57:27.63 ID:AJzWVUJo.net]
- WPFってそんなやべぇやつだっけ?
昔、UWPアプリで、6年くらい前のスマホSoCのatomのタブレットでスクロールちょっと重いなと 格闘した記憶あるけどデスクトップPCやろ?
- 964 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 21:01:43.66 ID:AJzWVUJo.net]
- UWPアプリのしたらばリーダーみたいのMicrosoft Store
になかったけ? それでスクロール試してみん サムネイル画像の表示とかもやってたはず
- 965 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 21:15:10.75 ID:AJzWVUJo.net]
- コードみたけどレスの表示にRichTextBox使ってるの?
これ重いんじゃ? TextBlockとかでがんばるとか ってどの部分重いのか知らんが レス表示だよね?
- 966 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 21:30:39.96 ID:/3OGw28W.net]
- UI仮想化してるならコンテナーのリサイクルも有効にしてる?
- 967 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/09/08(金) 21:49:54.47 ID:xsuhKaXw.net]
- >>955
試した。色々。 1個のどでかいTextBlockもやってみた。 >>956 試した。 inlineのパフォーマンスがすごい悪いんだと思う。 stackoverflowとかもめっちゃググった。 その中の外人さんコメで「WPFやってるとプログラミング初心者に戻ったと錯覚する」っていうのが妙に刺さったw やっぱリフレクション主体のフレームワーク構造ってのに無理があるのでは。 少量のデータなら問題ないけど、ちょっと増えてくると指数的に重くなる
- 968 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/09/08(金) 21:58:52.02 ID:xsuhKaXw.net]
- 説明不足ですみません。
重いのはレス表示の部分。 範囲選択させたり、ハイパーリンク埋め込んだりなのでRichTextBox使ってる。 UI仮想化すると初期表示は早いけど、スクロールがガクガクだったり前回表示位置が上手く取得できなかったりとギブアップ気味。 これ以上この部分に時間かけるのもどうかと思い出した次第です
- 969 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 22:09:56.39 ID:/3OGw28W.net]
- 大量のデータならデータ仮想化もした方が良さそうだけど
- 970 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 22:21:08.42 ID:AJzWVUJo.net]
- RichTextBoxの範囲選択はあきらめたほうがいい
Janeとかもできないやろ? Webブラウザ使ってる余裕sikiはできるだろうが TextBlockでもマルチスタイルのインラインリンクぐらいはできなったっけ
- 971 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 22:28:15.74 ID:AJzWVUJo.net]
- >>957
ああごめんTextBlock試したのか じゃあWPFがやばいのか WinUIしてみようぜw >>953にも書いたがレス表示みたいな事を当時やったが デスクトップとかなら余裕だと思うんだが
- 972 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 23:00:10.22 ID:ZMs2WmkU.net]
- 10年以上前に自分が通った道を他人が歩いているのを見ている
今はIEコンポーネントもないしな
- 973 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 23:13:15.61 ID:ZMs2WmkU.net]
- 自分もrichtextboxから始めたけど開発スタート初日から見限った
これはダメだと 今より全然マシンパワーなかったから当然かと Sikiは仕組み上遅くなるのが分かってるのでもうそういう既存の仕組みを使わないで自力描画してるようだ レスをパースして行数計算して文字のフォントサイズを実際に脇に描画してそれを元に文字サイズを推定して 表示部分だけ自前描画 過去の自分も似たようなところにたどり着いて外部Dllを作ったがいろいろとうまくいかずc++からは戻って来た でもかなりレベルアップしたような実感が得られた(個人の感想です)
- 974 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 23:21:58.63 ID:ZMs2WmkU.net]
- 過去にここ?かc#のスレでたまに質問して技術を探ったがまともに回答できるレベルの人間はいなかった
結局フレームワークが提供するものを使わずに自前の疑似描画が最速なんだけど それがわかったとしてそこからは精神の問題になる 長い試行錯誤とこれは自分にとって時間をかける意味のあることなのかと自問自答
- 975 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 00:57:33.07 ID:hHjqEXWc.net]
- >>958
開発中の機能が重いわけ? レス数1000近くて画像リンク含むスレッド表示してみたけど どこがカクカクなのか分からない
- 976 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 01:14:55.16 ID:12n4cwT7.net]
- スレチだが、個人的には read.crx 2 をフォークするなりしてほしい
いまどき「Windows専用の5chクライアント」はちょっと...
- 977 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 01:26:18.10 ID:OYJBfPAk.net]
- 人のやることにケチ付けてないで、自分で作れば
- 978 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 02:13:46.91 ID:K25duMZT.net]
- んだんだ
- 979 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 02:39:19.20 ID:fuRqrN4P.net]
- 出来の良いエンジニアが全員Webで開発してるから仕方ない
- 980 名前:mdysdev● ◆XSDsAilQpD0E mailto:sage [2023/09/09(土) 06:59:15.87 ID:xfSBfAyx.net]
- スレ立てさせてください
- 981 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/09/09(土) 07:03:42.77 ID:xfSBfAyx.net]
- 次スレ立てました
WPF(.NET, WinUI) GUIプログラミング Part32 https://mevius.5ch.net/test/read.cgi/tech/1694210576/
- 982 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/09/09(土) 07:16:20.48 ID:xfSBfAyx.net]
- >>965
ホイールスクロールじゃなくてスクロールバーのつまみを持って高速で上下させるとガクガクしません? >>963 すごいね 時間とカネがあれば挑戦してみたいけど、 打算的な考えがはたらいてしまいどうも地味な部分(申し訳ない)に注力するのを躊躇してしまう これだと浅く広くになってしまってよくないんだろうけど。
- 983 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 15:42:58.83 ID:hHjqEXWc.net]
- >>972
うん、つまみもってスクロールさせてみた 他のsikiとかと比較すると吸い付きは悪いけど、実際使う上で この速度でイライラするかとそこはどうなんだろう >>954で上げたしたらばリーダーでやってみたけどゲロ速い
- 984 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 15:49:37.56 ID:hHjqEXWc.net]
- UWPとかそこら辺高速化する
事前バインディング(x:Bind)や段階的レンダリング(x:Phase)みたいのあるけど どれくらい効果あるのやら
- 985 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 18:25:25.91 ID:hHjqEXWc.net]
- xaml切り貼りして試したけど
>>956のこれでかなりスムーズにならね? VirtualizingPanel.VirtualizationMode="Recycling" これで解決やろ
- 986 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/09/09(土) 19:33:09.18 ID:xfSBfAyx.net]
- >>975
Recycling指定しただけだと表示されるレスがぐちゃぐちゃになってませんか? 結局RichTextBoxLoadedを呼びなおしてInline作らないといけないので、Recycling指定してもしなくても体感が変わらない気がします (というか変わらなかった) あとUI仮想化するときの致命点として、 表示されている近辺しかUIをメモリに保持していないので、 レス内の文字列検索する場合に全部探せないっていうのが・・
- 987 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 20:11:19.23 ID:hHjqEXWc.net]
- >>976
そっか 中身全然見てなかったww 元々LoadedでセットしてたからRecycleするとLoaded呼ばれなくなって中身が 更新されてなかったら速くなってたのかw 悪かった >レス内の文字列検索する場合に全部探せないっていうの ああ、これはRichTextBoxの機能でやろうとしてる? MVVM的にはViewModelのほうが全部データ持ってるはずだけど
- 988 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/09/09(土) 20:28:03.21 ID:xfSBfAyx.net]
- >>977
「検索にヒットしたレスだけを抜き出して表示」ならVMを検索してDataContextを再設定すればいいと思う。 ただ「レスを表示したまま」っていう要件で例えば検索ワードの背景色だけを変えたい場合って UIに全レスが読み込まれてないと出来ない気がするんだけど何かうまい方法あります?
- 989 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 20:53:19.09 ID:hHjqEXWc.net]
- >>978
ResViewItemViewModelのほうにアンカーやらリンクやらの 情報持ってるわけでしょ? そこに検索ヒット部分の情報持たせて、それらを混ぜて表示すればいいだけじゃない?
- 990 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/09/09(土) 21:00:00.66 ID:xfSBfAyx.net]
- >>979
ああ、なるほど。 理解しました
- 991 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 22:52:24.90 ID:6wE+xkUP.net]
- 色々ひっくり返るけど、WebView2でやるのが一番いいんじゃないかな?
- 992 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 00:01:36.42 ID:HR/6NGES.net]
- WebviewでやるならBlazor Hybridの方が良いかも?
C#と連携しやすいし
- 993 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 00:12:18.74 ID:/4aaxiYm.net]
- winformsとかwpfの案件ばかり渡り歩いてきたけどやっぱり斜陽なのかなぁ。きっちりウェブとかスマホアプリとかの勉強してそっちに軸足動かさないといかんのだろうか
とにかく不安で不安でしょうがない。何が一番不安ってwinformsやwpf本体以上にそういう現場って周りの開発環境自体もすごく古めかしいことが多い git?何それ?みたいなことばかり
- 994 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 00:16:03.86 ID:L5K9/P3E.net]
- そういうのはプログラマー板でやって
- 995 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 00:24:23.99 ID:W8P3LkyJ.net]
- 別にここでok
- 996 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 00:45:08.82 ID:y88PGdZC.net]
- その手の話はスレが荒れるからマ板で
特に「WPF以外は何がいい?」みたいな話に発展して、それもうWPF無関係じゃんってなる
- 997 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 00:47:46.81 ID:ZyGp2Gk+.net]
- 特別な用途別意外
デスクトップアブリの開発需要がないでー
- 998 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 13:31:19.20 ID:YVmQiRtO.net]
- 普通にデスクトップアプリは特殊用途でしか使われてない
CADとかそういうジャンルみたいのが一例
- 999 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 13:48:10.83 ID:YVmQiRtO.net]
- 10年以上前の話
工場などの管理アプリは以前はデスクトップだった 情報は生産管理室でしか見たりできなかった それがweb上に構築されて社内にいれば労働者が必要な権限のもと必要な情報を引き出せるようになった 営業も同じ 以前は会社に戻って日報ソフトで報告書を作ってたのがスマホから出せるようになった 作成も移動時間などの隙間時間を使える 在庫もその場で確認できる 以前は会社に電話確認してた DXが持てはやされる今なんで今更仕事でデスクトップアプリを使うのか 開発者のエゴなんじゃないか
- 1000 名前:デフォルトの名無しさん [2023/09/10(日) 14:09:35.55 ID:1PErJKRp.net]
- デスクトップやネイティブからWEBアプリになったのって
今はサーバー側の計算資源に余力あるのもでかいと思う フロント側で計算することが減った
- 1001 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 14:37:39.16 ID:YVmQiRtO.net]
- WPFが出る前後の話で描画がdirectXになるので速くなるのではと期待された
CADなんかもGDIから置き換えになるんじゃないかと C#が今よりメジャーになるんじゃないかと 実際はご存じの通りでまあなんでもあてにならんもんだなと
- 1002 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 15:37:57.94 ID:cU2jqfnk.net]
- webは手だしてみてるけど
いざ画面作るとなるといまいちcss操れないへっぽこさでなぁ
- 1003 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 15:52:00.61 ID:NUnFSs94.net]
- ワシらのためのbootstrap
- 1004 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 16:29:10.18 ID:qF59qXuI.net]
- >>932
それな 俺はflutterもやってるのでflutter for webに頑張ってもらってcssやらずに乗り切れるかどうか Webのバックエンドはgoとかやったけど
- 1005 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 16:32:58.69 ID:qF59qXuI.net]
- >>992だった
Webのバックエンド用にrustもかじったほうがいいのかな Web ApiでSQL叩くぐらいだけど asp.net vs go vs rust 悩む
- 1006 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|