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

■ このスレッドは過去ログ倉庫に格納されています
2021/06/20(日) 17:04:18.66ID:7UVkl7BZ
Windows Presentation Frameworkについて語るスレ。

前スレ
WPF(.NET4.x, .NET Core) GUIプログラミング Part25
https://mevius.5ch.net/test/read.cgi/tech/1612522463

関連スレ
Windows 10 UWPアプリ開発 Part 2
http://mevius.2ch.net/test/read.cgi/tech/1499658092/

コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/
2021/06/29(火) 13:36:43.26ID:sps6wUNa
>>259
英語読めないから知らない
2021/06/29(火) 14:15:00.34ID:bpKPj1F0
>>260
その「しといたほうがいい」程度のためにWPFやるの?さすがに費用対効果が悪すぎないか
そらみんなWebへ流れるわな
2021/06/29(火) 15:16:50.08ID:fjM4NkMz
>>262
そりゃwebが要件に合うならそっちの方がいいけど
デスクトップでやらなきゃいけない場合、
winFormsは生産性もアプリの品質も論外だから現実的な選択肢の候補としてWPFは有力。
費用対効果はwinFormsなんかを選ぶよりはWPFの方がずっと上。
2021/06/29(火) 16:30:43.80ID:m0EoJlPu
WPFよりwinformsがいいなんて言ってる奴いないのに何無駄なこと言い続けてるの?
なんでもかんでもxamlで書かせようとしたWPFはバカっていってるだけなのに
2021/06/29(火) 16:33:32.55ID:PN4ZOAJQ
いやこのスレにはいっぱいいるぞ?
2021/06/29(火) 17:52:19.00ID:S91QebJL
WPFで作るだけで品質も生産性も向上、よかったよかったw
2021/06/29(火) 17:52:53.44ID:SOQ8GKtA
* WinFormsの方が優れてるよ派
* XAMLは糞だよ派

自由に追加してってくれ
2021/06/29(火) 17:54:06.03ID:R64mVEcr
糞なのはMVVM派やぞ
2021/06/29(火) 18:06:05.47ID:wewaPA3V
彼はずっと頑張ってるんだけど
一向に何がどう上なのか提示しないのが笑える
2021/06/29(火) 18:14:53.74ID:SmSl8CvY
XAMLとMVVMの違いが解っとらん時点で...
2021/06/29(火) 18:41:43.87ID:d9qF3Zj0
馬鹿はwinformsはスケーリングがっていうけど事実上使用環境は2k固定
4k環境なんて企業ではほぼ出てこない

何かあればすけーりんぐがああああって言いたいだけだろ

そんなもの弱点でもなんでもない
4K環境でアプリを使いますかと聞いたら何それとかいいえってすぐに答えが出る
winformsの弱点はそれとは別にあるだろ
2021/06/29(火) 19:29:56.93ID:IWxlvq96
>>271
それ以外の弱点は余り聞かん。
2021/06/29(火) 19:34:10.99ID:D8AMOp4b
他人がすばらしいと思おうが糞と思うがどうでもいいだろ
そんな他人の意見気になるのかよ
このネタしつこすぎ
2021/06/29(火) 19:39:00.69ID:MZAvi10Y
4Kモニター使う客は見たことないけど、13インチFHDノートとかでスケーリング150パーで使う客はざらにいる。
2021/06/29(火) 21:06:07.80ID:uY+Pqtpp
WinFormsはバグが多いみたいな話は聞いたが踏んだことないな
2021/06/29(火) 21:50:16.02ID:88YgLK/8
>>271
最近問題になってるのはFHDのノートPC+老眼
拡大しないと見えないって言われるけどWinFormだとだいぶ面倒
2021/06/29(火) 22:21:04.01ID:cxwm0a1D
そこで全てOwnerDrawですよ
2021/06/29(火) 22:44:16.86ID:SOQ8GKtA
>>273
15年やってるネタにしつこいだと!?
2021/06/29(火) 22:57:19.14ID:vxJRxXrh
老眼ならボケててもわかんねえしDPI Unawareでご提供じゃあ!
2021/06/30(水) 06:20:20.65ID:fPKzNzZo
>>275
winformは仕組み的にバグを作り込みやすい。
SOLID原則に則った作りがしづらいから。
2021/06/30(水) 10:33:14.92ID:ZQ555E+g
>>280
具体的にどうぞ
2021/06/30(水) 15:27:43.63ID:x8wFy7G1
DataGridのヘッダの結合かベータ行カラムの分割をしたいんだけどxamlだけじゃできないんだねこれ
2021/06/30(水) 21:16:42.52ID:HGlM55pW
>>277
オーナードローに手を出すぐらいならWPF使った方が簡単だし楽だぞ
2021/06/30(水) 21:43:59.63ID:YqdW0y/d
今時windowsアプリ作るならflutterでしょ
その次はcompose for desktop

