WPF(.NET, WinUI) GUIプログラミング Part28

■ このスレッドは過去ログ倉庫に格納されています
2022/01/20(木) 05:40:40.10ID:+TySdXxT
WPF(Windows Presentation Framework)について語るスレ。

前スレ
WPF(.NET, WinUI) GUIプログラミング Part27
https://mevius.5ch.net/test/read.cgi/tech/1632044619/

関連スレ
Windows 10 UWPアプリ開発Part 3
https://mevius.5ch.net/test/read.cgi/tech/1627556967/

コードを貼る場合は以下のサイトの利用をお勧め。
https://ideone.com/
123デフォルトの名無しさん
垢版 |
2022/01/28(金) 15:01:03.75ID:1yvLAv6j
>>122
具体的になんかある?
確かにMVVM信者がまともに動くアプリ作ってるの見たことない笑
2022/01/28(金) 15:29:18.72ID:bcAzYVuU
>>122
個人的に、MVVMはtextbox1に入力された文字列をtextbox2に反映させる的な場合に使って、あとはコードビハインドでやるみたいな感じだな
2022/01/28(金) 15:43:03.56ID:bFDIT/Ik
>>122
多分、MVVMで作ることが第一にあって、MVVMで作りやすい方にUIが引っ張られて使いづらくなってるw
1画面でページ切り替えするアプリケーションはMVVMで作りやすくて、
スマホアプリレベルの低機能なものならそれで事足りることもあるけど、
Window「s」デスクトップアプリケーションとしては強みをわざわざ殺すようなもの。
2022/01/28(金) 16:30:52.52ID:FZ0uQlM1
? MVVMなんて普通に使ってるだろ?
テスト駆動やドメイン駆動には必須だし、今やアジャイルで作る企業業務アプリの主流じゃね?
2022/01/28(金) 16:33:35.20ID:3Gb6OY+l
> アジャイルで〜
プ
2022/01/28(金) 16:39:19.49ID:b6TLNov5
MV*は量産化のためのフレームワーク
どれだけ楽できるかはCaliburn.Microを試してみるといい、あれにはコンベンションといって
バインディングは自動、コマンド(アクション)もメソッドと紐付けてくれる仕組みが入ってる
129デフォルトの名無しさん
垢版 |
2022/01/28(金) 16:42:25.57ID:AmULl7RP
>>124
それMVVMじゃないです
2022/01/28(金) 17:50:24.48ID:zPVQIz9q
要件と照らし合わせてMVVMで作った方がメリットが多ければMVVMにするし、メリットがなければMVVMは使わない。
思考停止して何でもMVVMなんてことはしない。
2022/01/28(金) 18:05:33.63ID:oCmByirC
それならWinformsで事足りる
2022/01/28(金) 18:11:32.84ID:nccwie6m
DataSetとか使うの?
2022/01/28(金) 18:24:47.02ID:kLTO8ApN
MVVMとか盲信してる下級プログラマーによくいるけど道具に踊らされすぎ。
最新技術を取り入れる俺カッコイイと思ってるのは本人ばかりで将来性無い知識に振り回され貴重な時間を浪費するアホ。
WCFやらEFなんて誰が使ってるよ?
2022/01/28(金) 18:34:49.12ID:fHSTVUG6
>>131
UIが無いならそれでもいいが、そんなことはないだろ?
UIがあるならMVVM抜きにしてもWPFで作った方がずっと楽できる。
2022/01/28(金) 18:34:59.24ID:g50oJ6EP
思考停止しなかったLivet(一時期流行ったMVVMライブラリ)作者はWebへ移りました
2022/01/28(金) 18:39:12.67ID:FZ0uQlM1
MVなんかESP32組込みファームウェアでも導入しているぐらいなのに、リファクタリング考えればテストステップで進めるのに、GUIとモデルの分離は当然。
WPFに拘らずとも、今や必須スキルやがな。
バグ曲線とリリースコストの増大考えれば、当たり前。
大規模システムやったことないのか?
2022/01/28(金) 18:42:34.34ID:nccwie6m
>>133
EF使わずにDataSetつこうてるの?
2022/01/28(金) 18:46:53.09ID:b6TLNov5
今さらEFとかもうね、Dapperにしとけって俺口酸っぱくして言ったよね?
2022/01/28(金) 18:53:18.22ID:kLTO8ApN
>>137
どっちも使わん
なんでわざわざ重くて不自由な足枷つけんねん
ドMかw
140デフォルトの名無しさん
垢版 |
2022/01/28(金) 19:00:44.99ID:1yvLAv6j
LINQもたまには思い出してあげて…
2022/01/28(金) 19:21:50.44ID:nccwie6m
ウインフォーマーが何使ってるのか興味があっただけなんだけどな
StringBuilderてSQL書いたりさ
2022/01/28(金) 19:24:19.87ID:nccwie6m
別件質問
Microsoft.Toolkit.Mvvmと
Community.Toolkit.Mvvmって
どっち使えばいいの?
2022/01/28(金) 19:28:57.04ID:4u1r/XKm
>>136
UIとモデルの分離は当然なのはそうなんだが、それ=MVVMじゃないぞ。
そんなことはWinFormsの頃から実践されてきたことだろ。
2022/01/28(金) 20:00:49.38ID:NkreWV+A
>>141
ウインフォーマー舐めるなよ。
CSVから構造体の配列に読み込んでForループで処理だ。
しかもVB.NET

