WPF(.NET4.x, .NET Core) GUIプログラミング Part25

■ このスレッドは過去ログ倉庫に格納されています
2021/02/05(金) 19:54:23.73ID:I+zADhcc0
Windows Presentation Frameworkについて語るスレ。

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

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

コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
177デフォルトの名無しさん (ワッチョイ cfb5-xG0S)
垢版 |
2021/02/22(月) 00:14:25.74ID:0aX736QQ0
RivetもPrismも正しく動作したことがない
もう一つReactiveなんとかいうのも動作したことがない
「これが使えるとすごく便利!」みたいな書き込みがあるのに使えないからもどかしい
だから面倒でも自分でMVVMを構成しないといけない
これでWPFが嫌いになった
2021/02/22(月) 00:17:10.88ID:EhEkNwIz0
>>170
標準的なページ遷移型のプログラム組むと、VとVMはページが変わるたびに再作成する
そしてModelはDIで永続化されるという仕組みだからVMにロジックを置きにくいんだわ

画面一つのアプリならVMにModelの機能まで作り込むのも一つのやり方では有るな
もっと小さいものならXamlのコードビハインドに全部作り込んでも良い
2021/02/22(月) 00:22:20.48ID:X+4sJ2iC0
>>175
穏健派自称するなら、MVVMいらないとかそういう否定から入るのはやめてくれや。
2021/02/22(月) 00:22:50.54ID:PjsyU8xx0
つか、お前ら経験足りないだけだと思うよ

MVVM本当に楽だよ

テストしやすいとかもあるし、コードの再利用とかもあるけど、そんなことより、新しい設計思想おぼえずに他のフレームワークでも使えるってこと

WPF/UWPでMVVM覚えて、今はandroidアプリとかモバイルアプリしか作ってないが

android/kotlinでもデータバインディング+MVVM
flutterはデータバインディングはないがflutterでもMVVM

全部アプリをMVVMで作ってる

もちろん、MVVMでなく一つの設計パターンがあればいいが
2021/02/22(月) 00:26:27.29ID:dMDj8jk/M
>>174
モデルの状態が更新されることにより、それに依存している他のビューも結果的に更新される
MVVMみたいに、プロパティ単位でこれとこれが依存しててみたいなクソみたいな低レベルな制御はしないの
182デフォルトの名無しさん (ワッチョイ 4301-oPCN)
垢版 |
2021/02/22(月) 00:30:08.66ID:5Ezd+ZoO0
Code behind の逆は Cfront かもしれんね。
2021/02/22(月) 00:30:52.37ID:PjsyU8xx0
MVVMでは基本、ViewModelとModelはその特性上、c#だろうがkotlinだろうが似たように設計できて、

ViewとViewModelの繋ぎ型だけが違う
WPF/UWPならxamlで繋ぐ
androidならデータバインディングあるからそれで繋ぐ
flutterはデータバインディングないけど、ちょっとコード書いて繋ぐ