シリコンバレーに住んでるけど周りだいたうそうだぞ
2021/06/30(水) 22:23:18.20ID:mq4i3ovj
MayaみたいなGUI作りたいんだがFlutterで問題ない?
2021/06/30(水) 22:49:25.75ID:dbpUo6lf
Visual Studioで作れるなら
2021/07/01(木) 00:50:28.07ID:cUgiTPJy
>>281
具体的も何もイベントハンドラしこしこ書いてたらそうなっちゃうでしょ
2021/07/01(木) 01:41:15.75ID:quMFgJi9
>>287
イベントドリブンだからハンドラは書くだろ
289デフォルトの名無しさん
垢版 |
2021/07/01(木) 02:25:59.60ID:3s4V0XuS
>>284
私のシリコンバレーではWinForms一強だがね
2021/07/01(木) 02:41:38.58ID:g7pLzwL6
WPFを推してる人に質問。

https://teratail.com/questions/45592
でベストアンサーの人がDataContextを
XAML
<OrigUI:OrigButton x:name="MyButton" DataContext="{Binding MyButton, Mode=TwoWay}" />

コードビハインド
MyButton.DataContext = myClass.MyButton;
の両方の例を見せているが、
両方で書けることのメリットは何?

自分はどっちか(この例だとXAML)だけあれば充分だと思ってる。
291デフォルトの名無しさん
垢版 |
2021/07/01(木) 03:48:23.98ID:3s4V0XuS
WPFにおいてXAMLは必須のものではない
2021/07/01(木) 05:03:15.49ID:DKvr+prV
ListViewとかの仮想化だけはデータテンプレート使わないと駄目そうだけどね
2021/07/01(木) 07:09:44.32ID:79OH3ZpR
>>288
それがformsの限界。

>>290
別にWPF推しじゃないけど、
XAMLはビルドの過程でC#コードに変換されるから
両方で書けるのは自然なことでは?
UIに関することはなるべくXAMLに書いた方がいいと思うけどね。
2021/07/01(木) 07:14:56.37ID:Yl2LhZPg
>>287
SOLIDなんて何も理解してなさそう
2021/07/01(木) 07:58:52.76ID:zoA/qoUb
>>290
後から動的に生成したい場合とか、コードで書けないと出来ないじゃん
2021/07/01(木) 09:03:54.60ID:BtHdEiN6
XAMLに記述すると横にびろーんと長くなって見づらい
2021/07/01(木) 09:06:48.81ID:jSC3+/HL
SRPやOCPを順守するには一般にレイヤの多い方が有利だから、むしろイベントハンドラの方がやりやすいまである
MVVMはVからMへイベントを伝播したりMの状態変化をVに反映したり依存関係を管理したりと、VMの役割が多くなりがちなんだよね
そのへんReduxなど後発の亜種ではより役割が整理されている
2021/07/01(木) 09:21:41.82ID:Z6twYu4c
>>296
xaml stylerというvisual studio拡張を入れなさい。
xaml保存時にいい感じに改行入れてくれるに適当な所で折り返してくれるパッシブスキルだ。
2021/07/01(木) 14:39:45.82ID:LLiHzSna
>>290
同じように見えるが依存関係プロパティ(xaml)とC#のプロパティは別々に定義しないといかんのだ(参照しているDataContext自体は同じ)
xamlUIクラスはDependencyObjectを継承しているのだ
2021/07/01(木) 19:04:08.19ID:g7pLzwL6
>>293
サンクス
なるほど、確かに両方で書けること自体は自然か

