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

レス数が950を超えています。1000を超えると書き込みができなくなります。
2022/04/11(月) 05:10:34.19ID:LqBiqZMV
WPF(Windows Presentation Foundation)について語るスレ。

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

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

コードを貼る場合は以下のサイトの利用をお勧め。
https://ideone.com/
898デフォルトの名無しさん
垢版 |
2022/10/26(水) 16:08:54.14ID:V1iY34//
MVVMだと昔自分が書いたコード見てもシンプルで理解しやすいな
2022/10/26(水) 16:51:05.25ID:If5hDlW1
>>897
もしかしてロジック全部VMに書いてるの?だとしたらその方が問題だろう
普通はビュー(MVVMならVVM)とモデルの分離は大前提で、少なくともモデルはテスト書くでしょ
その上でビューのロジックの単体テストまで自動でやるかどうかというだけの話なわけだけど、なんか根本的なところを勘違いしてないかな
2022/10/26(水) 16:56:01.50ID:Do8Z1/L1
VMをテストすればVのテストは要らんわけだがこれを分離しないならVでバグる可能性もあって面倒だぞ
MAUIとかスマホでテストすんのか
2022/10/26(水) 17:03:18.84ID:If5hDlW1
いやMVVM使おうが画面と繋いで最終的な手動テストはさすがにやるだろう。
モデルの単体テスト、UIの手動テスト、そしてそれに加えてVMの単体テストを仮にやるなら、VMの単体テストで確認すべきは当然VM固有のロジックのみだ。
まあVMのロジックに対する網羅的なテストをUI経由で毎回やらなくていいから継続的な開発の効率化には寄与するだろう。
ただ、まともな組み方をしてれば一般的にはVMのロジックはかなり少ないはずで、そこまで大きな差にはならない。まともな組み方をしてればね。
2022/10/26(水) 17:07:13.67ID:kkDIWaCi
>>901
スレの流れ読めよ...
2022/10/26(水) 17:16:08.73ID:7O9MyaKx
だろおじさん登場
2022/10/26(水) 19:10:37.06ID:CC/Wl8Nq
うちの会社はテストコードなんて書かないぞ
2022/10/26(水) 19:39:25.80ID:r7FL/086
ロジックっつーか、どのコマンドを発したらどのプロパティがどう変わるかくらい単体テストでできるだろ
これ手作業でやんのかよw
2022/10/26(水) 19:44:42.44ID:uG7XKevD
テスターに任せればいいだろテストなんて
2022/10/26(水) 19:51:49.32ID:r7FL/086
人件費使うんかい
2022/10/26(水) 20:10:49.17ID:fUqihkJz
なんかエラーでたけど報告面倒やしOKにしとこ。
2022/10/26(水) 20:12:09.59ID:fUqihkJz
テスト終わりました。特に問題ありませんでした。
2022/10/26(水) 20:15:01.87ID:7O9MyaKx
テスト結果を口頭報告する世界
2022/10/26(水) 20:16:09.97ID:LaQM1xmg
>>886
あくまでイメージなだけで初心者がそれを信じてしまってるのがなぁ
2022/10/26(水) 20:21:04.01ID:eIY/KCa2
開発工数が削られると最後のテスト工数を削るしかなくなるんだよな
全体で見積もりだしても要件定義でダラダラするから工数足りなくなることなんてザラだし
913デフォルトの名無しさん
垢版 |
2022/10/26(水) 20:30:31.44ID:s6MGFJdq
「ちょっと変だったけど納品までには何とかなるだろ。」
2022/10/26(水) 20:48:16.75ID:5odk0wYq
とりあえずシステム起動できるかどうかだけは納品前に確認しておいてくれ
2022/10/27(木) 06:58:10.64ID:P8fdDGmw
>>912
コーディング段階で異常系を端折る
取り敢えず正常系が動けばOK
2022/10/27(木) 10:00:20.54ID:wzRrIng9
>>911
初心者というか田舎者
2022/10/27(木) 10:27:57.17ID:WURb7r0+
ListView等のItemTemplateにボタンなどを置いたとき
コードビハインドにイベントハンドラ置くのが一番楽だからな
頑張ってVMに置いても良いことなど一つもない
2022/10/27(木) 10:38:07.76ID:GOmw6fPY
ビハインドと共存できないMVVM原理主義者がいるのも事実。
一緒に仕事をした時はびっくりした思い出。
2022/10/27(木) 11:58:20.03ID:hjjQgQcY
>>917
んなこたない
一つのコマンドを共有してバインドしても手間は変わらん
2022/10/27(木) 12:14:41.44ID:J+iFb8i9
グラフコントロールとか実装しだすと
データバインデングとか糞過ぎるからな
2022/10/27(木) 14:24:40.22ID:6+qLeci9
1つのコマンドを複数のコントロールに割り当てるってほとんどなくないか?
ゲームのUIくらいじゃない?
2022/10/27(木) 14:36:21.65ID:hjjQgQcY
>>921
ListViewって書いてんじゃん
923デフォルトの名無しさん
垢版 |
2022/10/27(木) 18:31:17.41ID:Zv+DA8lJ
DataGridでわけわからなくなり、ListViewに。
ソースコピペしまくって一応動作したけど訳わからんわ。
924デフォルトの名無しさん
垢版 |
2022/10/27(木) 18:31:17.41ID:Zv+DA8lJ
DataGridでわけわからなくなり、ListViewに。
ソースコピペしまくって一応動作したけど訳わからんわ。
2022/10/27(木) 18:39:17.75ID:J+iFb8i9
複雑なコントロール操作が必要なとき
MVVMとか持ちだすとコードが滅茶苦茶になりがち