いちいち、他のモバイルアプリ作るときにどう全体設計しようか悩まなくていい。とりあえず、慣れたMVVMでいけるから楽
2021/02/22(月) 00:44:09.66ID:bntsruVnM
>>176
MからVへのマッピングは宣言的、VからMへは手続き的
そういう意味では1 way bindingも間違いではない
185デフォルトの名無しさん (ワッチョイ 4301-pQAD)
垢版 |
2021/02/22(月) 01:09:28.36ID:WJwuIwe+0
>>179
おいおい否定からはいっとらんぞ。
もともとMVVMがMessengerパターンで一応の完成?を見たあたりまでガチガチで組んでたし、
そもそもBlandをかなり活用してた。
ただコードビハインド使ったら負けみたいな意味不明なゲームには疑問を抱いてたりはしたりして、
その後Rx(Reactive)が出た位から、バインドいらんじゃんみたいになって
だんだんと否定派(穏健派)に転じた歴史だったかもね。
186デフォルトの名無しさん (ワッチョイ cfb5-xG0S)
垢版 |
2021/02/22(月) 01:12:05.70ID:0aX736QQ0
>>181
ああ、そういう仕組みなら大歓迎
そうそう、プロパティ単位でこれとこれが依存しててみたいなクソみたいな低レベルな制御だよね
そんなマイクロマネジメント要る?って感じだよね
2021/02/22(月) 01:56:16.59ID:YVpmaKgG0
結局使いこなせない人が悪口言ってるだけに見えるんなあ
同意できるのはa390-aJe7氏くらいだわ
2021/02/22(月) 11:24:38.55ID:Xis0SD1dM
MVVMは、VMがMのラッパーでありながらVの抽象でもあるという点で単一責任の原則に反してるんだよ
VMのプロパティがVの状態に極めて強くバインドされているために、どうしても状態がMから乖離しやすい
>>186のようなプロパティ同士の依存関係って大抵のケースではMの共通の属性に対してVへのマッピングが複数存在するだけの単純な話なのだけど、
それぞれがV-VM間で2-way-bindingされていることにより問題がとても複雑になる
2021/02/22(月) 12:53:16.06ID:YVpmaKgG0
それはそういう風に組んじゃってるからだろうな
初学者はどっちつかずの実装にしちゃってグチャグチャになる
その辺りガッツリ布教してないMSが悪い
2021/02/22(月) 13:10:46.32ID:ekurkaYAM
人脈が無いのが悪い
2021/02/22(月) 13:58:26.53ID:laRmcntH0
書籍がないのが悪い
MSがまずまともな日本語書籍を出せ
2021/02/22(月) 14:16:47.77ID:xzlcT0ih0
もう今更だよw
10年以上経っていて全く普及していないのだし
windowsアプリをネイティブで作る時代は終わりつつある
簡単なツール作るぐらいならWinFormsで十分だし
この用途ぐらいしか今は無いかなw
2021/02/22(月) 15:34:16.50ID:WJwuIwe+0
>>192
この話しにwinFormsは全く関係ない
2021/02/22(月) 15:39:52.11ID:WJwuIwe+0
あとMVVMが問題あるんじゃなくて
WPF流MVVMが...なだけ。


そりゃそうさ。
Blendを作る為に肥大化しちゃったんだもの。

