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

1デフォルトの名無しさん (ワッチョイ 835a-A2Rd)
垢版 |
2024/08/20(火) 21:16:46.38ID:mRLJAUv40
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

WPF(Windows Presentation Foundation)について語るスレ。

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

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

コードを貼る場合は以下のサイトの利用をお勧め。
https://ideone.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2024/10/17(木) 15:37:14.46ID:l9ooUbGgp
wpfのテンプレート無効にしてまでカスタムしてる変態もいるんだぜ
240デフォルトの名無しさん (ワッチョイ 1f45-oCgE)
垢版 |
2024/10/18(金) 07:43:58.79ID:HW2s8lVK0
日本人は同じ見た目でないと怒り狂う変なやつが多いしな。
2024/10/18(金) 08:48:23.41ID:vAVjBES80
主語がでかい
2024/10/18(金) 12:07:44.52ID:dl90zbNnM
XPのガキっぽいのはヒデーなと思ったけど
8や10の視認性の悪さを体験すると評価が変わった
2024/10/18(金) 12:40:18.78ID:Hbjuz6+L0
昭和賛美はジジイの始まり
244デフォルトの名無しさん (アウアウエー Sa3f-mL/d)
垢版 |
2024/10/18(金) 13:53:32.48ID:wVDH4S6Qa
2000が最強
Meはゴミ
2024/10/19(土) 11:07:39.01ID:SVPedUfi0
NT4でOSとしては完成してたね
VB6.0もコレを対象にしてて、いまだに一部業界で稼動中
これらに比べたらWPFはゴミ
2024/10/20(日) 06:09:31.07ID:gVGzm2Bz0
MVVM作ってみた

めんどくさいな
2024/10/20(日) 12:19:12.29ID:8VDaQYX+0
あんな作法に惑わされ過ぎ
工数が嵩むばかりで何のメリットも無い
2024/10/20(日) 12:29:42.70ID:R7G7/KAA0
ユーザーが入力した値の検証や表示用に変換が必要な場合には向いてる
2024/10/20(日) 12:42:27.88ID:8VDaQYX+0
そんなんMVVMじゃなくても出来るし
一度作ったらそれっきりなんだから
意味が無いんだよ
2024/10/20(日) 12:48:45.65ID:cTHcFhGQ0
MVVM便利だけどな
やっぱ層が分離されてるって気持ちいいよ
2024/10/20(日) 12:50:24.66ID:cTHcFhGQ0
俺はMVVMSを提唱してるけど
Mはもう構造体だけにしてSでMを加工しVMに情報を与える
SはサービスのSね
2024/10/20(日) 13:25:07.93ID:cTHcFhGQ0
TextMateSharpっていうTexMateという一般で広く使われてる規格からシンタックスハイライトを作成するライブラリを使ってWinUIのRichTextBlockにシンタックスハイライトを実装するライブラリ作ったんだがこれってライブラリ化とかした方が良いかな?
プログラムは単純にTextMateSharpのデモをパクってRichTextBlockに合うように呼び出しを変えただけなんだけど
ふつうにGitHubなんかにサンプルとして投稿する感じがいいのかな?
2024/10/20(日) 16:08:17.60ID:gVGzm2Bz0
>>251
なんか、
やりたくで作ってるだけじゃなく、
必要になって作ってるわ

MVVMの

Prismだかは無しで
2024/10/20(日) 16:36:51.61ID:cTHcFhGQ0
>>253
Prismみたいなフレームワーク使わないとめんどくさいだろうなぁ
個人的によく使ってるのはMVVMToolkitだわ
CommunityToolkit.MVVMのNugetで使えるようになる
確かWPFでも使えたはず
2024/10/21(月) 02:42:13.87ID:Yz2aUc2R0
vue.jsとかのMVVM知ってると
WPFのはあまりに馬鹿らしくて泣けてくるぜ
2024/10/21(月) 07:12:35.06ID:bUjh45Ks0
>>255
すまんVue.jsやったことないんだけどどのへんがWPFがクソなの?
2024/10/21(月) 09:43:37.16ID:Yz2aUc2R0
全部って感じ...
他はMVVMにかかる手間なんて一切無い