>>142
Microsoft.Toolkit.Mvvm使っとけばOK.
Community.Toolkit.Mvvmは多分別名で中身は同じものな気がする。
2022/01/28(金) 20:31:53.74ID:cgeTyaAM
また、MVVM 発作始まるのかよ
しつこいなおまえら
もう、他人がMVVMを上げようが下げようがどうでもいいだろ
2022/01/28(金) 20:33:03.07ID:OmkEpZCo
>>142
Microsoft.Toolkit.MvvmはCommunity.Toolkit.Mvvmの一部っぽい

> The Microsoft.Toolkit.Mvvm package (aka MVVM Toolkit) is a modern, fast,
> and modular MVVM library. It is part of the Windows Community Toolkit ...
2022/01/28(金) 20:58:23.09ID:LxSb85up
MVVMって呼ぶからWinFormおじさんが発狂しちゃうんだよ
バインディングって言えば大丈夫
バインディングならWinFormにもあるからネ!
2022/01/28(金) 22:14:56.16ID:LR3qN1W7
>>122
>MVVM信者が作ったGUIアプリはなぜか操作性がクソだし。

MVVM信者とかリアルで出会う機会は少ないが、このサンプルは何人でアプリ何本くらいで判断した話?
149デフォルトの名無しさん
垢版 |
2022/01/28(金) 23:40:31.36ID:ofHx672K
ここの人たちって古臭い連中ばかりだな
2022/01/28(金) 23:56:11.29ID:kLTO8ApN
今どきWPF なんてやってる時点で察しろw
2022/01/29(土) 00:01:38.08ID:Alu86MyQ
>>118
.NET版が大昔からあんだろ
152デフォルトの名無しさん
垢版 |
2022/01/29(土) 00:31:49.77ID:7nTZc88q
WinUIだと他でCommunityToolkitの方のパッケージ使うことになったりするな
2022/01/29(土) 00:57:04.26ID:RQ7DuTDZ
>>133
MVVMからなぜ最新技術??
2022/01/29(土) 05:55:50.53ID:3ZSK4aSw
>>149
それならモダンな人とは?
2022/01/29(土) 08:41:43.59ID:ubDMC+kF
最初に要件定義して
・サーバークライアントかスタンドアロンか
・ターゲットはWindowsのみかクロスプラットフォームか
・言語はC#かそれ以外でもよいか