良く発生するのが、
バインデングの実行順序
2022/10/27(木) 18:43:12.60ID:hjjQgQcY
さすがにそれは設計が悪すぎる
2022/10/27(木) 19:45:45.68ID:wzRrIng9
コードビハインドだと
複数のプロパティに意図した順番で値を設定できるが、
さてバインデングではどうなるか?
考えた事すらないんではないか?

昔(なんせ10年以上も前)に調べて
ネット上の資料を見つけた事があるが
もう忘れてしまったね
2022/10/27(木) 19:50:35.80ID:hjjQgQcY
まずそんなことする必要がない
イニシャライズ以外でプロパティの設定順序によって動作が変わるような設計が悪い
それでも糞設計でどうしても順序が大事ならワンウェイバインディングにしてコマンドから設定すべき
2022/10/27(木) 20:16:29.17ID:wzRrIng9
>>928
あるコントロールの
プロパティA
プロパティB
プロパティC
にデータバインデングした
さて値が設定される順序はどう判断すればよい?
2022/10/27(木) 20:23:58.70ID:gHpKK6Hq
>>929
だから、そんな順番でロジックが変わるのがクソって話をしてんだがw
それでどうしても順番が大事ならコマンド使って順番に入れたらいいぞ
二回同じこと言ったけど読めるか?w
2022/10/27(木) 20:42:08.19ID:xYfvETzj
プロパティABCが相互作用するのをイメージしてるんだろうけど
それをUI層で解決しようとするのが間違い
2022/10/27(木) 20:49:21.84ID:wzRrIng9
MVVMは単純なレベルで破綻するという事だ
本件意外にもモデルがダイアログと対話するだけでも大騒ぎになるのよ
結局MSのホワイトペーパー漁るはめになって苦しい言い訳しなきゃならん事になる
2022/10/27(木) 20:50:39.55ID:gHpKK6Hq
頭悪すぎて草しか生えんw
2022/10/28(金) 00:10:18.66ID:Rl5QKwW8
そんな順番に依存していたら、プログラミングなど出来ない