ので話題にも上がらない感じ
2024/10/21(月) 12:50:49.84ID:bUjh45Ks0
>>257
いやわからん
2024/10/21(月) 13:49:53.99ID:lU6IQ1t4p
そも、VisualStudioって、MVCモデル用だれ?
2024/10/21(月) 14:26:47.05ID:Yz2aUc2R0
>>258
糞って事
2024/10/21(月) 15:24:03.02ID:8GAgNEd+0
>>260
例えば Vue.js の MVVM でここが優れてる!
ってのはどんなのがある?
2024/10/21(月) 17:42:45.47ID:Yz2aUc2R0
>>261
全部
2024/10/21(月) 17:52:15.71ID:8GAgNEd+0
ただ Vue.js 言いたかっただけなんじゃないの?
2024/10/21(月) 17:52:48.65ID:bUjh45Ks0
なにも生産性の無い話題だったな
2024/10/21(月) 17:54:57.66ID:bUjh45Ks0
MVVMToolkitはマジで記述クソ簡単になるからオススメ
一応Microsoft既製っぽい(実際はコミュニティで作ってる)しパフォーマンスもPrismより良いらしい
2024/10/21(月) 18:30:18.81ID:x6+Rbr8S0
>>265
ほう
使ってみますわ

内部の仕組みとかは気にしなくてええの?
不安だわ
2024/10/21(月) 18:30:40.31ID:x6+Rbr8S0
>>266
Prismとか、
使ってええもんかどうか…
2024/10/21(月) 19:05:04.17ID:CKTKnODWM
なんかこのスレにはwebやれよの人が住んでいる
2024/10/21(月) 20:27:59.59ID:Ae8vTo3KM
>>267
Prismは必要以上に肥大化して複雑になっちゃったから手を出さない方が良いと思う

CommunityToolkit.MVVMは後発なだけあってシンプルで分かりやすくて良いよ
これがもっと早くにリリースされてればWPFのMVVM嫌いをここまで量産しなかったかもしれない
2024/10/21(月) 21:53:26.66ID:SQ8zGBXh0
>>266
ソースジェネレーターってやつを使って実装を簡単にしてる
詳しくはこれを参考にされたし
https://qiita.com/MAUIHighSchool/items/ed6a90b81cb849a9148e

機能を詳しく説明してる記事はこちら
https://qiita.com/kk-river/items/d974b02f6c4010433a9e
2024/10/21(月) 23:54:17.80ID:x6+Rbr8S0
>>269
あー
初心者だから大変だわ

とりあえずToolkitでさっきから作り始めたわ
2024/10/21(月) 23:58:40.32ID:x6+Rbr8S0
>>270
とりあえずToolkitでさっきから作り始めたわ

何も無しで自力作ったWPFアプリケーションをToolkitに移植してるけど、
仕組みがよくわからんわ…
2024/10/21(月) 23:59:42.52ID:x6+Rbr8S0
>>272
まあ、
自分で書くソースコードは短くなるな…
2024/10/22(火) 00:03:10.01ID:6OfHYckZ0
>>272
普通こういうのはプロパティの値が変わってもUIに反映されないんだけどINotifyChangedって言うプロパティの値が変わったら自動的にUIに反映させる実装を裏の方でしてるだけ
MVVMToolkit使わないならわざわざその処理を手書きで記入しないといけないところをMVVMToolkitは裏で自動で実装してくれるわけ
2024/10/22(火) 00:05:22.64ID:6OfHYckZ0
その裏で実装されてるのが
>>270この記事の終わりの方にあるアナライザーのところに勝手に作られるコードってわけ
2024/10/22(火) 00:57:03.72ID:2qKbHbOq0
>>274
そうだね

INotifyChangedとか書いてたわ
だいぶ短くはなった
2024/10/22(火) 07:50:00.10ID:5GZLz77w0
>>257
>他はMVVMにかかる手間なんて一切無い
>
>ので話題にも上がらない感じ

WPFについても同じように思っている人はいると思う。一切無いとまで言い切ることはしないが。
自分はそれほど困ってないが、ちょくちょくWPFをディスりに突撃してくる変な人がいるなあ、という感想。
2024/10/22(火) 10:51:02.21ID:ZMkCoWD80
>>277
>>WPFをディスりに突撃してくる変な人