> UIに関することはなるべくXAMLに書いた方がいいと思うけどね。
そうだね
自分としては「両方で書けるけれども、こっちでしか書いちゃいけない」ってしてくれるといいんだけどな
複数のサンプルプログラムのいいとこどりをしようとした時に、それぞれが別々の書き方をしていると非常に面倒臭い、DataContextに限らず

以前、「全部コードビハインドで書く」っていうサンプルコードがあって、走らせるとちゃんと動作した
この調子だと、結局、毎回両方の書き方を覚えていかんなるんじゃない、特にいいとこどりするなら?
∴学習カーブが急だという説は正しい、というのも単純計算で覚えることが二倍だから

間違ってると思ったら気軽に指摘してくれ
2021/07/01(木) 19:09:07.26ID:g7pLzwL6
>>295
> 後から動的に生成したい場合とか、コードで書けないと出来ないじゃん

サンクス
入力が変わる度にDataContextを動的に切り替えるってことね
でも、XAMLじゃできなかったっけ?
(DataContextじゃやったことないけど、XAMLでListなんかの要素の変化した分も表示できるから出来るのかなーと類推してるだけだけど)
2021/07/01(木) 22:32:47.80ID:cUgiTPJy
>>300
サンプル見るときに何を参考にするか決め打ちするしかないね
俺はそうしていた
WPF始めたばっかりの頃はWinFormから移行を進めたくてイベントドリブン中心(これは結局失敗)
その後学習を進めてMVVM中心に切り替えた
MSのサンプルがイベントドリブンだらけなのが良くないよな
2021/07/01(木) 23:00:00.74ID:j2ilzMEK
>>302
そっちが基本なんだが...
2021/07/02(金) 11:38:56.90ID:VsUUVKi+
機能が豊富な分、全部覚えようとしたらそりゃ大変だ。
でも
ひのきの棒
剣・槍・斧・弓の欲張りセット
どっちかくれるって言うなら普通は後者を選ぶだろ?
まず手に馴染むものを使って
少しずつ他のものも触れてみるといい。
最初から全部に手を出す必要はないし、
最終的にも全部使えるようになっている必要はない。
2021/07/02(金) 11:50:23.46ID:Ngk5hsML
的外れな例え話は頭悪く見えるぞw
2021/07/02(金) 12:28:28.82ID:lSX3jk7y
おや?後ろに隠してるのは、棒かな?

www
2021/07/02(金) 12:40:53.27ID:Xm/bZCrF
>>304
先ずは初期装備のひのきの棒でスタートするだろw
2021/07/02(金) 13:05:21.63ID:VsUUVKi+
>>307
もらった装備は後から追加できないんだぞ
2021/07/02(金) 13:28:40.79ID:Egj0Aifo
そこで魔法でスキルアップだ
2021/07/02(金) 13:32:17.26ID:Vj99qG3J
もうやだ
2021/07/02(金) 14:04:17.52ID:KVWZHoQG
ここまでワテの自演
2021/07/02(金) 14:39:21.48ID:Qeilx2mY
wpf簡単チュートリアルテンプレートないの