永遠にバグり続ける
2022/10/28(金) 00:13:33.88ID:2R4sDdk+
馬鹿だらけ?
2022/10/28(金) 06:24:13.52ID:55z/8PsZ
UIでの順序って、バリデーション時のチラ表示かな?
ビハインドでのカキコはレスポンスが大事な時と、フォーカス移動やDataGridやGridViewでの範囲選択処理ぐらいしか思いつかないが、他に何かある?
まぁ なんでもかんでもビハインドに書くのあれだし、DialogやMAUIのPopupやカスタムコントロールでもViewModelを作るMVVM教もなんかなぁーとは思う。
937デフォルトの名無しさん
垢版 |
2022/10/28(金) 07:14:58.92ID:YSrePaqP
勉強としてWINFORMのアプリ(CSV->DataGrid)をWPFに作り替えてるけど
面倒くささ300%増し。
表示するだけなら兎も角、特定のデータがあるカラムの文字色を変えるところで
難儀中。
サイトみたらもっとも難しいコントロールで、難しさから諦める人も多い とある。
諦めていいのか??
2022/10/28(金) 07:52:49.62ID:uO1xx4wy
必要ないなら諦めていいやろ
2022/10/28(金) 07:57:37.89ID:YfCj0B1j
>>937
何が難しいんだ
ItemsTemplateとValueConverter作るだけだろ
2022/10/28(金) 09:28:32.67ID:q/aBjBkx
>>919
ItemTemplate内のイベントはコードビハインド使わずに処理すると可也めんどいだろ
2022/10/28(金) 09:32:40.89ID:q/aBjBkx
結論はWindows SDK Appに移行すれば解決だな
イベントバインディングでVMにコードビハインドと変わらない理屈でコードが書けるし
単体テストも問題なく出来る
2022/10/28(金) 09:38:57.28ID:YfCj0B1j
>>940
XAML数行の何がめんどいんだよ
2022/10/28(金) 09:39:49.13ID:YfCj0B1j
ああイベントと書いてるな
なぜイベントw
2022/10/28(金) 09:43:12.99ID:YfCj0B1j
>>941
それだとsenderがobjectじゃん
2022/10/28(金) 09:44:24.09ID:q/aBjBkx
>>942
ビジュアルステートって数行じゃ終わらないだろ
それとWinUIだとItemTemplateの内部じゃ使えないからイベントハンドラ呼んだほうが早い
2022/10/28(金) 09:53:18.43ID:og172vo+
>>945
なんでステート使うんだ
コンバーター作ってるんだからそれをBackGroundにバインドして数行で終わるだろ
2022/10/28(金) 10:10:10.03ID:YfCj0B1j
ここまで読んでわかったけど結局お前らが難しいと言ってるのはMVVMじゃなく単一責任原則と疎結合なんだよ
それはモダンプログラミングの基本だからそれが難しいと言うことは自分にプログラマの素質が無いと自分で言ってるようなもんだぞ
2022/10/28(金) 10:11:38.46ID:q/aBjBkx
>>946
コードビハインド使わずにイベントを拾うならビジュアルステートだろうに
コンバーターならデータの中身しか使えない
2022/10/28(金) 10:15:18.37ID:og172vo+
>>948
データによって色を変えるんだからそれで問題ないぞ
2022/10/28(金) 10:18:09.68ID:q/aBjBkx
>>949
それは別件
2022/10/28(金) 10:24:04.64ID:og172vo+
突然別件になったな
2022/10/28(金) 10:26:46.35ID:55z/8PsZ
まぁ DataGridの部分選択、部分範囲状態をスキャンするめに、ViewModelからViewを参照する人もいるからな。
そこまでして、ViewModelでやる意思は凄い。
当然、SRPなどというクリーンアーキに住んでいない人の方が多い。
2022/10/28(金) 10:29:40.93ID:q/aBjBkx
>>951
レスを辿れば分かるよ
そっちの話は最初からしていない
2022/10/28(金) 11:54:54.19ID:IFywMyP/
レスを辿るとそこに行き着くんだがw
2022/10/28(金) 11:55:27.34ID:IFywMyP/
>>952
結局疎結合がわかってないというだけ
2022/10/28(金) 11:56:51.55ID:6hLKpWK1
DataGrid継承してオレオレDG作ればコードビハインドじゃなくなるからオススメ
2022/10/28(金) 12:34:48.15ID:vMzkXF6c
次バージョンとかで改良されたりしないの?
2022/10/28(金) 12:40:36.14ID:nannj+G2
どのバージョンでも疎結合を知らないプログラマは厳しいよ
2022/10/28(金) 13:30:28.07ID:wAzqHAGQ
WPFはMS的には既にレガシー扱いで開発終了してるからこの先新機能が入ることはない
2022/10/28(金) 14:04:09.12ID:nannj+G2
かと言ってWinUIやMAUIにはすぐに置き換えられんからなあ
INotifyDataErrorInfoにすら対応してないWinUIの完成度よ
961デフォルトの名無しさん
垢版 |
2022/10/28(金) 15:41:37.26ID:iZqLOJxY
MVVMやりたくない人にこそWinUIなんだよな
2022/10/28(金) 15:52:58.93ID:nannj+G2
WinUIでMVVMできるしまだそれが推奨だぞ
そのうちMVUになるから絶望しろ
2022/10/28(金) 15:58:50.22ID:Qu1tKuJC
VisualStateってのがあるのか
2022/10/28(金) 17:36:35.58ID:55z/8PsZ
>>956
そこまで気が回る人なら、MVVM真理教でのたうち回っていない。
問題解決能力が全てだという事を肝に銘じていない人に何を言っても聞く耳は持たない。
クリーンアーキはMVVMの基本で、インターフェースで繋ぐ方向が全てだ教えても、10年変わらない奴は、それだけの存在。
DataGridを継承してINotifyChange含むプロパティーを追加するなどという発想がでるわけもない。
2022/10/28(金) 17:56:34.47ID:2R4sDdk+
>>936
要件が簡単すぎる