以前WPFに人生投資してた人でお節介ながら警告してくれてんじゃないの?自分もそうだけど

で自分はWPFに関してはMVVMだけなら単純なバインディング機能とコードビハインドだけでもっと簡単にサクッと書けんじゃないのと思ってる

諸悪の根元はMicrosoft Expression Blend系機能に代表的されアンチコードビハインドの原理主義
2024/10/22(火) 11:21:31.87ID:0LHYxdA70
MicrosoftがMVVMの為に言語を歪めてコンパイラで特別扱いする勇気があれば、最初からもっと簡潔に書けていただろう
なぜ素のC#で書かせたのか
2024/10/22(火) 12:19:11.75ID:M9bqFahpM
>>278
そんなのは過去ログやWEBの評判みりゃ分かることだし、要らぬお世話だよ
何度も長々と同じ話してて、邪魔にしかなってない
それに今は以前と比べてかなり簡単に作れるようになってる
2024/10/22(火) 12:24:49.65ID:ue2b+tDRH
>>279

自動プロパティにget set init 以外に bind set付けるだけなのになあ…
2024/10/22(火) 13:02:37.84ID:Ousb9TvG0
考え方が根本的に間違ってんな
2024/10/22(火) 13:17:36.06ID:Tz9XpcgzM
VSエクスプレスでコミュニティツールキットMVVM Ver.8以降を使う方法ってありますか?
2024/10/22(火) 13:38:01.40ID:ZMkCoWD80
てか、何でコードビハインドがダメなのか
2024/10/22(火) 15:18:34.69ID:cRRoaZiP0
テスタビリティが低いから
GUIフレームワーク込みじゃないとテストできなくて自動テストとの相性が悪い

双方向バインド、テスタビリティ、宣言的UIがMVVM三種の神器
2024/10/22(火) 15:20:03.69ID:cRRoaZiP0
どれも必要ないならMVVMは無用の長物
2024/10/22(火) 15:59:14.94ID:WgkSZma6p
流行りなだけで単純なアプリ作るだけなら不用だしなぁ
2024/10/22(火) 16:02:45.40ID:2qKbHbOq0
ViewとModelで、
独立して開発できるって認識で合ってる?

まあ、本格的に企業で開発してみないと実感がないな…
2024/10/22(火) 16:43:45.49ID:klfEOsmR0
モダンUIフレームワーク視点から捉えたMVVMの現在地↓

「SwiftUIでMVVMを採用するのは止めよう」と思い至った理由
https://qiita.com/karamage/items/8a9c76caff187d3eb838
2024/10/22(火) 18:26:22.21ID:z4sRcycH0
>>289
Modelを全部ObservableにすればVMは不要である
と読めた
2024/10/22(火) 18:50:04.41ID:RcS0CrU3M
何年か前にそれを見たような気がするけど呪文が多くて別物だと思った

GUI部分は宣言的にコード書くのは楽なんだよな
書いた通りにしか動かないから
2024/10/22(火) 20:49:09.75ID:xlemdUZK0
書いて無いのに動くプログラム。怖すぎ。
コックリさんか、小人さんが補完するのけ?
2024/10/22(火) 21:02:56.75ID:3twpQX3A0
>>289
本質はただの言葉遊びにしか見えんね
VMを別の言葉で言ってるだけ
2024/10/22(火) 21:04:34.90ID:laQGBhjCp
なんか余計なコード書かなきゃならあかん事が増えて
かえって工数が嵩んでるって思うわ
2024/10/22(火) 21:28:02.57ID:MLYapXOO0
意味不明瞭な変な用語を使いたがるキチガイどものいつもの会話
2024/10/22(火) 21:31:34.30ID:TQEI3sRI0
XAML+双方向バインディング
VS
コンポーネントベース+単方向データフロー