DBとクエリだけ指定すればDataGridに出力してくれるとか
ボタンが配置してあってイベントに印刷とかExcel出力がすでにインプットされてるとか
2021/07/02(金) 15:38:08.34ID:VsUUVKi+
>>312
ほとんどwpf関係なくね?
2021/07/02(金) 16:32:41.92ID:Ir1tg0Tf
言語よりAccessのがいいんじゃね?
レポートは最強レベルの性能だし
2021/07/02(金) 19:19:58.89ID:s2SIGsrq
今時ローカルのDBなんて個人の小遣い帳にすら使い物になりません
2021/07/02(金) 19:42:12.79ID:Ir1tg0Tf
>>315
なにいってんの
サーバーに接続して利用すんの
一時期業務系の開発でよく見られた方式よ
2021/07/02(金) 19:49:38.81ID:9L+w52dS
SQLiteは使い勝手が良いのだが
2021/07/03(土) 04:36:22.66ID:DAcib8Yu
>>302
欲しいサンプルがさ、なかなか見つかんないんだよね
決め打ちできるほど選べないという・・・
その唯一見つかったサンプルたちが別々の書き方してると苦労する
自分はMVVMから学んで、あとでイベントドリブンを知った
2021/07/03(土) 04:59:48.16ID:DAcib8Yu
>>304
> ひのきの棒
> 剣・槍・斧・弓の欲張りセット
> どっちかくれるって言うなら普通は後者を選ぶだろ?

ディスるつもりはまったくなくけど、
なんか喩えがよろしくない気がする
どっちかくれるって、それは学習コストも含めて言ってる?
使いこなせること前提なのかな?
コンビニに行くのにヘリコプターは要らないでしょ?

WPFは使ってみて手に馴染まなかった
2021/07/03(土) 07:36:49.79ID:5NjsOhPI
>>319
徒歩しか選べないのと、ヘリコプターも徒歩も選べるのは全然違うよ。

WinForms的作り方でWPFを使えばいい。
バインディングもほとんど使わない。
それなら学習コストはほとんどかからない。

柔軟なレイアウトシステムとか
スタイルによるコントロールのプロパティ一括指定とか
学習コストが低くて便利なところだけつまみ食いすればいい。
2021/07/03(土) 09:09:34.76ID:WFYQtiF3
結局邪悪だったのは
WPFといったらMVVMみたいな記事を書いてたMicrosoftのブログとかMVP、なんだよね
山師みたいなもので
2021/07/03(土) 10:25:40.00ID:SKBAEND3
>>318
あとはもう書籍に頼るしか無いな
WPF関連の参考書は古いのばっかりだけど
WPF自体があんまり進化してないから2010年くらいのでも結構参考になる
2021/07/03(土) 11:00:07.13ID:IVHyImvm
取っ付きにくい→普及しない→資料が無い→

負のスパイラルだね
2021/07/03(土) 11:51:17.43ID:/7aEvID4
>>318
そりゃ酷い
普通こんな変態的なコード書かないよ

同じMSでもBlazorのMVVMの方がまともだ。

プロも考えてるなら
js覚えてReactとかやってみたら?
仕事多いよ。
2021/07/03(土) 13:31:50.48ID:xrPgyhkt
>>304
実際には、WinFormsが少し前の高級車で、WPFは、バックカメラを
搭載した軽自動車みたいな感じだろう。
速度が違うし、どっちがいいとも言えないような状態。
2021/07/03(土) 13:51:45.16ID:xrPgyhkt
>>325
もとい。
バックから見たいな画期的なものはWPFには付いてない。
せいぜい、短波ラジオが追加された軽自動車みたいな印象。
2021/07/03(土) 14:03:08.22ID:+Y9Mw3Lc
WPFってWindowsメッセージドリブンなアプリを作れないよね
2021/07/03(土) 14:03:10.68ID:SKBAEND3
そんなにWinFormが好きなのかw
2021/07/03(土) 14:22:06.46ID:+F8p4M2+
>>325
実際にはWinFormsがリヤカーでWPFがステーションワゴン
2021/07/03(土) 14:22:33.63ID:xrPgyhkt
WinFormsは、レンブラントやミケランジェロの作品の様に万人から一定の評価を
受けるようなものだが、WPFはピカソの絵みたいに人を選ぶ。
支持者には画期的で先鋭的なものらしいが。
2021/07/03(土) 16:12:05.88ID:kc73fFDc
いつまでWinForms vs WPFやってんの
ネタが尽きて妙な例えになってるし、いい加減にしろ
2021/07/03(土) 16:51:53.62ID:bc4tv4Cc
10年以上続けてる習慣にいい加減にしろだって!?
お前こそいい加減に止めることはできないって現実を理解しろよ
2021/07/03(土) 18:06:40.40ID:DAcib8Yu
>>320
やってみようかなという気持ちと
そっちの道も蛇の道では、または
それならWinFormsでいいんではないかという気持ちがある