そんでスタンドアロン-Windows-C#ときたらWPFでいいだろ。
2022/01/29(土) 08:46:37.27ID:Alu86MyQ
もうMVVM使わない人かな
2022/01/29(土) 09:01:47.93ID:3ZSK4aSw
>>156
154(俺)宛て?
MVVMを擁護するつもりもないけど、単なる考え方だから関係ない気がする
固執するのも問題だけど
2022/01/29(土) 09:03:21.64ID:L6xb6JcI
.NET6でアプリの起動時間は短縮されるのかな?
2022/01/29(土) 09:15:09.71ID:Alu86MyQ
react界隈のreduxって感じMVVMは
2022/01/29(土) 09:27:43.68ID:ubDMC+kF
Hooksに相当するものが出てくればね
2022/01/29(土) 09:39:47.13ID:RlBDrRPo
みんなMはどう設計してるんだろ。
MVVMってVとVMについての設計パターンで、Mはそれ以外の領域。
だから普通は「MVVMパターンと〇〇パターンで作った」ってなるはずなんだけど、ここではあんまりそういう話が出てこないよね。
2022/01/29(土) 11:25:42.83ID:Yb/iPl5R
MVC は、PostgreSQLなどのデータベースを前提にしていると思っていたんだが、
MVVM もそうなの?
2022/01/29(土) 11:28:01.80ID:Yb/iPl5R
個人の感想としては、RailsやDjango、LaravelなどでMVCを学んだが、
MVCを使ったからといってプログラムが分かり易くなるとは思えなかった。
むしろ、柔軟性を失ってめんどくさくなるだけではないか。
2022/01/29(土) 11:28:21.65ID:Alu86MyQ
reduxってオワコンの比喩だよ
2022/01/29(土) 11:45:43.13ID:BKEOmNWv
>>162
そうだよ
まあMVCと違ってクライアントアプリなんで、DB直結よりはWCFでサーバーサイドロジックをサーバーに出して分離するのがよりクールだとされていた
WCF廃止されちゃったけどね
基本的にゴリゴリのビジネスアプリケーションが前提だよ
2022/01/29(土) 11:59:06.66ID:oA/bSKHD
>>155
要件定義するような案件でスタンドアロンなんかほぼ無いでしょ
一般的なクラサバとスタンドアロンの定義と君の理解にズレがある気がするのだが、それぞれどういうものだと思ってるの?
ちなみに一般的な定義においては、世の中のWPFアプリケーションのほとんどはクラサバに属する
2022/01/29(土) 12:49:49.65ID:3ZSK4aSw
>>166
別人だけど書いてみる

多分、複数人で利用してデータを管理したりする場合:
クラサバ
2022/01/29(土) 12:54:34.91ID:3ZSK4aSw
>>166
ごめん 167は忘れて
間違って送信してしまった

多分、

複数人での利用で連携を取る:
クラサバ

ローカル環境に作用したりするだけの一括プログラム:
スタンドアロン

ってことかと
2022/01/29(土) 12:57:24.51ID:XrEcS30Z
>>166
要件定義の認識がずれてる気がする

> 世の中のWPFアプリケーションのほとんどはクラサバに属する
全く持って同意できないw
2022/01/29(土) 13:04:01.59ID:XrEcS30Z
ずれてる、だと語弊があるな
食い違ってる、で
171デフォルトの名無しさん
垢版 |
2022/01/29(土) 13:35:42.26ID:I0P/B1HZ
酷い…老害たちのゴミのような脳みその結果がこの日本の惨状なわけだ
2022/01/29(土) 15:14:13.55ID:N8fQblbv
>>161
Mは何を対象にするかによって設計が変わるんだから一般的には話せないでしょ
VはWindowsでもWebでも一般的なGUIに対して共通認識があるからまだ設計条件を共有しやすいが
2022/01/29(土) 17:20:37.44ID:ubDMC+kF
>>161
>だから普通は「MVVMパターンと〇〇パターンで作った」ってなるはずなんだけど、ここではあんまりそういう話が出てこないよね。