それぞれ切っても切り離せない関係にあると思うが、MVVM云々よりこっちの方が古今の開発体験の差になってるように思う
2024/10/22(火) 22:41:09.89ID:3twpQX3A0
XAMLは単一方向フローでもいけるだろ
当時はXAMLのパフォーマンス改善の方策の一つだったぞ
2024/10/23(水) 08:06:56.79ID:mAhczU3U0
winui3ではx:BindとBindingで違うね
Bindは静的バインディングでモードを1回だけ、単方向、双方向で変えられる
毎回指定しなきゃいけないの面倒だけどね
Bindingは動的バインディング
2024/10/23(水) 13:24:02.81ID:MltH7llV0
マテリアルデザインの5.1って動きます?
4.9までは動いてたんだけども、見つからなくなっちゃった
App.XamlでMaterialDesign3.Defaults.xamlに変更したりしたけども、見つからない
動かすだけなら4.9に戻せばいいだけなんだろうけども
2024/10/23(水) 14:09:56.24ID:uGe/15wp0
動くよ
App.XamlでSecondaryに書き換えるとこもある
301デフォルトの名無しさん (ワッチョイ 3901-nV0L)
垢版 |
2024/10/23(水) 21:28:23.70ID:Qh3MumDi0
MS自体、小規模ならMVVMは使う必要ないと言ってる。
2024/10/23(水) 21:32:44.56ID:wrXNbwSN0
大規模もよ
時間の無駄の倍々ゲームになる
2024/10/23(水) 21:34:08.98ID:RnIdyZfu0
>>301
どこで言ってるの?
304デフォルトの名無しさん (ワッチョイ 8dec-Vw/z)
垢版 |
2024/10/23(水) 22:10:21.89ID:GAB82Ipr0
C#の入門レベルの本だといまだに「WinFormでアプリを作ってみよう」という例が書いてある印象はあるよね
2024/10/23(水) 23:20:22.03ID:ZDG8kcNN0
「UWPでアプリを作ってみよう」よりかは需要のある知識
2024/10/24(木) 00:04:05.62ID:DJyT9FzO0
入門ならWinFormsでええやろ
2024/10/24(木) 00:08:39.76ID:G/0dkLyr0
高DPIも対応したしwinformsは手軽にGUI作れるフレームワークとして今後も有力だと思う
2024/10/24(木) 00:18:06.85ID:y1JNrqGb0
https://github.com/dotnet/winforms/pull/11857
dark modeもやってくるしなw
2024/10/24(木) 06:30:19.71ID:pYfN4f/D0
>>305
たしかにw
2024/10/24(木) 06:58:15.08ID:Fwv7D8fI0
WPFのHiDPI対応は何も考えなくてもできるけど、
WinFormsのHiDPI対応は難しすぎる
311デフォルトの名無しさん (ワッチョイ 3901-nV0L)
垢版 |
2024/10/24(木) 20:09:47.80ID:itfifMct0
WPFに比べてWinFormsは敷居が低い。ま、x:name使えば大差ないけどな。
2024/10/24(木) 20:12:51.73ID:sEc04p0B0
>>311
MVVMとかやんなきゃ
変わんねーーだろ
2024/10/25(金) 23:48:14.35ID:ObV1NlTa0
やだナニコレ・・・素敵なんだが
https://x.com/AvaloniaUI/status/1849818682077458915
2024/10/25(金) 23:49:52.41ID:ObV1NlTa0
これが最新のMacOSで動くというのがシュールすぎるw
315デフォルトの名無しさん (ワッチョイ 8d05-Vw/z)
垢版 |
2024/10/26(土) 00:18:29.58ID:vf+UEX7c0
めちゃくちゃ懐かしいw
2024/10/26(土) 03:27:27.19ID:qze4GRwI0
こういうのでいいんだよこういうので
2024/10/26(土) 10:46:17.67ID:xLXwJUeA0
>>316
良くないだろw
2024/10/26(土) 10:48:21.88ID:+Hh1BO/+0
そいやvscodeのavaloniaの動くようになっていた
VisualStudioでやればいいんだけどさ
2024/10/29(火) 18:16:49.05ID:gJRCsGwu0
AvaloniaStudioとかいうVisualStudio風味のIDEがGitHubにあるな
2024/11/10(日) 19:58:12.81ID:7uuscMCZ0
WinUI3のコントロールの中にWindowsTerminal組み込んで見たの図