angularとかknockout.jsは
そんなに酷い事にはなってないんだもの。
2021/02/22(月) 16:14:50.29ID:uZ7ZGJm+d
VMSAWRS
2021/02/22(月) 16:23:06.46ID:YVpmaKgG0
なんでそんなにBlendと絡めたがるんだw
Blendのせいで肥大化したってソースあんの?
アニメーション作るときくらいしか使わんが
2021/02/22(月) 17:51:42.39ID:X+4sJ2iC0
Blend Blend言ってる人の念頭にあるのはBehaviorじゃないかねぇ。
MVVMそのものとは直接関係ないし必要な人だけ使えればいい代物だが。
2021/02/22(月) 17:55:29.69ID:63w9RhYUa
簡単なツール作るだけならWinFormsで十分っていうのはまぁそうだろうな
直感的だし覚えることも少ない
WPFに慣れればWinFormsを使う気にはならないが
199デフォルトの名無しさん (ワッチョイ 4301-pQAD)
垢版 |
2021/02/22(月) 18:14:48.06ID:WJwuIwe+0
>>197
無論、それも含まれるのだが、
ViewとViewModelの結合を無理やりXAMLだけでやらせるという精神性だよ。
そこになんの意味があるのだ?
2021/02/22(月) 19:23:08.58ID:X+4sJ2iC0
bindingはいずれにしろどこかに記述する必要があるだろうが「無理やりXAMLだけでやらせる」って
具体的にどういうことを指しているのかがわからんな。
しかも「精神性」ときた。
201デフォルトの名無しさん (ラクッペペ MM7f-0TpN)
垢版 |
2021/02/22(月) 19:29:48.55ID:rk3Z26pVM
バリデーションはどの方法がナウいの?
2021/02/22(月) 19:52:00.06ID:WyUl8J7r0
奴隷仕事する安いWeb屋以外には全く不要と理解した
203デフォルトの名無しさん (ワッチョイ 4301-AkpG)
垢版 |
2021/02/22(月) 23:57:34.11ID:nYWX3IgW0
>>149
それだったらネイティブC系でないと。
全然違うぞ。
204デフォルトの名無しさん (ワッチョイ 4301-AkpG)
垢版 |
2021/02/23(火) 06:13:55.47ID:sv/Yo7HN0
ツール位ならWinFormで十分ってあるけどWinForm以外でみんなはどんだけスゴイ複雑なアプリ作ってんだ?
WinFromじゃダメなアプリって一体。。
2021/02/23(火) 06:18:25.78ID:IRMSQgrY0
速度優先で描画って話になるとwinformじゃ
制約多過ぎなので、WIN32Apiで書くでしょ
2021/02/23(火) 06:23:09.62ID:IRMSQgrY0
aseprite はskia を使っていたな
https://www.aseprite.org/
2021/02/23(火) 08:30:14.84ID:cn9M2RK90
業務アプリこそ見栄え要らんのに
208デフォルトの名無しさん (ワッチョイ 4301-AkpG)
垢版 |
2021/02/23(火) 09:30:28.30ID:sv/Yo7HN0
>>205
.NET以外のCなら良い。MFCとか。
2021/02/23(火) 09:33:59.34ID:2jti1hD20
ここでツールって言ってるのは自分しか使わないようなツールのことだろ?
210デフォルトの名無しさん (ワッチョイ 4301-AkpG)
垢版 |
2021/02/23(火) 09:39:55.03ID:sv/Yo7HN0
>209
職場で30万ステップはあるだろう、電子診療録があるけどな。
1000人位が使ってる。
2021/02/23(火) 10:12:16.12ID:OuCytsjB0
WPFが流行らなかったのは生産性が低いから
2021/02/23(火) 10:24:07.60ID:HK+h3r9h0
いや、生産性は高いよ
学習コストが高いだけで
2021/02/23(火) 10:31:53.70ID:YnrsFwIJ0
WINUIで少しは増えるのかな
214デフォルトの名無しさん (ワッチョイ 4301-AkpG)
垢版 |
2021/02/23(火) 10:41:33.34ID:sv/Yo7HN0
>>212
学習コストも重要。
2021/02/23(火) 11:03:52.95ID:ysYwoRGz0
winformもwpfも絵文字を色つきで表示できないのがな…
業務アプリでも要望あるんよね
2021/02/23(火) 11:40:22.97ID:qVJDFfo90
絵文字って〒とか?
リッチテキストボックスなら出来るんでは?
2021/02/23(火) 11:43:26.98ID:lNyBX+Rq0
>>216
それは単なる記号で別物
https://ja.wikipedia.org/wiki/Unicode%E3%81%AEEmoji%E3%81%AE%E4%B8%80%E8%A6%A7
2021/02/23(火) 11:48:58.01ID:qVJDFfo90
それもフォントにあれば普通に表示されるやん
2021/02/23(火) 11:55:44.20ID:lNyBX+Rq0
>>218
表示はされるけど、色がモノクロになってない?
2021/02/23(火) 12:11:41.49ID:j4L8+y6t0
試してないけどこれ?TextBlock.IsColorFontEnabled
2021/02/23(火) 12:13:55.14ID:j4L8+y6t0
ああ、もしかしてUWPでしか使えないのか。
2021/02/23(火) 15:45:45.49ID:HK+h3r9h0
そういやMicrosoft.Toolkit.MvvmってのがPreview4まで来ていて
WindowsCommunityToolkit7.0の機能の一部として恐らく来月にリリースされそうだが
これ今後使われるのかな?