何を話題にしたいのかにもよるけど、目線の違うパターン同士を絡めて語ることってあまりないんでは?
MVVM自体とMに用いるパターンは直交した概念だから、MはUIを持たないソフトウェアの設計論と同じに考えて
好きなように選べばいいかと。
174デフォルトの名無しさん
垢版 |
2022/01/29(土) 17:37:02.08ID:7nTZc88q
>>158
起動も速いし、その他全体的に体感できるレベルで速い
2022/01/29(土) 19:14:57.97ID:N8fQblbv
>>173
むしろMを完全にVと分離するためのVMだからね
2022/01/29(土) 19:31:58.32ID:W9gwoTM7
PrismのようなMVVMスイートには
・Event Aggregator
・DI
・ViewModel Locater
が3点セットで入っているから、それがMVVMのM(やVB)でよく使われるパターンじゃないかな?
2022/01/29(土) 19:35:15.13ID:W9gwoTM7
VBじゃなくてVMだわw
2022/01/30(日) 08:36:43.32ID:iZvztVrx
>>176
全然違う
それらはいずれもレイヤ間のメッセージングや依存性解決の手段でしかなく、M層内での設計とは無関係
2022/01/30(日) 09:08:00.00ID:iZvztVrx
なお、MSによって発行された本来のPrismでは、Mというのは「WCFのクライアント」に他ならない
つまりリモートサーバー上に存在するWCFのサービスに対するラッパーだな
MVVMを使うのはあくまでフロント開発者であって、Mから先のビジネスロジックはフロント開発者が詳細を意識する必要すらない、
どこか別の場所にある完全にブラックボックス化された領域なんだよ
2022/01/30(日) 09:37:16.05ID:fI0x5/zS
何それめっちゃ遅そうじゃん
所詮MVVMなんてその程度の浅い認識で考え出されたアーキテクチャなんだな
ゴチャゴチャ言ってるのは全部後付けで端から複雑なアプリには向いてない
2022/01/30(日) 09:47:18.83ID:fQLZlazV
イベントアグリゲーターはVM同士でやり取りする時使うよ
匿名のボトルメールみたいな感覚だね、便利なんで使い方を覚えるといい
2022/01/30(日) 09:51:03.86ID:9+q+6HPs
>>180
REST使うSPAと変わらんやん
2022/01/30(日) 10:14:04.18ID:DDlIcWyK
M同士のやり取り?
そんなのはMの状態変化の結果として変更通知として各VMに降ってくるようにするのが筋でしょ
184183
垢版 |
2022/01/30(日) 10:14:42.92ID:DDlIcWyK
VM同士のやり取り?
の間違い
185デフォルトの名無しさん
垢版 |
2022/01/30(日) 10:19:30.61ID:xTnuhpAm
まぁメリットが感じられないフレームワークも多いよね
MVVMフレームワーク、WCF、EF、ASP.NET MVC、各層に色々フレームワークはあるけどASP.NET以外は微妙
要求が高度なアプリほど
フレームワークの使用によって得る生産性<フレームワークの束縛によって失う自由度
になってくる
2022/01/30(日) 12:31:27.69ID:KApH5n5G
マイクロソフトのフレームワークが良くないのが多すぎた
MSなら安心という顧客や上司のために仕事でしょうがなく使うってシチュエーションしかない
結局不自由だからあれこれ回避するためにキメラのような実装になってフレームワークなんて使わないほうが良かったとなる
2022/01/30(日) 12:56:42.21ID:LWsZFFBD
ASP.NET APIぐらいかな?使えるのは
ここにEF入ってくると糞になるけど...
2022/01/30(日) 13:13:47.93ID:+wZdari7
EFはEF Coreや.NET 6で多少速度マシになってたりしないの??
まぁ、元々変更追跡する仕組みだから、速度面では不利だが
2022/01/30(日) 16:07:33.81ID:ocXxzRZn
普通のアプリを作る場合には、Document・Viewアーキテクチャも、
MVCもMVVMも面倒なだけな気がする。
Win32のGDIも面倒。
OpenGLも、1.0は美しかったが1.2以後や、OpenGL ESやWebGLは汚く面倒に
なった。Direct3Dの駄目なところを取り入れてしまったような感じ。
190デフォルトの名無しさん
垢版 |
2022/01/30(日) 17:42:13.84ID:1lRRY4pr
普通のアプリって何
2022/01/30(日) 21:21:33.53ID:Zz8RS9Wg
JHTMLアプリじゃね?
2022/01/30(日) 23:00:42.20ID:fI0x5/zS
この文脈ならkick-ass appsだろ
言わせんな恥ずかしい
2022/01/31(月) 07:29:13.82ID:ekWinSEL
>>190
>>95
2022/02/02(水) 10:37:04.10ID:5deqnR/S
>未解決の問題が非常に多いため、何に取り組んでいるのか、どこで進歩しているのか