https://youtu.be/x1Nn_WWLe-A?si=UpKK07w3lM1sip0q

こいつにディレクトリのツリービューとか追加してダブルクリックでそのアイテムのパスをコピペするようにしたりコンソールアプリのパスを登録したリストビュー作ってその中からアプリを選んだらそのパスがコピペされたりとかになればコンソールもだいぶ使いやすくなるぞ
2024/11/10(日) 22:38:26.57ID:zIwJaoPmH
そんなもん適当なコマンドランチャー使えばいいでしょ
2024/11/11(月) 12:30:45.71ID:2eVgzzz70
>>321
コマンドランチャーってコマンド引数入力できるの?
2024/11/11(月) 17:29:08.35ID:NYpo9nL7M
VzEditorのファイラー便利だったな
2024/11/12(火) 20:27:22.08ID:tFjNYueo0
コンソールの親ウィンドウを設定しただけに見える
ネタなら前にあったLINE風のコンソールのが面白いね
2024/11/12(火) 21:18:59.73ID:WQpvpJyo0
>>324
そうそう、Process. Startしてウィンドウハンドルを取得
DllimportでSetParentしただけ
2024/11/12(火) 21:26:18.82ID:gBESn8sB0
ただWindowsTerminalの設定をそのまま引き継げるしタブも使えるしなかなか便利だ
ツリービューからパス選ぶのもいったんクリップボードにパスを文字列で入れてsendinputでCtrl+Vを入力してるだけ
超お手軽で色々応用が効くといったもの
個人的にターミナル使う時わざわざエクスプローラー起動して~右クリックでパスコピーして~ってやってたからこういうのあれば個人的に助かるってやつを作ってみた
2024/11/12(火) 22:28:26.76ID:Hlpr+M7J0
「ターミナルで開く」
2024/11/17(日) 01:14:13.58ID:voYpa1+g0
最新のc#で作るならどれ?wpf?
329デフォルトの名無しさん (ワッチョイ a30c-Pccd)
垢版 |
2024/11/17(日) 12:24:25.53ID:r72Z/PFa0
windowsだけならWPF
クロスプラットフォームはAvalonia
2024/11/17(日) 13:11:47.15ID:jIxmQ+Br0
Blazor
331デフォルトの名無しさん (ワッチョイ 7b58-nj0J)
垢版 |
2024/11/17(日) 13:14:55.45ID:dobbbVxQ0
UWPやMAUIって現状どうなん?
C#でのGUI開発だとWPFの方が名前が挙がるけど、これは単に移行が進んでないだけ (可能なら移行したいとは思ってる) なのか、WPFの方が安定してるなどメリットがあるのか
2024/11/17(日) 13:24:38.77ID:7IxkAmkp0
UWPは今後も無いな
WinUI3やMAUIは完成度がね…
2024/11/17(日) 20:58:49.33ID:NAlpxgDu0
React
はいもうこの話は結論付いている
MicrosoftですらReactを使っている
2024/11/17(日) 23:26:25.20ID:jIxmQ+Br0
「C# で作るなら」って書いてあるのが読めないの?
335デフォルトの名無しさん (ワッチョイ 7b58-nj0J)
垢版 |
2024/11/17(日) 23:30:20.47ID:dobbbVxQ0
仮にWeb系技術だとしてもなぜReactだけ?
2024/11/17(日) 23:37:44.13ID:MAZWGKFr0
で、
業務アプリケーションは何使われてるの?
2024/11/18(月) 00:14:20.12ID:VW7sHWGL0
業務なら普通にWebよ
と言うと、外部機器の制御などでデスクトップアプリの必須な分野もある、といった反論があるだろうが、
そういう分野の連中って結局何やってもWinFormsから移行しないからMSはもう投資してないよ
2024/11/18(月) 19:27:53.22ID:1mdid6am0
いまどきの業務アプリなんて生成AIでノーコードなんじゃないの
逆にC#の出る幕なんてあるの
2024/11/18(月) 19:48:54.91ID:FOm+z+jk0
>>338
はやく生成AIで業務アプリ作って公開してくれよ
レスを投稿する