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/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で業務アプリ作って公開してくれよ
2024/11/18(月) 20:57:21.25ID:i/NsWVfo0
>>339
アシスタントにAIは普通なってきましたよ
因みにC#でもアシストしてくれると思います
2024/11/18(月) 22:12:23.17ID:FOm+z+jk0
>>340
話がずれすぎ
生成AIでノーコードで業務アプリ作れることを証明しろって話
2024/11/18(月) 23:00:55.55ID:x8ZZBVl/0
SilverLightでもええで~♪
2024/11/19(火) 22:16:25.69ID:uTHoNWAl0
>>337
Webやってないのは進歩しない人間と言いたい十年一日のような議論
2024/11/19(火) 22:29:29.89ID:tyB4taC20
個人開発ならまだしも、プロジェクト毎の技術選定において「決定権」を持つのは開発組織の上位層であって、多くの技術者ができることはいわゆる「提案」に留まる
2024/11/20(水) 00:39:09.58ID:aJUirW5V0
日本で下手に提案したら責任もとらされるからね
346デフォルトの名無しさん (ワッチョイ 42c8-YlA6)
垢版 |
2024/11/20(水) 00:47:47.27ID:qdA5YbiO0
ワールドワイドウェブなのにWebブラウザの仕組みの話になっているのは知識がなさすぎる。

いまはWebアプリケーションはSPAだらけで、Webブラウザの基本的なプロトコルでもはや実装していない。
2024/11/20(水) 09:33:22.01ID:4ayYS315M
JavaScriptは基本的な機能じゃないからね
2024/11/20(水) 18:30:28.68ID:wCIcMF/j0
SPAはHTTPで通信しないのか?
2024/11/20(水) 18:54:14.30ID:wXNIaGZt0
>>348
初回アクセス時にjsのソースをローカルにロードしたら以降は全部ローカルで動作する(なのでサーバーアクセスも不要)

初回アクセス時にローカルストレジにキャッシュも出来るので、そうすると起動時のサーバーアクセスすら完全に不要になる

こうなるとWebアプリじゃなくて実質クライアントアプリだね
2024/11/20(水) 19:10:54.66ID:4MjVLHAc0
データをローカルストレージに書けるようになったらそうだね
2024/11/20(水) 20:02:39.41ID:wXNIaGZt0
随分まえからあったような
2024/11/20(水) 21:23:27.93ID:yiKxxO2KM
オンラインとオフラインで動作を変えてる
オンライン接続されたたローカルで作ったデータを鯖に送ってアップデートする

それが最低限の挙動
353デフォルトの名無しさん (ワッチョイ 67b4-LRiR)
垢版 |
2024/11/23(土) 11:39:44.69ID:IBbRne7P0
>>352
軽く言ってるけど、データの整合性とかはどうやって担保してんの?
2024/11/23(土) 12:36:45.49ID:DqkgFhEYM
状況に合わせて適宜ルール決めるだけ
355デフォルトの名無しさん (ワッチョイ 67b4-LRiR)
垢版 |
2024/11/23(土) 15:09:43.26ID:IBbRne7P0
>>354
そのルール作りが大変だろうが。下手なルールだと不整合がバンバン起こる。
それにそんなんが可能な業務も限定的だろが。
2024/11/23(土) 18:45:00.61ID:ZvvW/2Tu0
>>355
恐らく個人的なアプリではないのかな?
2024/11/23(土) 19:19:19.29ID:OFHXNujJM
何にでもケチをつけないと気が済まないんだなとしか…実際に実装されてるし一般に売られている本などでも実装手順は書かれている
大変だろうが。で終わる話ではないんだけど

そもそもがオフラインの状況自体がかなり限定的で
その状態でどの機能を有効にするかを取捨選択するのかは顧客と話し合って仕様決定する
それが仕事の人がいるので決まった仕様に沿って実装するだけなんだよ…
2024/11/23(土) 20:02:29.91ID:nU+3AwL30
「だけ」と軽く流して具体性に欠ける回答だから突っ込みが入って当然だろう
こういうのは何でもケチをつけるには当たらないと思う
2024/11/23(土) 20:31:23.62ID:ilySQ3CD0
具体的に説明しようとしたら、こんなところの数行のやりとりで終わらせられるような話では無かろうよ
で、ここはそれに適切な場なのか?
2024/11/24(日) 09:57:10.11ID:kUToI6JtM
何にでもケチをつけないと気が済まないんだなとしか…
2024/11/24(日) 10:04:49.03ID:kUToI6JtM
オフラインでしか使えない状況でも使いたい場合もあるでしょう
山奥の家で保険の更新とかだと電波なんか届かないでしょう
大規通信模障害でわざわざアポ取ったのに当日キャンセルなんてしないだろう