WPFの扱いをユーザー側でどうこうするより、
MS側でバインディングを簡素化してくれた方が嬉しいかな
2021/07/03(土) 18:07:36.50ID:yLRyBVvw
自分が知ってるOSSでWPF使ってるのはEDCBぐらい
MVVMは使ってないようだけど
2021/07/03(土) 18:27:49.11ID:DAcib8Yu
>>322
ここ3年ぐらいで出版されたのを一冊買ってある
アマゾンで高評価だった奴
でも、欲しかった情報とちょっとズレてるんだよね・・・
もちろん有用な情報もあったけど
2021/07/03(土) 18:30:13.91ID:DAcib8Yu
>>324
> js覚えてReactとかやってみたら?

あら、今、正にそこ
そうだね、その方向性で行こう
2021/07/03(土) 19:20:53.81ID:l02BKdxs
今更、WPFを覚えるってのもね。
2021/07/03(土) 19:52:56.77ID:ApVtA7Dx
今ならWindows Runtime系の本でC#バージョン新しめのやつ探したほうが良い、あるのかは知らん(´・ω・`)
Xamlまでやるなら素直にPetzoldくんの6版
2021/07/03(土) 20:10:39.49ID:PF+2QSJm
マジか。WPF今から頑張ろうと思って色々調べているけど
正当進化のUWP?がズッコケてるのみるとこの技術に未来はないのかなとも思う
ただWPFのFormsにはない先端で綺麗なコントロールがあるからほっとけない
2021/07/03(土) 21:19:34.25ID:aubZqG39
今WPFを使う必要に迫られているのではなく将来を考えて勉強しようとしているなら、
さすがにそれはWebかスマホをやったほうがいいぞ
2021/07/03(土) 22:02:27.73ID:/7aEvID4
Reactの次のステップが
React Native for windowsでのwinアプリ作りだね

https://docs.microsoft.com/ja-jp/windows/dev-environment/javascript/react-overview#does-react-work-on-windows

https://microsoft.github.io/react-native-windows/
2021/07/03(土) 22:03:35.57ID:yLRyBVvw
今ネイティブアプリを作る理由は鯖を用意しなくて良いぐらい…
2021/07/03(土) 22:10:03.29ID:/7aEvID4
ネイティブアプリで自前ブラウザーを構成し、
本体アプリはReactで作成する
344デフォルトの名無しさん
垢版 |
2021/07/03(土) 22:13:34.86ID:yhsKzI36
>>339
趣味なら良いんじゃない?
慣れれば使いやすいから

フリーランスとかで案件が欲しいんだと微妙
345デフォルトの名無しさん
垢版 |
2021/07/03(土) 23:34:47.12ID:gAHM5nnh
>>339
WPFのxamlは多機能すぎるしとりあえず最低限でもいいから適当にやればいい
ただ、MVVMは他でも使ったりするからこっちを重点的にやればいい
2021/07/03(土) 23:35:31.59ID:yLRyBVvw
MVVMは他でも使うというのは語弊があるかと
2021/07/03(土) 23:36:48.07ID:gAHM5nnh
俺が勉強した時は最初はxamlに深入りしないで他でもいきるMVVMの方に力入れてモチベーションを維持した
2021/07/03(土) 23:38:42.00ID:yLRyBVvw
MVVM技術は袋小路で他に流用できないし思想も実装によって違う
MVVM自体はこれから捨てられる技術