UWPだけじゃなくてWPFでもそのまま使えるものらしい
2021/02/23(火) 15:49:45.69ID:3REzuazL0
wpfでGPU支援ありってのが売りになってるけど
windows.formsはGPU支援無いの?
2021/02/23(火) 15:55:21.29ID:j4L8+y6t0
FormsがベースにしているGDI+はGPU対応ができないといって捨てられた。
225デフォルトの名無しさん (ワッチョイ 4301-AkpG)
垢版 |
2021/02/23(火) 15:56:23.67ID:sv/Yo7HN0
テキストボックス コンボボックスなどのコントロールでGDIもGDCもないわ。
2021/02/23(火) 17:43:47.48ID:1BXE0YOc0
WinFormsマンはMVVMなんて完全無視してコードビハインドべったりでWPFやればいいんだよ
227デフォルトの名無しさん (ワッチョイ 4301-AkpG)
垢版 |
2021/02/23(火) 18:52:05.60ID:sv/Yo7HN0
仕様満たしてれば万事OK
2021/02/23(火) 21:57:50.52ID:6k3lOGV+r
>>226
誰かがWPFで
@MVVMパターン
AMVVMを使わないパターン
の実装サンプル作れば良いかもね。
2021/02/23(火) 23:46:28.80ID:ysYwoRGz0
ネット上にいくらでも転がってる
同じ課題を両方で、とかいう面倒な意味なら
対価と引き換えに作ってくれる人ならいくらでもいるんじゃね
俺とか
2021/02/23(火) 23:51:13.97ID:+jCQH6bJ0
>>229
対比させたやつある?
2021/02/24(水) 00:37:24.16ID:P6vbuKTS0
>>230
https://github.com/PrismLibrary/Prism-Samples-Wpf
prismのサンプルだけどコレを全部読んだら大体理解できる

https://prismlibrary.com/docs/
ドキュメントはコレでいい

ここらへんのソフトを見てMVVM使わなかったらどうなるか自分で作りゃいいよ
232デフォルトの名無しさん (ワッチョイ 4301-pQAD)
垢版 |
2021/02/24(水) 02:24:29.21ID:i0V8pFic0
>>231
なんでここでprismを持ち出すん?
2021/02/24(水) 02:48:17.37ID:edAGB3A30
たまに出没するrubyの人を思い出した
2021/02/24(水) 08:36:17.42ID:MwOs66OZa
>>226
柔軟なレイアウトの恩恵は受けられるんだから、これがformとwpfのいいとこ取りな方法だと思う
2021/02/24(水) 09:27:19.96ID:y8KT0drJ0
昔ながらのアプリならViewとModelの内容をリアルタイムに一致させとく要求なんてないんだから
ViewとViewModelだけ使うのもアリ
2021/02/24(水) 09:45:18.98ID:xKeK0ZzLM
>>235
それはMを勘違いしてるのでは
Mは直接的にドメインモデルやデータモデルではなく、UI固有の状態をモデル化したものであってもいい
VMとの違いは、VMはVと蜜にバインディングされることを前提にインスタンスやプロパティがVと一対一で対応する点だ
2021/02/24(水) 09:56:48.75ID:P6vbuKTS0
>>232
prism使わずにmvvmは考えられないのだが、あなたは全部自前で実装しているのかな?
prism以外なら何を使っているのか教えてほしい

INotifyPropertyChangedやICommandの実装やViewModelLocaterは最低限必要でしょ
238デフォルトの名無しさん (ワッチョイ 4301-pQAD)
垢版 |
2021/02/24(水) 10:51:50.94ID:i0V8pFic0
ほらでた、prism 持ち出すクソ信者!

クソの上にクソを積み重ねたクソの塔 prism。

>> INotifyPropertyChangedやICommandの実装
それぐらい自前で書けや。

>> ViewModelLocaterは最低限必要
そんなもんいらん。

まあもう、大昔にデスクトップアプリは捨てて
クロスプラットフォームに完全移行したんで、
どうでもよいけど。
2021/02/24(水) 12:12:17.32ID:Pl6UTByFM
よく判らないのでword star か
GOFで説明してくれ
2021/02/24(水) 12:18:41.45ID:w3lyQUlm0
>>237
INotifyPropertyChangedは簡単な自作クラスで、後はReactivePropertyだな
241デフォルトの名無しさん (ワッチョイ 4301-pQAD)
垢版 |
2021/02/24(水) 12:38:29.63ID:i0V8pFic0
>>240
INotifyPropertyChangedは2、30行位の共通コード書いて、
ViewModel内の個々の定義は1行で行けた記憶あり。

>>ReactiveProperty
だね。UIこそReactiveだ。