そういう時にはオフラインで操作して後で更新するだけで終わりだよ

複雑な在庫を奪い合ったり相互に関係するリレーションを破壊するには向いていないがそんな業務を避けるだけで
オフラインで業務報告や日報入力など普通に使えないツールは困るだろ

状況に合わせて適宜ルール決めるだけ
本当にこれだけだろう
2024/11/24(日) 11:15:56.24ID:KIGifJ380
仕様を決める人間と
決められた仕様に沿って実装する人間とでは
物事の見え方が違うという典型例だね

両方やってればもう少し物事を多面的に見れる
2024/11/25(月) 11:51:01.20ID:Xa+HCiLI0
ちょっと違うけどイメージしやすい実例を挙げるとしたら Git とかになる?
fetch だけオンラインでしとけばオフラインでもコミットなどはできる。
オンラインになったときにプッシュする。
データが不整合(コンフリクト)になったときどうするかは、
要件に応じて設計
2024/11/25(月) 11:53:43.97ID:Xa+HCiLI0
OneDrive とか Dropbox とかも
2024/11/25(月) 12:50:11.92ID:ti7eeH670
横からだけど、その例はちょっとズレてるんじゃないかな
そのような汎用的なツールは誰にでも受け入れられるように極力勝手な前提を設けずに小手先のテクニックで頑張る方向
一方で、業務アプリのように特定のユースケースを前提とするなら、汎用的なコンフリクト解決の仕組みとか要らないの
衝突した場合には、ある特定のデータ項目に関しては常に端末側のものを採用したい、といった要件は個別に話聞けば普通に出てくる
仕様決める人はそういうのをクソ真面目に話聞いて仕様に落とし込んでるわけだね
基本的に客は馬鹿なので、必ずしもそういうアプローチが汎用的なアプローチよりも優れている訳ではないのだが、
ともかく上の「仕様を決める」というのはそういうことを言っているのだと思う
2024/11/25(月) 13:10:09.67ID:x60lCKML0
>>363
書けば書くほど素人臭がキツくなるな
「Gitと同じように作るだけじゃないの?」とかリアルで言ってそう
2024/11/25(月) 22:39:22.95ID:Xa+HCiLI0
なんかごめん
368デフォルトの名無しさん (ワッチョイ 46df-cbcK)
垢版 |
2024/12/05(木) 23:50:57.55ID:PwliRaIW0
フェッチはコピーするという意味だと知らないんだろ
2024/12/25(水) 19:20:42.54ID:pacUGaOU0
WinUI3の画面にWindowsTerminal埋め込んだったwww
https://qiita.com/C-Sharp_is_GOD/items/d02a2da67690342eb18f
https://youtu.be/EUKxCwRNE4g?si=THt6u0Izm1QRgl63
WindowsTerminal標準の設定も使えるしタブ機能も使える
2024/12/25(水) 20:22:33.08ID:QTiHuTzJM
君しつこいよ
2024/12/30(月) 19:04:40.52ID:/IGqDrzd0
ChatGPTの公式デスクトップアプリがMac版はネイティブなのにWinではElectronになったのには、当初WinUI試したけどあまりにもクソだった
→実際Winアプリって最近のメジャーどころはMS製含めだいたいWebベースなんだからもうWebでいいじゃんという判断があったそうだ
あまりにもライブラリが未整備だし誰も使ってなくてエンジニアの確保も困難とのこと
一方MacはUIフレームワークの乱立&放置が繰り返されたWinと比較してネイティブアプリ用のUIフレームワーク何使えばいいか極めて明確だし、大部分のコードをiOSと共通化できたそうだ
WPF以降の迷走によって崩壊したWinのUI開発エコシステムの惨状を象徴する良い事例だな
2024/12/30(月) 20:05:33.26ID:sFrwTalz0
だからWebでいいって大昔に結論でてる
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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