- 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/
- 830 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 15:35:06.57 ID:QKHGYPpz.net]
- もともとc++などを含めた他の言語で野良コードを書いてた人が
ビジネス向けの専門学校みたいなところでC#を学んでDIとか色々知識があるような印象 そして丁寧にコードを書いてるけどまだC#が血肉にはなってないので元の癖が出る それか仲間の先生に当たる人が乱雑だったので変な癖が残っているか 誰か別の人間がところどころコードを書いたのかコピペしたのか
- 831 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 15:44:44.01 ID:FILnRN1t.net]
- 本当に具体性のない空っぽな指摘だな
こういうのが上司につくと辛い
- 832 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 17:09:36.31 ID:UpJ7Bk8S.net]
- https://devblogs.microsoft.com/ifdef-windows/windows-community-toolkit-8-0-pre-release/
- 833 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 17:15:40.72 ID:lyifkqna.net]
- >>822
上司じゃなくてもキツイだろ 関わりたくねーわ
- 834 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 17:15:42.20 ID:QKHGYPpz.net]
- >>822
いやいや指摘でもなんでもない 違和感を書いてる そして何も気が付かないにぶーい人に自分の見解を伝えてる
- 835 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 17:28:24.81 ID:QKHGYPpz.net]
- このスレの他の人はオリジナリティの話をしてる
昔からあるドラマや漫画で出てくるような芸術作品や演奏に対する指摘のようなもので 君の作品には情熱が感じられない教科書通りでつまらないみたいな話 いまだとばらかもんが丁度似た様な話をしてる 自分は今現在はそこまでの話をする段階にないと思う 適当なところで切り上げて色々デザインして経験してみたほうがいい気がする その後に作ったものが自分が楽しんで使ってることに喜びを感じるレベルになれば人からもそういった面で良い評価を貰えると思う
- 836 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 17:41:00.84 ID:UpJ7Bk8S.net]
- せっかくアプリ作って公開しましたと面白そうなネタが投下されたが
だめそうだな
- 837 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 17:56:06.42 ID:hcnbZQTk.net]
- それっぽいこと言って偉そうにしたいだけか
どうりで中身が皆無なわけだ
- 838 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 18:25:05.72 ID:W2Um6gjp.net]
- アクロバティックなものを所望ならBlazor Hybridもいいと思うのよ
実用性あるかは別の問題として、前例のないことをやるという点は満たしてる
- 839 名前:デフォルトの名無しさん mailto:637 [2023/08/26(土) 22:00:12.76 ID:16WUCkmH.net]
- 書き方なんてどうでも良いのよ?
ゲイツはみんなと違う画期的なコードで時代を切り開いた。
- 840 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 00:46:17.43 ID:W3b+7qIa.net]
- >>825
では俺も ID:QKHGYPpz のレスを見て指摘でなく違和感を書こうかな 誰の何の役にも立たない独り言なら、多数が集う掲示板でなくチラシの裏にでも書いて誰にも見せず捨てればいいのに 会話できず、するつもりもないと開き直るなら掲示板にくるのは無駄だし害悪ですらある これに気が付かないにぶーいID:QKHGYPpzに自分の見解を伝えてみた
- 841 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 09:09:39.66 ID:4wYaVVdN.net]
- お前の方こそブーメラン刺さってねw
- 842 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 11:36:52.09 ID:3H5CXIUM.net]
- >>830
どんなの?
- 843 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 12:46:27.21 ID:W3b+7qIa.net]
- >>832
そのとおりだよ。わざと >>825 を真似て醜悪な文面にしたのだから >>831 のレスは ID:QKHGYPpz の鏡だよ
- 844 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 12:58:47.33 ID:t0g5o5TS.net]
- そんなこともわからない>>832の頭の悪さときたら
ってことでしょ
- 845 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 13:51:55.91 ID:vknuNgDk.net]
- viewmodelsって対応するviewに表示するためのデータとロジックを持ってるって認識で合ってる?
コード見てると他のviewmodelファイルでインスタンス化されたりプロパティが呼び出されてたりしててあれこういうのありなの?って
- 846 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 14:43:13.39 ID:Qf4ZUzrP.net]
- 例えばどのファイルのどこがおかしい、改善すべきと言わないと
- 847 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 21:19:33.66 ID:vknuNgDk.net]
- 機能修正の事前準備としてリファクタリングさせてください
とか言ってもひとまず機能修正優先でとか動いてるんだから余計なことするなとか言われるのがオチだよね
- 848 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 21:40:22.11 ID:IUQW/AR/.net]
- もうその5chブラウザの事ほっとけよ
作者があまり顔出さないのに 作者不在のままここで毎回ゴタゴタが発生であほらしい ほっとくのが吉
- 849 名前:デフォルトの名無しさん mailto:sage [2023/08/28(月) 19:25:42.52 ID:Ed5E1clR.net]
- 心理的安全性の低いスレだな
- 850 名前:デフォルトの名無しさん mailto:sage [2023/08/28(月) 19:58:34.85 ID:BueC5+dS.net]
- 攻撃しても何もいいことはないのになあ…
googleの本でも読めば良いのに
- 851 名前:デフォルトの名無しさん mailto:sage [2023/08/28(月) 20:00:38.72 ID:BueC5+dS.net]
- ふと思ったことや感じたことを言うと叩かれる → 心理的安全性が低い
他人の行ったことを否定する → 心理的安全性が低い 本人に自覚がないのが恐ろしい
- 852 名前:デフォルトの名無しさん mailto:sage [2023/08/28(月) 20:44:27.43 ID:QJ/DbKdl.net]
- マスゴミって批判しないで、記者が萎縮してしまいます。でも自分達は批判も攻撃もするけどね。みたいな二重基準?
- 853 名前:デフォルトの名無しさん mailto:sage [2023/08/28(月) 21:29:09.23 ID:6uHv/wqC.net]
- 技術的な話とかに関して色々批判はいいと思うけど
最後は人格攻撃と不毛な事になるのが多いからなw
- 854 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/08/30(水) 09:16:29.73 ID:rmxbhQ8d.net]
- MVVMって例えばWPFでいうなら、VMでSystem.Windows名前空間をusingしないっていう認識で合ってる?
要はVMだけでOS非依存のdll化できるか
- 855 名前:デフォルトの名無しさん mailto:sage [2023/08/30(水) 10:42:16.63 ID:mm/q7vOw.net]
- そんな定義は聞いたことないな
- 856 名前:デフォルトの名無しさん mailto:sage [2023/08/30(水) 11:12:09.35 ID:FKrsdOsE.net]
- 究極の疎結合って意味では合ってる
CommunityToolkit.mvvmもプラットフォーム非依存だし極端な話、上側がWinUI3でもVMそのまま動くってことでしょ ただ実際問題すげーめんどくさいとは思うがw
- 857 名前:デフォルトの名無しさん mailto:sage [2023/08/30(水) 13:38:27.33 ID:Zjd+Qgp2.net]
- だね、5chブラウザのほうでViewModelでウィンドウクラス?を参照してたのは気になってた
まぁ、最初の1回だけは勉強のためMVVMガチガチにやって頑張ってもいいし そこは本人次第
- 858 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/08/30(水) 14:56:17.68 ID:rmxbhQ8d.net]
- ありがとう、System.Windowsを分離してみる。
>>848 確かにWindowは分かりやすく「ん?」ってなるけど、 ClipBoardとかBitmapImageとかもみんなSystem.Windows配下なんだよね。 これらの処理を全部持ってくと、Viewにも結構ロジックが必要になりそう。 UIフレームワーク固有の機能なんだから疑問を持つのがおかしいのかもだけど
- 859 名前:デフォルトの名無しさん mailto:sage [2023/08/30(水) 23:23:43.59 ID:I012WzjW.net]
- View固有の機能じゃなければ分離しなくてもよい
- 860 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 00:04:15.85 ID:tqam1yBh.net]
- その前にenumの機能のおさらいをしたほうが良い
- 861 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 01:17:12.25 ID:UxD03clT.net]
- MVVMといえばうちの会社でのプロジェクトでさぁ例えばだけどmodelにcircleクラスがあるとするじゃん
んでそれをコンストラクタの引数に取るVmCircleなるクラスをわざわざ作るのよ。んでそれを各種viewmodel内部でいじるんだけど、VmCircleはCircleのviewmodelとか言ってるの おかしいでしょそれはviewmodelでもなんでもないでしょって言ったんだけどいやviewmodelだって これ俺がおかしいのか?
- 862 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 01:44:14.25 ID:k/7LWfvb.net]
- >>852
サーバサイドでも使う Entity とかを .NET Standard で共有して、 クライアントサイドではそれをINotifyPropertyChanged を実装したクラス (VM) に変換する必要がある、 もしくは将来的に変更通知が必要になる可能性を見越してそうしておく、 とかならありえなくはないんじゃない?
- 863 名前:デフォルトの名無しさん [2023/08/31(木) 07:06:57.56 ID:BoGIe8nI.net]
- >>845
変な理解しているな。 ViewModelでBitmap加工などは普通にやる。 当然、System.Windowsをusingする。 Viewのエレメントに直接アクセスするなという事だけ。 いわゆる委譲だな。 例えば、Viewにパラメーター渡すために、IxxxViewRepositoryインターフェースをViewに継承させ、そのレポジトリをViewModelにインジェクションすればそれでOK。 ContainerのChildrenは、ViewModelにダイナミック生成バインドできないので、Add、Remove、Move操作をそういう方法でやる。 DDDなどのクリーンアーキにチャレンジしてみれば、その辺はインチュイティブに理解できるようになるよ。
- 864 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 07:56:35.25 ID:UxD03clT.net]
- >>853
そもそもviewmodelってviewとmodelをつなぐ役割をするものじゃないんですかね 別に対応するviewなんて何も無いただデータとそのメソッドを持つだけのクラスをviewmodelと言えるんでしょうか
- 865 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 11:36:17.81 ID:GMvg4a1K.net]
- https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/stable-channel#version-14
うんこ品質の時間です 突然1.4がリリースされやがった 9月末が予定じゃなかった?
- 866 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 12:07:44.06 ID:+9swg57/.net]
- >>854
それ、すごい労力かかる割にはWPF専用のViewModelになっちゃうじゃない。 いまUIライブラリ移行の過渡期なんだし、再利用できるViewModelとか考えないの?
- 867 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 12:40:08.29 ID:k/7LWfvb.net]
- >>855
俺の理解が間違ってるかもしれないけど、 その Circle クラス?が画面上の円のコントロールかなにかの DataContext になってるなら ViewModel であるといえるんじゃないだろか。 画面上のどこにもバインドしてないんなら違うと思うけど。 例えば ListBox の ItemsSource にバインドするコレクションの各要素の型は ViewModel と言えると思う。 ListBoxItem を 1つの View として見た時にその DataContext になるから。 ↓これとか ItemViewModel というのを定義してる。 https://blog.okazuki.jp/entry/2016/04/08/233620 ItemViewModel
- 868 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 13:22:03.44 ID:WwAx/vtc.net]
- viewmodelはmodel用のviewじゃなくてview用のmodel
各種viewmodelでcircleモデルのview用の変換やviewからの入力に対してモデルとの橋渡しをする場所としてvmcircleを作ってるんならまあ理解できる
- 869 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 14:00:23.53 ID:+wESSzqb.net]
- 何なら納得するんだろうか?
画面に複数のタブページがあるアプリがあって メインVMに複数のタブページ用のVMがリストなどで持たれている(直接のモデルじゃなくて) これでおかしいと思うのかどうか
- 870 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 15:36:13.08 ID:KSwuKB63.net]
- XAML Islandsとか名前がよくない
絶海の孤島のイメージだ
- 871 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 15:53:03.73 ID:A6umWt5F.net]
- Islandsで孤島?
- 872 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 16:07:40.97 ID:qE8kvwKZ.net]
- 複数形だから孤島ではないな
- 873 名前:デフォルトの名無しさん [2023/08/31(木) 16:52:36.04 ID:BoGIe8nI.net]
- >>857
VieModelの再利用? 再利用するのはViewの方であって、ViewがViewModelへのバイディング権がある。 それで、フレキシブルな画面構築ができる。 ロジックの再利用は、Domain層にまとめる。
- 874 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 17:36:52.11 ID:+9swg57/.net]
- >>864
ん?例えばMAUIとかWASMに移植するときはViewModelを全部作り直すってこと? 大変じゃね?っていうかそれってMVVMじゃなくね? MVVMって画面とロジックの分離であって、画面が変わるたびに作り直さなくちゃいけないなら それはViewModelではなくViewの範疇では?
- 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で自動化
便利になりました
|

|