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/
2022/02/05(土) 01:58:42.02ID:vyyfl1Q+
>>241
ほとんどWeb系だろうし、単に新しいもの使える職場は環境がいいというだけの話だ
2022/02/05(土) 09:10:40.08ID:m5qwQDYD
WPF(MVVMを含む)を新しいものと見なしてるか古いものと見なしてるかで年の差感じるよな
学習コストとか今さらのように言われてもオマエ今まで何してたんだよ
10年以上前からあってとっくに枯れてるぞ
2022/02/05(土) 09:18:35.66ID:50cE9z6L
WPFをいままでやってこなかったならいまさらやる必要がないってことでしょ
アプリケーションもウェブベースで作れるものならASP.NETのWebFormsやMVCに移行してただろうし
2022/02/05(土) 10:35:28.52ID:JJnev5jz
>>238
jsはどんな領域でも使っちゃ駄目な欠陥言語。tsもわずかにマシって程度。
元々オモチャみたいな言語だからレガシーなクソ仕様をばっさり切り捨てないと手の施しようがない。

>Windowsのみで動くアプリ
昔と違ってWindows 1つあれば事足りるようになったからWindows 専用もそれほどデメリットにならない。
246デフォルトの名無しさん
垢版 |
2022/02/05(土) 10:40:43.82ID:Rg3a6Lod
普及しないまま枯れていったMVVM葬儀会場はここでつか?
2022/02/05(土) 10:42:30.90ID:8UxqBbtD
使いこなせない悲しみ
2022/02/05(土) 11:59:44.91ID:XET6D0Ck
WPFが落ち目に見えるからFlutterとかWebとかこんなにキャッチセールスがやってくるのかな
2022/02/05(土) 12:07:21.14ID:Czrdanv8
intellisenseがWPFに冷淡だったのが痛い
2022/02/05(土) 12:10:49.48ID:8UxqBbtD
WinUI待機組をFlutterが掻っ拐う構図
2022/02/05(土) 15:15:00.66ID:JJnev5jz
>>248
落ち目なのはWinUI。まだ浮かんですらいないけど。
今の時点でデスクトップアプリ開発環境としてWinUIよりFlutterの方が完成度が上で、今後それが逆転する可能性も絶望的。

これからはWPFとFlutterを状況に応じて使い分ければいい。
WinUIがポンコツすぎて迷う必要なくなったから、かえって良かったかも。
252デフォルトの名無しさん
垢版 |
2022/02/05(土) 15:29:51.09ID:Mq0LTi1i
早めにxaml捨ててMAUI&Cometで一本化する判断しとけばここまで開発リソース分散しなかっただろうに
2022/02/05(土) 17:43:31.99ID:CJOs3GSx
>>252
MAUIは、XAMLによるMVVM、と書いてあるが。
254デフォルトの名無しさん
垢版 |
2022/02/05(土) 17:45:20.87ID:CJOs3GSx
宣言的
2022/02/05(土) 17:47:03.84ID:CJOs3GSx
MAUIには、宣言的UIを使ったMVUなるものがあって、それがCometということかいな?
でも宣言的UIもWinFormsとは全く違うよね、多分。
2022/02/05(土) 18:12:45.33ID:xQipYjTo
宣言的UIはXAMLみたいなやつ
2022/02/05(土) 21:13:43.76ID:b/8WCMUm
>>244
そんな奴はこのスレ覗きに来ないと思うんだが
2022/02/06(日) 00:16:10.15ID:keaNtWdY
>>256
やっぱ、そうか。
だからMAUIはXAMLのものと、XAMLではないがXAMLに似たものの二系統作られるという
ことに過ぎないのだろう。
2022/02/06(日) 23:44:13.73ID:R7IEDvqe
.Net Frameworkも4.8.1でまだまだ延命
2022/02/06(日) 23:45:18.71ID:Ly8LsSyr
.NET6への移行がしんどいの?
2022/02/07(月) 00:52:33.72ID:NnlheoBA
6は2年でまた移行だからな
日本ではその度にSIerにぼったくられることになる
2022/02/07(月) 01:04:51.01ID:FwV6Svjt
海外はちゃうの?
2022/02/07(月) 09:01:44.53ID:hJS1F7H6
>>259
ARMだけになりそうじゃね?
2022/02/07(月) 11:48:44.65ID:uh676PEA
ListBoxのItemPanelTemplateにCanvasを指定しているとき
Windowに合わせて拡大・縮小する方法教えて