WinUI3、問題山積みって感じだな。
開発メンバーも離脱してごくわずかで細々作ってる感じだし。
MSも高確率で沈みそうな泥船に投資したくないんだろうなぁ。
Phoneが沈んだ時点でさっさとUWPを捨ててこっちに注力してればもっとましな結果になっただろうに。
2022/02/02(水) 13:34:55.83ID:qr0OhjFL
ユニバーサル・ウインドウズ・プラットフォーム(Windows10専用)だからな
それよりWinFormsとWPFの2本立ての方が成功してたと思う
高DPIに対応したWinForms2.0とかUnityでも動作するMonoFormsとか
スゲー安っぽいけどWinUIなんかより数倍マシ
2022/02/02(水) 14:17:31.87ID:/6h+iODO
さすがにWinFormsは要らない。
WinFormsでやってたことはWPFがあれば事足りる。
197デフォルトの名無しさん
垢版 |
2022/02/02(水) 14:55:30.01ID:MolDdSgs
WPFは勝手にマルチスレッドにしやがる
2022/02/02(水) 21:21:23.96ID:HZtz5wep
WPFが最初からネイティブC++で実装されてたらUWPやWinUIは生まれずWPFは統一プラットフォームとして継続的に進化して成功していただろうな
MSはなんだかんだC++大好きで、全部マネージドでいいじゃんってのは社内的に許されないんだよ
199デフォルトの名無しさん
垢版 |
2022/02/02(水) 23:39:19.90ID:uQJKdAPH
好き嫌いの問題じゃないだろ
低レイヤーの実装はC++じゃなきゃ出来ない
2022/02/02(水) 23:44:15.40ID:Tho+pX9F
リーク地獄は嫌じゃ
2022/02/03(木) 00:13:00.65ID:IbTz5ZAk
そもそも.NETがWindowsチームから嫌われてたっていうからな
2022/02/03(木) 00:44:04.17ID:hnE9Kba7
>>198
MSが好きなのはC++98(03)までだろうな。
C++11はアホが好みそうな仕様になったから。
2022/02/03(木) 07:52:29.24ID:rTgJdd8/
C++98はある種の透徹した美しさがあったな
11以降のも無駄に複雑だった部分がどんどんシンタックスシュガーで簡潔になってきて嫌いじゃない
2022/02/03(木) 08:31:47.19ID:j4oj3G8A
>>202
C++11を理解できないから嫌いなんでしょ
2022/02/03(木) 08:50:59.00ID:nrvs3IXt
>>204
横からレスごめん
C++11は使おうと思えば使えるけど、スマートポインタとかが美しくないかなと思う
メモリをどうこうしたいのならC#とかみたいにGCを実装して欲しかった…
ただ、randomやthreadが追加されたのはかなり嬉しい
2022/02/03(木) 08:58:55.45ID:n97Y9UcY
んで、ここ何のスレ?
2022/02/03(木) 09:29:22.68ID:0+ku9eIp
C++なんてバグ量産言語まだ使ってるのかよw
Rust使えよ低脳
2022/02/03(木) 09:54:13.82ID:8ADJI/49
>>199
低レイヤは当たり前だけど、MSの場合は高レイヤも全て快適にC++で記述できなければならない
それがWindowsの標準UIプラットフォームに求められる最低水準なんだよ
C++/WinRT知ってるか?奴等のC++に対する愛と執念は異常
2022/02/03(木) 10:23:17.82ID:0+ku9eIp
ゴミで有名だよねC++/WinRT
2022/02/03(木) 14:43:56.38ID:u1rmEl96
C++11以後は、最低でもStroustrupの9,800円くらいの本は読まないと
話にならないから、お金が掛かる。
2022/02/03(木) 15:04:58.00ID:rTgJdd8/
>>210
そんなことないぞ
言語仕様が整理されたからむしろStroustrupより薄い本でマスターできるようになってる
2022/02/03(木) 15:05:48.63ID:VSVU8kYC
C++相談室
https://itest.5ch.net/mevius/test/read.cgi/tech/1636969758
2022/02/03(木) 16:15:08.97ID:VWdjVpzZ
現在のマイクロソフトは昔に比べてC++の最新規格追随は熱心だと思うね
昔はC++愛が強かったってことはないんじゃないか
2022/02/03(木) 16:39:59.45ID:4SJL6nSC
C++相談室
https://itest.5ch.net/mevius/test/read.cgi/tech/1636969758
2022/02/03(木) 16:51:25.83ID:rTgJdd8/
>>208
C++/CLIという存在意義不明の言語もあってだな…
2022/02/03(木) 17:14:59.74ID:4SJL6nSC
>>215

C++相談室
https://itest.5ch.net/mevius/test/read.cgi/tech/1636969758
2022/02/03(木) 18:39:21.61ID:22BdHKRp
.NET6への移行は大変そうだな
2022/02/03(木) 18:50:36.00ID:rTgJdd8/
>>216
C#, C♯, C#相談室 Part96
https://mevius.5ch.net/test/read.cgi/tech/1639965805/
2022/02/03(木) 23:24:21.93ID:oMlWvAvC
>>215
C++とC#への橋渡し?みたいな
2022/02/03(木) 23:31:13.46ID:rTgJdd8/
>>219
C++/CLIはキミの手に負えるような代物じゃない
せいぜいC#とP/Invokeで遊んでなさい
2022/02/03(木) 23:39:42.92ID:u02l46ie
で、wpfは?
2022/02/03(木) 23:47:41.12ID:oMlWvAvC
>>220
MFCで作られたオブジェクトをC#で使う必要があったのよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況