設定パネルUIに複数のインジゲータUIをバインド

表示データーはさらに別のスレッドからバインド

監視系だとこんなんザラでしょ
2022/10/28(金) 18:12:41.55ID:YfCj0B1j
>>965
それのどこが複雑なんだ?
2022/10/28(金) 19:28:10.82ID:lC45A2k7
スレ見てると、玄人専用、馬鹿は使うなって感じするわ
こんなじゃ広まるわけないわな
2022/10/28(金) 19:32:50.18ID:mvIM4C1f
広まってるんだが
969デフォルトの名無しさん
垢版 |
2022/10/28(金) 19:33:27.99ID:iZqLOJxY
OOPの観点から探ると、アプリの作り方はMVVMに向かうようになっている
すべてが部品で、それでもってアプリが構築されているという姿

MVVMを否定するならカプセル化だのなんだのというところまで否定してプログラム書いたほうがいい
そのほうが一貫性がある
970デフォルトの名無しさん
垢版 |
2022/10/28(金) 20:05:02.47ID:YSrePaqP
>>968
いやいや、そんな事はない。
検索件数でわかる。
2022/10/28(金) 20:16:48.15ID:mvIM4C1f
>>970
何を検索していくつになったんだ?
2022/10/28(金) 20:18:52.86ID:QqfylsYu
前よりはちょっとは広まったぐらいじゃね
ただし、androidやiosのそっち方面のお陰で
2022/10/28(金) 20:24:58.80ID:QqfylsYu
つか、jetpack composeとか最新の環境だとDialogやポップアップメニューも
visible変数どっかで持って自分で切り替えるはめになるし結構徹底してる
2022/10/28(金) 21:31:48.03ID:lC45A2k7
winformより広まってないよな
ネットで出てくる情報の量が少なすぎるよ
そういうので更に広まらなくなってる気がするわ
2022/10/28(金) 21:35:09.23ID:T2Crud2Q
>>964
それ、コントロールの継承と言うかカスタムコントロール作るよりビヘイビア作ったほうが楽じゃね?
そういやプロパティーの順番どうのこうのも、ビヘイビア作ればコードビハインドと同じ処理が簡単にできるだろ
2022/10/28(金) 21:42:15.09ID:mvIM4C1f
>>974
wpf 1311
https://qiita.com/tags/wpf

winforms 100
https://qiita.com/tags/winforms
windowsforms 11
https://qiita.com/tags/windowsforms

圧倒的だが?
2022/10/28(金) 23:10:12.60ID:n+Sifc0P
behaviorとかできたら触りたくないなあ
2022/10/29(土) 06:19:16.60ID:ty2LJJEP
>>974
wpf:166,972 questions
https://stackoverflow.com/questions/tagged/wpf
winforms:96,622 questions
https://stackoverflow.com/questions/tagged/winforms

wpf:60,289 repository
https://github.com/search?q=wpf
winforms:17,108 repository
https://github.com/search?q=winforms

wpf:1,311 記事、654 フォロワー
https://qiita.com/tags/wpf
winforms:100 記事、10 フォロワー
https://qiita.com/tags/winforms

wpf:679 repository
https://bitbucket.org/repo/all?name=wpf
windowsform:11 repository
https://bitbucket.org/repo/all?name=windowsform

wpf:62 articles
https://zenn.dev/topics/wpf
winforms:4 articles
https://zenn.dev/topics/winforms