MVVMなんぞ使わずとも、
コードビハインドでRxフル活用すればかなりイケた実装が出来る気がする。
242デフォルトの名無しさん (ワッチョイ 4301-pQAD)
垢版 |
2021/02/24(水) 12:42:10.21ID:i0V8pFic0
最近のデザインパターンってあんま聞かなくなったけど、
デザインパターンって勉強してんの?
これこそ基本と思うんだけど。
243デフォルトの名無しさん (ワッチョイ 4301-pQAD)
垢版 |
2021/02/24(水) 12:47:49.12ID:/ijFpzJL0
あわしろ氏はデザパタはオワコンと言ってるけどな。
2021/02/24(水) 12:48:04.29ID:2F6/NL6dr
>>236
めんどくせー
WinFormsを前提とした話なんだから
そんな厳密な話でもないやん
245デフォルトの名無しさん (ワッチョイ 4301-pQAD)
垢版 |
2021/02/24(水) 13:15:16.04ID:i0V8pFic0
>>243
あわしろ氏??ナニモンだ?
246デフォルトの名無しさん (ワッチョイ 4301-pQAD)
垢版 |
2021/02/24(水) 13:47:05.43ID:/ijFpzJL0
Linuxを作った男を知らんのか。
247デフォルトの名無しさん (ワッチョイ 4301-pQAD)
垢版 |
2021/02/24(水) 14:10:33.58ID:i0V8pFic0
リーナス以外はようしらんわ。
248デフォルトの名無しさん (ワッチョイ 4301-pQAD)
垢版 |
2021/02/24(水) 14:16:42.54ID:i0V8pFic0
自分の主戦場でも、状態管理ライブラリの流行があって、
量産されたクソコードが有難たがられる風潮になっちゃんてるんだけど、
それってデザインパターン的な実装能力の欠如から来るんじゃないかと思っとる次第。
249デフォルトの名無しさん (ワッチョイ 4301-pQAD)
垢版 |
2021/02/24(水) 14:21:05.91ID:/ijFpzJL0
Microsoft MVP for WSLであり、KENTAの師匠でもあるぞ。
業界に疎いのか?
250デフォルトの名無しさん (ワッチョイ cfb5-xG0S)
垢版 |
2021/02/24(水) 14:54:36.06ID:KW+DlOc20
>>243
もっと詳しく!
まず、オワコンの理由は?
あと、デザインパターンがオワコンなら、それに代わる代替手段はあるの?
251デフォルトの名無しさん (ワッチョイ 4301-pQAD)
垢版 |
2021/02/24(水) 15:28:00.61ID:i0V8pFic0
>>249
ラベルされたものを信仰するような??では無いので。
252デフォルトの名無しさん (ラクッペペ MM7f-0TpN)
垢版 |
2021/02/24(水) 15:29:59.28ID:eSBaIty+M
デザインパティーン3を使おう!
2021/02/24(水) 15:45:06.00ID:MORDEgXk0
>>251
そいつLinux板も荒らしまわってるやつだから、相手しちゃダメ
254デフォルトの名無しさん (ワッチョイ 4301-pQAD)
垢版 |
2021/02/24(水) 15:48:08.12ID:i0V8pFic0
>>253
デザインパターンの意味も分からんSEが増えとるっつう事だね。

ところで Blazor desktop つうのが出たんだが、ますます混沌としてきた...
https://www.publickey1.jp/blog/21/net_6xamarinuiblazorapple_m1.html
2021/02/24(水) 15:55:27.55ID:w3lyQUlm0
派手に自作自演失敗してるな
>>253
それも自作自演
256デフォルトの名無しさん (ワッチョイ 4301-pQAD)
垢版 |
2021/02/24(水) 16:41:30.06ID:/ijFpzJL0
KENTAのサロンで基本を勉強したら?
なぜデザパタがダメなのか理解できるようになる。
257デフォルトの名無しさん (ワッチョイ 4301-pQAD)
垢版 |
2021/02/24(水) 16:47:16.45ID:i0V8pFic0
>>253
今気づいた!あの頭悪い??ね。(>_<)!
258デフォルトの名無しさん (ワッチョイ 4301-pQAD)
垢版 |
2021/02/24(水) 16:51:26.18ID:/ijFpzJL0
>>251
ラベルされたもの == デザパタ。
2021/02/24(水) 17:39:48.74ID:IHVQaYD9d
>>256
ここ数年でプログラミング初心者を食い物にする商売めっちゃ増えたよな
260デフォルトの名無しさん (ワッチョイ 4301-pQAD)
垢版 |
2021/02/24(水) 17:43:32.23ID:/ijFpzJL0
KENTAは、あわしろ氏の一番弟子で実力は折り紙付き。
2021/02/24(水) 18:12:04.22ID:Pl6UTByFM
MicrosoftのUMPCの中の人?
262デフォルトの名無しさん (ワッチョイ ff6a-W5tZ)
垢版 |
2021/02/24(水) 19:40:51.49ID:A+DDCqAF0
>>230
2行目以降も読んでよw
2021/02/24(水) 19:59:29.97ID:OnRnLZtnM
ちょまどの同類か
チンポでもしゃぶってろアホ
2021/02/24(水) 21:44:56.84ID:YN61hHjA0
KENTA のサロンは、Ruby on Rails だろ