ViewBoxにListBoxを入れてみたけどWrapPanelとかはスケールされるのだが
Canvasのときは表示されないみたい
2022/02/07(月) 12:52:29.42ID:qVVndxor
Canvasを使わない
2022/02/07(月) 18:48:16.24ID:B+4mD2P/
次の.NETでWPFにWin11用テーマが搭載される可能性
2022/02/07(月) 19:11:40.12ID:EFpTEQx0
MAUI(Xamarin)に望みが無いならWPFも先細り
2022/02/07(月) 20:22:40.56ID:IU9XfAJW
MAUIの正体がXamarinだって知ってる奴は
こんなもんにはなから望みなんてないってわかってるよ
2022/02/07(月) 22:28:30.64ID:c4tJbt0p
UNOちゃんも忘れないで(´;ω;`)
2022/02/07(月) 22:55:34.92ID:fWZpMVoi
もういいよ
こんなゴミフレームワーク使うのやめたから
何十年まともなの作れないんだMSは
2022/02/08(火) 18:38:34.00ID:yVfGM/kR
WPFに新たな希望が!!
https://github.com/lepoco/wpfui
2022/02/08(火) 18:50:22.26ID:5BCjIQvt
俺が前スレで紹介した記憶が
273デフォルトの名無しさん
垢版 |
2022/02/08(火) 23:49:46.25ID:MbsHgQqH
すみません 教えてください
WINDOWS UI3 を使ってMVVM ってできるのでしょうか?
サンプルみたいのもないのでできるのかどうかわからないので
教えていただけますでしょうか?
2022/02/09(水) 03:28:04.00ID:/I7OzU9p
MVVMが目的になってる時点で駄目w
本末転倒だよ
2022/02/09(水) 06:34:10.19ID:czYNULL0
>>273
できるよ。
でもMVVMって設計手法の1つに過ぎないから
開発内容に合わせて適用するかどうか考えなきゃ駄目だよ。
徒歩10数歩で行ける隣の家にわざわざガレージから車出して行こうとする頭の悪い人になっちゃだめだよ。
2022/02/09(水) 08:01:14.11ID:ehg+FXfN
>>273
WinUIはかなりヤバイよ。
公式ドキュメントに
パフォーマンス悪いです、メモリめっちゃ食います、ファイルサイズ無駄にでかいです
なんて載せて予防線張ってるぐらいだから。
SDKのバージョンは一応1.0だけど実質まだ0.5ぐらいの出来。
正式版として世に出しちゃいけないレベル。
止めはしないけどいつでも撤退できるようにしておきな。
これやるくらいならまだWPFの方がつぶしが効く。
2022/02/09(水) 09:25:08.14ID:Og7wuzEA
2022年という未来の世界に生きてるのに未だにまともなフレームワークがないってどうなってんの
2022/02/09(水) 10:05:21.84ID:/I7OzU9p
結局プロの使用に耐えるフレームワークはATLだけだったな
あとは全部不完全か初心者向けの不自由なものでしかない
2022/02/09(水) 10:23:03.43ID:HpfuVDAv
>>274
頭ごなしの否定良くない
既存のMVVMアプリがあって、Vだけ入れ替えるのを検討してるのかもしれないだろ
2022/02/09(水) 10:49:46.38ID:/tE30TH1
ソフトウェアのアーキテクチャ的に
誰も議論しないぐらい
残らないアーキテクチャだったな
WPF流MVVM
281デフォルトの名無しさん
垢版 |
2022/02/09(水) 10:58:39.93ID:WFT7SUOm
枝葉の議論でゴチャゴチャ言ってるザコ共をMVWという本質を突く一言で一刀両断したのは流石だわ
2022/02/09(水) 12:52:41.22ID:/KeHMgiK
ザコがキャンキャン吠えてるw
283273
垢版 |
2022/02/09(水) 23:47:59.46ID:TVdAx4La
みんなありがとうございます。

勉強になりました。
イベントドリブン型が何となくよくわからなくって

MVVMで慣れちゃったから
本当は、 WPFでトグルスイッチが使ってみたかっただけなんだよね
2022/02/10(木) 08:45:19.96ID:nQ/8CiES
ToggleButtonじゃなくスマホで見かけるやつでしょ、ユーザーコントロールで作成だね
実際に作った人もいるので参考にしたり拝借してくるといい(要ライセンス確認)
2022/02/10(木) 09:53:13.85ID:Yjh1sxXd
チェックボックスとトグルスイッチの使い分け、毎回悩むわ
2022/02/10(木) 13:37:50.16ID:cZrPxvvk
見やすく使いやすいのがいい→チェックボックス
ナウなヤングにウケるカッコいいのがいい→トグルスイッチ
で悩むことないやろ
2022/02/10(木) 13:50:07.08ID:RrRl5YtT
ダークモードね白黒反転するやつね
2022/02/10(木) 14:14:25.03ID:fc/2R9d2
設定項目群に関連があり、「これとこれを有効」みたいなのはチェックボックス。
確認を求めるようなのや説明的な設定項目はチェックボックス。
有効/無効で表現しやすく、設定が即座に反映されるようなのはトグルスイッチ。
2022/02/10(木) 15:00:32.93ID:nQ/8CiES
使いわけというかデザインセンスだね
例えば、次回から表示しない、はチェックボックスでトグルスイッチ使ってるのを見たことない
2022/02/10(木) 15:02:08.67ID:SVzOFq4x
即時反映: トグルスイッチ
ダイアログの肯定応答ボタン押下で反映: チェックボックス
2022/02/10(木) 15:44:50.18ID:wbG7UtHv
MSのドキュメントに用途のガイドラインは書いてある
https://docs.microsoft.com/ja-jp/windows/apps/design/controls/checkbox
https://docs.microsoft.com/ja-jp/windows/apps/design/controls/toggles
292273
垢版 |
2022/02/11(金) 16:25:36.11ID:gQQrjeaP
>>284
アドバイスありがとうございます。
早速 いくつかの トグルスイッチを使ってみたのだけど
トグルスイッチのイベントの形態が2種類あることがわかって、

今まで使っていたのは、 ”状態が変化した”ことでイベントととするもの
他には
"ONorOFF"になったことをイベントとするものです。

VMでどう吸収しようか検討中です。
2022/02/12(土) 09:00:34.53ID:kNmQX4vn
見た目の変更とかアニメはコントロールの中で完結する方が見通しよくなるし
他でも使えるようにライブラリ化できる
MVVMは関係なく、単に自作UIとしてトグルをどう作り込むかによる
金さえ出せばコンポーネント屋から完成しているトグルスイッチを購入できるので
自作の工賃とライセンス料を天秤にかけるわけだ
2022/02/12(土) 17:38:53.23ID:ZwiH+04Q
普通これ使うだろ
https://github.com/lepoco/wpfui
https://github.com/MahApps/MahApps.Metro
https://github.com/Kinnara/ModernWpf
2022/02/13(日) 01:05:59.76ID:NN0JuhkI
>>294
サンプルだとかっこいいんだけど、
漢字や平仮名のボタンとか急にダサくなって困る。
2022/02/13(日) 09:01:56.66ID:39UxLAwC
都度フォントの変更大変そうだなと思ったらResourceDictionaryにFontFamilyを指定しとくのか
2022/02/14(月) 08:48:32.05ID:JUrXsXai
>>295
英語だとカッコイイってのがそもそも思い込み。
隣の芝が青く見える的な。
ガイジンさんから見たら漢字カッコイイって思ってるかもしれん。
2022/02/14(月) 20:30:33.82ID:OKHyco7f
>>81

キチガイの世界へようこそ・・・
と言うか20世紀なのか今は?
2022/02/14(月) 21:53:59.37ID:7DLpkbM0
>>298
参考までに

Windows 95 最小ハードウェア仕様要求
物理メモリー、8 MB以上
ストレージ、75 MB以上
2022/02/14(月) 22:10:00.51ID:VjWJSQ6q
いくらPCが速くなってもWPF使ったソフトはクソ重い。
MSすら使いたがらないわけだ。
2022/02/14(月) 23:21:43.51ID:0GI11KhK
>>299
たしか1998年にあまり予算をかけたくない俺は
Celeron300AでRAM256MB積んだPCを自作していた

そのころの話か?
やはり20世紀の話だろこれは?
2022/02/15(火) 06:12:51.13ID:hA9gyrCi
>>301
お前がどんなPC組んでたとか全く意味ない。その時代に普及しているPCスペックが全て。
2022年だからそれに合わせてこんな甘々な基準になっているのに
それすらクリアできないようならソフトウェア技術者向いていないから転職を勧める。
2022/02/15(火) 08:57:14.52ID:VnsR49ox
10年前からWPFは既にあって、当時の話題とは
Windows Formsから移行とかSilverlightと比較とか
比較対象が変更されはしたが、今と大して変わらない話題だよね
2022/02/15(火) 15:34:06.63ID:GyhCU1xc
WPFは出た直後にクソ認定されて15年経ってもその評価は変わらない。
FISやIOCと違って技術者は賄賂は受け取らないし忖度もしないのだ。
2022/02/15(火) 15:57:40.84ID:tpfUF+h+
WinForms
・旧来のウィンドウズAPIの上にレイヤーを重ねたようなもので、(シンプルであるという)利点と
 (平凡なレイアウトやスタイリングオプションという)致命的な災いの両方がある。

WPF
・WinFormsからわずか4年後にリリースされたが、デザインパターンとコンセプトがより複雑であったため、
 一般に受け入れられるまでにはしばらく時間がかかった。
・大規模なデータセットに対してWinFormsよりも大幅に高速化できるが、正しく使用するにはより深い知識が必要である。
・現状は WPF on .NET 6 が一番つぶしが効く状態。

UWP
・Windows UIの未来だったが、鳴かず飛ばず、現在はメンテナンスモードになっている。
 良い点:魅力的なUIを簡単に作ることができ、マウスとタッチの両方でうまく動作する。
 悪い点:サンドボックスとパッケージングの要件が非常に厳しい。
 結論:避けるべき。

WinUI 3
・小さなチームがUWPのUIスタックからできる限りのものを救い出そうとしている。
・遅い、バグが多い、そして多くの歴史的なお荷物が重くのしかかる。
・開発体験はWPFの方が上であり、開発チームは改善に消極的である。
・1年後にまた確認したいが、私は悲観的だ。
2022/02/15(火) 19:01:34.90ID:VjJREOVz
現状、WindowsデスクトップアプリはWPFでWinFormsのようなイベント駆動が一番マシなんですかね
レイアウトの自由度、高DPIへの対応、表示速度を争点にした場合
2022/02/15(火) 19:16:29.32ID:3zKYAjvH
winrtはどこに属すの?
2022/02/15(火) 19:33:35.93ID:ES8IiGQC
>>306
それでいいと思う。それが一番処理速度的にもファイル構成的にも無駄がない。
ただViewに依存しない処理はなるべく別クラスに切り出すことぐらいはしておいたほうがいい。
2022/02/15(火) 19:36:57.71ID:sOBRzctF
データバインドは使わんの?
エラー表示とか便利っぽいよね
2022/02/15(火) 20:18:43.19ID:A9ZkwK3T
>>309
使った方がいいと思った箇所で使えばいいんじゃね?
どちらかに縛る必要はないと思うが
2022/02/15(火) 20:29:33.78ID:qXoJQquN
>>305
WinUI3だが、内部のWinRTは十分こなれているからバグは少ない
問題は表示系だが操作不能になるようなものは稀で回避策はある
速度に至ってはWPFより遅いことはないんだが、何処の情報なん?
2022/02/15(火) 20:36:28.97ID:xE3FS5+c
速度に関して前スレで話題になってたやろ
2022/02/15(火) 20:40:31.81ID:qXoJQquN
>>312
1.0 Stable以前は酷いものだったが、そこから情報アップデートしていない人が多いのかね?
314デフォルトの名無しさん
垢版 |
2022/02/15(火) 20:42:15.57ID:xE3FS5+c
https://github.com/microsoft/microsoft-ui-xaml/issues/1633
これは解決されたの?
2022/02/15(火) 20:55:45.02ID:s9A1ir2/
>>305

> ・現状は WPF on .NET 6 が一番つぶしが効く状態。
これはないかな
まず.NET6後二年も寿命がない

それは別としてつぶしが利くのはwinforms
技術的進展もなければ使えなくなる技術もない
安定
2022/02/15(火) 20:58:11.37ID:z+l2+roq
>>313

>パフォーマンスに関する考察
>Windows App SDKのバージョン1.0では、WinUI 3アプリの起動速度、RAM使用量、インストールサイズが、UWPで見られるものより大きい/遅いです

by docs.microsoft.com


Windows App SDKのバージョン1.0では
Windows App SDKのバージョン1.0では
Windows App SDKのバージョン1.0では
2022/02/15(火) 20:59:22.62ID:qXoJQquN
>>314
WinRT系だと自家製ビヘイビアもほとんど使わずに済むから特に気にならないバグだな
既存のコントロールは関係ないだろうし
2022/02/15(火) 21:07:44.33ID:xE3FS5+c
コンポーネントメーカーdebexpressの中の人が速度がでねぇっていってるし
community toolkitのDataGridも速度出てねぇし
つまりListViewとかで速度がWPFより遅いって話なんじゃねぇの??
2022/02/15(火) 21:08:04.86ID:qXoJQquN
>>316
UWPの.net Nativeは極めて優秀だからそれと比較してGUIのパフォーマンスやインストールサイズが悪くなるのはしょうがない
UWPだとライブラリの中でアプリで使われていない部分を全部バッサリ切り捨てるしAOTにコンパイルされるので
WPFのUnSafeと同等のパフォーマンスだ
UWPはWPFと比べられないほどインストールサイズも小さいし速度も早い

ただUWPでもファイル操作はサンドボックス化の影響を受けていて遅いが、WinUI3はSystem.IOを使えるからそこは充分早い
2022/02/15(火) 21:10:30.82ID:6QhYGEAR
マイクロソフトの中でもフレームワーク開発チームは互いに戦ってるのかな
2022/02/15(火) 21:12:07.58ID:ES8IiGQC
>>315
WPF on .NET6の次はWPF on .NET8に乗せ換えるだけだぞ。

>技術的進展もなければ
だからそもそも採用されない。
わざわざ生産性が低いものを選ぶ理由がない。
2022/02/15(火) 21:24:14.14ID:s9A1ir2/
>>321
生産性は高いよ
時間当たりに生み出す価値が大きいほうが生産性が高いと言う

winformsで5分でできるものをWPFでは確実にそれ以上かかる
しかも学習時間も含めるとWPFの生産性が確実に低い
2022/02/15(火) 21:31:14.07ID:VAjtBqbg
WinFormとWPFは同等の手法が使えるからどっちがどっちって事はないだろ
慣れたら何かBindableObjectとReativeProperty使えばVVMでサクっと作れて見通しも良い
2022/02/15(火) 21:33:48.96ID:cnyVxlxn
>>319
そもそもUWPってGUIはWindows側のAPIを呼ぶだけだからな
WPFやWinUI3みたいに巨大なランタイムをロードする必要がない
AOTみたいな小手先の最適化を云々する以前に、ディスクIOの量が全然違う
2022/02/15(火) 21:49:28.29ID:cAuAN9G6
>>322
いや、生産性はかなり低い。
作るスピードも修正するスピードもWPFの方がずっと上。
winformsの進化版として使う分には学習時間なんてほとんどかからない。
2022/02/15(火) 21:52:12.13ID:s9A1ir2/
常に勉強し続けるのが善で正義と思うのは間違い
MVVMのパターンも変わり続けて何か正義なのかすらもわからない

これはこうしたほうがいいと絶対的に言える状況なのか
1年しないうちにいやいやこれはとか訂正されたりライブラリから削除されたり生産性が低すぎる
2022/02/15(火) 21:55:34.96ID:s9A1ir2/
MVVMの長らくの議論
ダイアログはどうやって出すかみたいな馬鹿な問題とかもうどうでもいい
2022/02/15(火) 22:09:55.99ID:ES8IiGQC
ひょっとしてWPFはMVVMで作らないといけないと勘違いしている?
MVVMを一切使わなくても問題ないよ。それでもWPF使った方が開発が楽だから。
2022/02/15(火) 22:17:46.86ID:C8AABCuO
バインディングって単語が出るとMVVMパターンと同一視しちゃうのかな
2022/02/15(火) 22:43:33.35ID:sOBRzctF
コードビハインド書いたらMVVMじゃないと
2022/02/15(火) 22:46:16.80ID:aWeidgzt
個人的にはC++みたく良いとこ取りする感じかな
WinFormsの気軽さで、データバインディングするだけ
2022/02/15(火) 22:49:22.58ID:VAjtBqbg
単発アプリならVVMでじゅうぶんMは要らん
やりにくいところはコードビハインドで逃げ
2022/02/15(火) 23:47:52.75ID:DOsFVpUk
>>332
Mは普通APIの先のサーバサイドにあるだよ
2022/02/15(火) 23:48:13.11ID:DOsFVpUk
>>327
2022/02/16(水) 10:21:32.43ID:JfSJk6Eb
笑笑
2022/02/16(水) 10:59:48.00ID:T0LbVKne
ダイアログに関する議論はMFCの頃から繰りかえされていてMVVM関係ない
最近の話題だと適用ボタンだよね。ダイアログに何か設定するOn/Offという項目があったと仮定して
その設定が反映されるのは(1)On/Off切り替えた瞬間(2)適用ボタンを押したとき(3)OKを押してダイアログを閉じた時
でそれぞれ異なる
2022/02/16(水) 11:30:15.17ID:JfSJk6Eb
使うコントロールも考慮する必要がある。
トグルスイッチはOn/Offを切り替えた瞬間に設定を反映することが求められる。
2022/02/16(水) 14:09:37.66ID:ie/DSr5F
その話題もMVVM関係ないんだけどな
ただのUIの問題で
2022/02/16(水) 14:28:20.83ID:prElW7Wj
https://github.com/microsoft/microsoft-ui-xaml/issues/6360

これうちでも発生してるわ
パッケージ名を、初期値のぐちゃぐちゃなやつに戻したらきちんと動いた
パッケージ表示名だけ変えておけば問題ない?ユーザーから見える部分で影響がなければいいんだけど
2022/02/16(水) 14:46:38.19ID:9x9DexoX
>>338
うん、だから今は設定反映の話題だよ。
2022/02/16(水) 21:11:28.96ID:raZgx3Yl
違うんじゃね?
VとVMの対話の件だろ
結局メッセンジャーパターンで解決されたけど

MVVM界隈でもWPFだけだぞ
とにかくアホらしい
■ このスレッドは過去ログ倉庫に格納されています