wpf:46 repository
https://gitlab.com/explore/projects/topics/wpf?archived=true&sort=latest_activity_desc
winforms:17 repository
https://gitlab.com/explore/projects/topics/winforms?archived=true&sort=latest_activity_desc
979デフォルトの名無しさん
垢版 |
2022/10/29(土) 06:47:12.49ID:OLrOtMPX
TextBox c# 等で検索すると殆どがwinformsなんだよ。
2022/10/29(土) 07:47:01.24ID:AHyDFjq2
検索結果の数はともかく検索のしかたにセンスがない
場所はgoogleじゃなくlearn.microsoft.comを使え
検索したいものによって検索する場所を変えるのは基本だ
それからc#じゃなくwinformsやwpfなどのフレームワーク名を使え
一つの言語に同名のコントロールが複数あるのにそれを指定しなくてどうする
自分の欲しい情報がなかなかみつからないのはそういうとこだぞ
検索のしかたが下手でみつからない理由をを情報が少ないからと判断したんだろう
2022/10/29(土) 07:47:11.21ID:ksyRNNWa
プログラミングでいちばん大事なのって情報量だよね
特に趣味でやってる俺みたいなのにとってはチュートリアルがないときつすぎる
普及させたいならMSはもっとそういうのに金かければいいのに
2022/10/29(土) 07:48:20.21ID:AHyDFjq2
>>981
チュートリアルあるぞw
検索すればすぐみつかる
983デフォルトの名無しさん
垢版 |
2022/10/29(土) 07:52:34.61ID:OLrOtMPX
WPFの書籍は少なすぎ。ここにいる人書いたらw
2022/10/29(土) 07:57:06.61ID:ksyRNNWa
WPFの書籍とか需要あるの?
WINUIじゃないの?
2022/10/29(土) 08:02:14.32ID:AHyDFjq2
これが情報弱者か
2022/10/29(土) 08:11:28.38ID:zA6hYUrm
俺もbehaviorには触れたくない。 継承で済むものはその方がいい。
2022/10/29(土) 08:26:18.89ID:CXQz1XIj
ビヘイビアとかWPF特有な物はなるべく使いたくない
普及しない原因は学習コストが高すぎるってのもありそう
2022/10/29(土) 08:38:21.49ID:AVNfqdrP
>>987
むしろwinforms以外はwpfもuwpもwinuiもmauiも全部behavior使うぞw
作るのだってcommunitytoolkitにテンプレートあるからそれを継承するだけ
2022/10/29(土) 08:39:20.12ID:AVNfqdrP
あと普及してるって結論出たろw
2022/10/29(土) 08:42:34.22ID:pxDcU15g
ビヘイビアは依存関係プロパティーがゴツいだけで、xamlでアタッチできるイベントハンドラだから難しいものじゃないんだけどな
依存関係プロパティーもxamlでバインド出来るプロパティーってだけだから詳細まで知らなくてもなんとかなる
後はOnAttachedをオーバーライドしてイベント登録してOnDetachingでイベント削除
イベントハンドラの中を記述すれば出来上がりだし、汎用性が高いから使いまわしも出来る
2022/10/29(土) 09:43:39.14ID:CXQz1XIj
>>988
まじ?それならちょっと勉強しようかな
調べたらこんなこと書かれてたから、迷うわ。

MVVMに準拠するとコードビハインドが使えないので、その代替手段ということになる。
2022/10/29(土) 09:49:58.16ID:AHyDFjq2
>>991
これか
https://qiita.com/flasksrw/items/04818070091fe82495e7
qiitaのどこの馬の骨かわからんやつのコメントもついてない記事を鵜呑みにしてどうする
2022/10/29(土) 10:27:15.68ID:CXQz1XIj
>>992
1番上に出てきたからな
みんな、それを参考にするんや
誰が書いたかとか気にする人なんて一握りじゃない?
994デフォルトの名無しさん
垢版 |
2022/10/29(土) 10:30:25.49ID:OLrOtMPX
>>992
さっぱりわんらんわ〜。
winformだろうがWPFだろうが
ぶっちゃけ手法はどうでもいい。
客が納得すればそれが全て。
2022/10/29(土) 10:40:48.71ID:AHyDFjq2
>>993
みんなが参考にしてるのにいいねが少なくてコメントも無いのがどういうことか考えてみたらどうだ
2022/10/29(土) 10:41:57.93ID:AHyDFjq2
>>994
それが昔の落ちまくってた頃のwindowsやofficeの作り方だ
2022/10/29(土) 10:53:39.73ID:CXQz1XIj
>>995
天下のGoogleが1番関連度高いって言ってくれてるから大体の人はそっちを信頼するんじゃない?
レス数が950を超えています。1000を超えると書き込みができなくなります。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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