開発&テストしづらいのでFaceBookはMVVM否定してReactでFluxを使ってる
2021/07/03(土) 23:40:38.59ID:yLRyBVvw
MVVMが向いてるのは個人などの小規模アプリ
中〜大規模だと相互の関係が分かりづらくバグの温床になるので敬遠される
2021/07/03(土) 23:44:15.93ID:gAHM5nnh
andorid開発でもDataBinding+MVVMだし
flutterでもMVVMで作ってるし
最新のjetpack composeでもMVVM使う予定だけど

ただ、flutterなどデータバインディングない環境は自前でVとVMを接合しないといけないけど

すげぇ便利
2021/07/03(土) 23:46:01.95ID:f2jJT3fK
>MVVM技術は袋小路で他に流用できないし思想も実装によって違う

そもそもその手のアーキティクチャで他に流用できるものなんてどんだけあるかねぇ。
結局フレームワークごとそれぞれの考え方を習得しなきゃsならんように思うが。
2021/07/03(土) 23:55:56.96ID:gAHM5nnh
MVVMは基本、単に責務ごとにMとVとVMに分けて、オブザーバーパターンで状態変化通知して、xamlみたく組み込みのデータバインディングあればなおさらいいてだけじゃん

フレームワークによらず、アプリ全体をMVVMで設計できて
フレームワークによって違うのは主にVとVMと接合部分だけで
むしろ新しく覚えるのがそれだけなんだが?
2021/07/04(日) 00:12:28.55ID:YIai1OGN
MVVMは副作用がわかりにくいので更新順序などで結果が違うなどバグの温床になる
状態を考慮せず実装できるような気がするが実は隠れた状態があり
その状態自体が見えづらく制御しづらい
2021/07/04(日) 00:12:35.78ID:scRQ4YdL
むしろMVVMのV差し替えで別フレームワークに切り替えた実例見たことないけど何かある?
2021/07/04(日) 00:14:23.32ID:YIai1OGN
VとVMの切り替えはセット
2021/07/04(日) 00:20:28.59ID:pwN2nm3/
誰もさすがにコード共有までは言ってない
MVVMというアーキテクチャでUIフレームワーク変わっても同じように設計、実装できるといってるだけ

別にUIフレームワーク変えて一方向のデータフローが好きなら新しくfluxも覚えればいい
357デフォルトの名無しさん
垢版 |
2021/07/04(日) 01:13:39.87ID:arSMsrRy
MSもMAUIではMVU採用したみたいだけど
WinUIはどうすんのかな
358デフォルトの名無しさん
垢版 |
2021/07/04(日) 01:16:05.43ID:arSMsrRy
>>353
そういうこともあるけどナレッジが蓄積されるとバグのパターンと修正ポイントがすぐわかるようになる
大昔イベントドリブンの黎明期にも同じような事が言われて
古参が「ほらやっぱり逐次制御で書かないと分かんなくなる」と騒いだけど
その時も同じように解決されていった
2021/07/04(日) 06:27:35.14ID:pwN2nm3/
たぶんだけどmauiのMVUっても二つに分けてかんがえないと
まず、flutterなど今どきっぽく、UIをxmalではなくコードで宣言的に書けるってことだろ
で、おそらくjetpack composeみたくコードで書いた部分の状態を参照する部分は
オブザーバブルな状態の変更通知の購読、キャンセルはコンパイラサポートでコード自動生成?
flutterはここ自前でやらなきゃいけないので面倒

で、UIでイベントが発生したら、あとはそのイベントをどこに流すかだけでしょ

イベント発生時にViewModelのメソッド呼べばMVVMになるし
他の何かにしてデータの流れを一方向にすればMVUになるし

ただそれだけの話
2021/07/04(日) 06:30:16.24ID:pwN2nm3/
.NET MAUIでUIがxaml使わずにコードで宣言的にUIかけるように
なっても、UIのイベントをどこに流すかでMVVMにもほかのMVホゲホゲの何かにもなるし
ただそれだけ

俺が>>350のjetpack composeでやろうとしてることと同じ

想像だけどね
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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