Rails は設定より規約。
クラス名・ファイル名の書き方が決まっていて、デザインパターンも自動的に決まる

Railsの規約に従うことを「レールに乗る」と言う

Railsは10年以上、デザインパターンの議論をしてるから、
どう書くべきか、すべて決まっている
265デフォルトの名無しさん (ワッチョイ 4301-pQAD)
垢版 |
2021/02/24(水) 22:46:30.75ID:/ijFpzJL0
KENTAはRubyだけじゃない。
何でもできる雑食系エンジニア。
業界の人脈も広い。
サロンに入れば、あわしろ氏と個人的に会食できるかも?
266デフォルトの名無しさん (ワッチョイ 4301-WTU+)
垢版 |
2021/02/24(水) 23:26:42.85ID:M6Q15P3Y0
>>204
返信なし。
大したもの作ってないのね。
2021/02/25(木) 02:38:43.29ID:v3k9zwrF0
>>265
それは素晴らしい。CenterNetを超える検出器を
作って公開してくれまいか
2021/02/25(木) 18:13:25.31ID:CQ8Y1Ofd0
ボタンの外観を画像で差し替えようと思ってるんだけどResourcesフォルダって作成場所指定できないのね
xamlファイルから見て親ディレクトリにResourcesが作成されるから別の方法を考えないと
2021/02/26(金) 02:01:34.30ID:fvpzeB6W0
WinFormsのSplitterみたいに、マウスで位置変更可能な可能なWinUI3版スプリッターを教えてください。
SplitViewがそれっぽいけど、マウスで変更出来ません。
2021/02/26(金) 06:49:43.34ID:3FBinh620
https://github.com/windows-toolkit/WindowsCommunityToolkit
これにGridSplitterあったんじゃね
WinUI 3に8で対応だって
2021/02/26(金) 20:21:23.45ID:PACAM6K30
>>270
Windows Community Toolkit 8.0.0 Preview 4 で正常に動きました!ありがとうございます!
2021/03/08(月) 17:23:51.31ID:Bj97fCLXd
WinUI3なにこれ、ビルドすると実行にこんなにファイルがわらわら必要なの?
流行るとは思えないなぁ。
273デフォルトの名無しさん (ワッチョイ 0fb5-FlFm)
垢版 |
2021/03/08(月) 19:52:55.69ID:747P4xwg0
WinUI3ってどんな感じで始めるの?
NuGetから何か落とすの?
274デフォルトの名無しさん (ワッチョイ 0fb5-FlFm)
垢版 |
2021/03/08(月) 19:54:46.70ID:747P4xwg0
WinFormsは結局使い続けられてるけど
WPFって(UWPではない)次のGUI開発ライブラリが出た途端に
誰も使わなくなるんかな?
おまいらどうよ?
2021/03/08(月) 20:03:06.93ID:DDkttHUo0
>>273
WinUI 3 Preview 4 をインストールする
https://docs.microsoft.com/ja-jp/windows/apps/winui/winui3/#install-winui-3-preview-4
2021/03/08(月) 20:29:46.96ID:qZcgtbhM0
UWPはサンドボックス環境での実行とかあるから必要として、新規ではWPFの代わりがWinUIになるんじゃね
C++向けにもMFCの代わりにWinUI
ってもWinUIはまだタッチ寄りのUIだけど
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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