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
2025/01/19(日) 18:34:17.70ID:vo12PcwL0
『ReactはViewに全てのロジックをごった煮で詰め込むから』(・ω・#)?
2025/01/19(日) 18:37:56.04ID:hrsA7ekD0
DataContextは親のを参照するからListViewItemのためにVMは要らない。
具体的には<Image Source="{Binding DataContext.UserIcon, RelativeSource={RelativeSource AncestorType=ListView}}" />という書き方をする。
詳しいことはgithub copilotがサンプルまで示して教えてくれるだろう。
2025/01/19(日) 18:48:26.94ID:9ZaKfB7aM
よく読んでからレスしないとエアアドバイスになってるぞ
2025/01/19(日) 18:59:40.08ID:9ZaKfB7aM
よくある例としては懐かしのダウンローダーみたいなのがあって
ダウンロード一覧で右クリックから停止させたりタスク削除したりで各モデルなどの状態に応じてメニュー表示を切り替えたりとかするの非常に判りにくい

Ancestorで辿れないvisualツリーとかめんどくさい
2025/01/19(日) 21:02:49.77ID:mTeOJF0EM
ListViewItemViewModelが作られるのは単に可視化要件に応じた変換を入れたいだけのことが多いけど、
やりたいことに対して必要なコード量増加や可読性悪化のコストが大きすぎる嫌いがあるよね
一方Reactの場合は極めてstraightforwardだけど、まあ残念な人の言うとおりtestabilityの問題はあるね
直接モデルからJSXに出力しないでViewBag的なものを間に挟むようにすりゃいいだけの話だけどな
2025/01/19(日) 21:26:11.98ID:9ZaKfB7aM
ちなみに文盲とは文字自体読めない人のことなのでこの件は文盲とは違う
505デフォルトの名無しさん (ワッチョイ 53eb-kzTA)
垢版 |
2025/01/19(日) 22:35:23.82ID:4ysBiuwS0
>>497
d:DataContext設定すれば補完も出るしrelativesource使っても補完出るし別にわかりづらいと思ったことないけど
Reactの配列.mapsも別にわかりやすいと思えんけど

なんかVMとModelを混同してない?なんで全てViewModelなの?
2025/01/20(月) 00:08:29.91ID:3NRwBGJyM
誰かが主張しているAIコピペで済まない例だからだよ
507デフォルトの名無しさん (ワッチョイ 53eb-kzTA)
垢版 |
2025/01/20(月) 07:29:13.05ID:aN5Z/OXB0
>>506
俺の作ってるアプリはお前みたいなゴミには作れない高度なアプリだけどそれはモデル側だからな
ゴミアプリで星1000とれるわけないでしょう

ViewModelとUIは表示するだけのシンプルなものだからAIに任せてるってだけ
2025/01/20(月) 12:16:15.76ID:3NRwBGJyM
>>507
>>391
509デフォルトの名無しさん (アウアウエー Sadf-yOY8)
垢版 |
2025/01/22(水) 22:42:55.14ID:+cH9+gpYa
wpfが生産性高いとか嘘だろ
高dpiとかあるから仕方なしに使ってるだけだわ
はるかに簡単なwinforms使いたい・・・
2025/01/22(水) 23:48:16.00ID:Q8cPNFyo0
イベントハンドラーベースでつかえば
WPFでも変わらんと思う。
2025/01/23(木) 00:38:41.47ID:qgBcNJJS0
今ってコントロールは同じものが揃ってるの?
WPFでdatagridviewあったっけ?
2025/01/23(木) 07:42:31.46ID:OK/8qPGh0
WinFormsのHiDPI対応って、そろそろマシになったの?
2025/01/23(木) 09:15:47.12ID:6Qnjvph+M
今時WinFormsやWPFが選択肢になるようなとこなら解像度下げりゃいいだけ
老眼にはその方が喜ばれる
514デフォルトの名無しさん (ワッチョイ 0301-VyPR)
垢版 |
2025/01/23(木) 21:11:40.84ID:Hvrfdhq80
より高性能のDataGridというのがある。5-6倍速い。
ただし難易度高い。
2025/01/23(木) 21:21:42.62ID:DZVX6PPk0
GridViewとListViewは初心者がドハマリして退散してゆく要因なのよね
これは常々思う。もしforeachで書けてExcelみたいに使えてたらWPFの未来は大きく変わってたのに
516デフォルトの名無しさん (ワッチョイ 53eb-kzTA)
垢版 |
2025/01/24(金) 08:56:26.39ID:kzbPjj7p0
何がそんなに難しいのかわからん
ChatGBTに聞いたら大体教えてくれるでしょ
2025/01/24(金) 09:19:24.15ID:cDEF0Ngta
聞かなきゃわかんないほど複雑だからだろ
直感的に書けるようなのだったらよかった
2025/01/24(金) 12:28:17.25ID:/oFMYy+rM
WPFの思想的には本来はListView使えばいいんだけど、
ListViewってWeb的な要件定義やデザインが前提なのでWPFのユーザー層と致命的に相性悪いのよね
当初はWebアプリ置き換えも狙ってたから仕方ないのだけれど、結果的にWPFの普及を妨げた大きな原因の一つ
2025/01/24(金) 12:41:17.38ID:8XH7oyJhM
セルのなか右寄せしたいんだけど……
の回答を見て、なにこれ…(退散)
2025/01/24(金) 18:50:38.66ID:3qxOozUPM
CSSみたいな気軽さはないな
521デフォルトの名無しさん (ワッチョイ 0301-VyPR)
垢版 |
2025/01/25(土) 08:17:57.72ID:S/gVA+8a0
DataGridは何でもできるし、かなり早い。が、難しい上に資料も皆無。
上手く使えれば良いものだけどな。
2025/01/25(土) 15:46:19.47ID:CjfcP04Kd
そういえば数年前にMAUI触った時、DataGrid無いと知ってがっくり。今も無いよね?
仕方なくAvalonia使った
2025/01/27(月) 21:59:48.48ID:HIYsVDfj0
Flutterにもデータグリッドは無い (ただ格子状に要素を並べるだけのものはあるが)
業務系ドットネッターにとっては驚くべきことに、データグリッドはUXの要素としてそれほど一般的なものでも必要不可欠なものでもないのだ
2025/02/02(日) 17:21:33.73ID:BDmjqOlS0
誰も話題にしてないけど、.NET9でFluentテーマ追加されてた
ライトモードとダークモードにも対応
2025/02/02(日) 22:13:47.42ID:al2v3C030
WPFだけでなく、WinFormsでも現代的なことはだいたい何でもできるようにする方針になったらしいな
ダークモード対応とか
2025/02/03(月) 00:52:57.61ID:EJ23/y0s0
もうwinformsでいいじゃん
527デフォルトの名無しさん (ワッチョイ cf30-eN1n)
垢版 |
2025/02/03(月) 10:10:49.13ID:lH5DhCHU0
WinFormsもジェネリック設計にしてくれ
2025/02/03(月) 19:48:48.47ID:0sYu9f470
MicrosoftがWindows上で成功して後世に残せた事ってCOMぐらいだな
後はゴミの山だ
2025/02/04(火) 11:34:02.15ID:Ovs0moOJ0
右クリックだろう
Windowsがオリジナルという訳ではないが、重要なUX要素としてはWindows上で成功してMacが追従した極めて稀なケース
2025/02/04(火) 15:39:07.81ID:DgRhz7KF0
マウスはMacが先
そもそもOSもMacが先だしコンピュータ自体Macのほうが先に作られている

windowsは何もかもMacのマネ
2025/02/04(火) 15:53:52.45ID:OOmuEv1d0
マウスとアプリでPC操作…世界を変えた初代Mac 貫かれたジョブズの美学と革新性 #なぜ話題(Yahoo!ニュース オリジナル 特集)
#Yahooニュース https://news.yahoo.co.jp/articles/b05f947581a8167c57cd854157ea61f71127f902
2025/02/04(火) 15:56:00.05ID:Yb/oB3W3M
STARのパクリ?
2025/02/04(火) 16:42:54.54ID:z2frJFuha
マウスは1ボタンマウスがアップル、2ボタンはmicrosoftってのが言われるけど
歴史的にはもっと古い
comは素晴らしいって言われてるけどごみごみごみマジでごみ
2025/02/04(火) 17:13:11.57ID:xersMY3f0
マウスの発明者はダグラス・エンゲルバートでAppleはそれをパクっただけでしょ
ゼロックスPARCのAltoからGUIをパクって作ったのがLisaやMacintoshだし、元祖はAppleじゃないね
Windowsもパクリ元はAltoでしょ
2025/02/04(火) 17:21:40.36ID:kaUW1BUV0
>>530
ゼロックスの研究所にゲイツが泥棒に入ったところ既にジョブズに盗まれた後だった...
というエピソードは、それなりに知れ渡った笑い話だと思っていたが
2025/02/04(火) 18:06:43.73ID:slGugBvz0
ここで続ける話でも無いけど、Appleって有り物寄せ集めてきれいにパッケージングして製品作るのうまいけど、新規技術を生み出して…ってのは無いよね
2025/02/04(火) 18:14:33.03ID:basEM2MH0
comが素晴らしいは聞いたことないヨ
2025/02/04(火) 18:18:33.21ID:B02g7/WsM
Appleはジョブズが戻る前には面白いネタのような外見のマックをいっぱい作ってたぞ
その頃はパチモン臭かった
2025/02/04(火) 18:39:49.81ID:nTARnMre0
>>537
アプリに他のアプリを埋め込めるなんてなかなかない
リンゴのハイパードックもあまり成功してない
2025/02/04(火) 19:41:26.05ID:mKvZagsLM
隙あらばスレちな昔話
インターネット老人会いい加減にして
2025/02/04(火) 22:49:19.80ID:dM3n6IGK0
>>537
*nix界隈が嫉妬してて似たようなの作ろうとしたら案の定失敗してた
2025/02/05(水) 14:27:50.87ID:WS8tKgVDM
>>539
OLEはWindowsをゴミのように不安定にした黒歴史の立役者だろ
結局後世にも残ってないしな
COMはオブジェクト指向IPC技術としては高く評価されるべきだが、UIのコンポーネント化技術としては大失敗
2025/02/05(水) 14:43:51.39ID:/OFo3DVda
消えたのはセキュリティ上の問題だよ
基本動作がDLLインジェクションでなりたってたから悪用を防ぎようがなかった
新しい技術はその辺が改善されてる
Windowsを不安定にさせる癖はWPFでも継承中
2025/02/05(水) 14:47:03.35ID:y68TMTct0
今でもやってるWord内にExcelの表を挿入するのってOLEでしょ
2025/02/05(水) 16:39:24.50ID:d+ne1xZNM
ActiveXでしょ
2025/02/05(水) 21:20:00.53ID:kvSTlPgX0
>>542
無理やりWPFの話題に戻った感あるけどw
WPFでWindowsを不安定にさせるって何のことだ
2025/02/05(水) 21:51:59.17ID:/OFo3DVda
いくつかあるけど一番危ないのはBitmapImage廻りの処理
Windowsをクラッシュさせる不具合がある
アプリクラッシュぐらいなら笑っておまえが悪いって言えるんだけど、OS落とすのは笑えない
2025/02/06(木) 00:55:30.83ID:FS647Etx0
初耳ですね
ソースよろしく
2025/02/06(木) 01:55:40.45ID:v0GfR9Aoa
githubで検索したら再現コードあるよ
興味あるなら探してくれ
ビルドして24時間実行したらアプリ終了しても本当にWindowsが使えなくなって後悔した
550デフォルトの名無しさん (スププ Sd5f-4ZsV)
垢版 |
2025/02/06(木) 08:35:40.67ID:0EdKF7HOd
ウチの現場でもクラッシュ情報共有されてるわ
551デフォルトの名無しさん (ワッチョイ 8feb-8e3Q)
垢版 |
2025/02/06(木) 09:49:07.36ID:XIAzVrXt0
なんで貼らないの?
てかWPFというより.NETやOS側の問題では?
2025/02/06(木) 12:58:44.47ID:mU8snJfJM
16ビット時代なら
いつからアプリ終了するとリソースが開放されると錯覚していた?
2025/02/06(木) 13:52:27.97ID:lMKQV2rT0
>>543
OLEドキュメントに変わる新しい技術ってなんかあんの
どんなドキュメントでも相互に埋め込めるのはそれなりに夢はあった
2025/02/06(木) 14:45:14.41ID:9UWORq1g0
Wordに埋め込んだPowerPointの図表が全部表示されなくなって埋め込み直す作業やってたチームがあったなぁ

元のpptがもうなくて作図からやり直してたのもあったなぁ

無駄に工数増やせる優れた技術だよなぁw
2025/02/06(木) 15:03:52.62ID:VdVQghET0
埋め込みドキュメントって、Web版やスマホ版officeだとどうなるんだ?
2025/02/06(木) 15:27:14.03ID:2/5eY6oj0
新しくアプリをインストールすると登録されるcomコンポーネントをハックするのがたのしみだったって事がある。

実際にLotus NotesにExcelコンポーネント埋め込んで納品した事あるな
2025/02/08(土) 14:25:36.44ID:1vi9xXrm0
>>555
COM連携はWindows以外の環境では実現不可能なんだ
何十年も前からあるこの程度のことが今はできない
今の技術者はアホしかおらんのよ
2025/02/08(土) 14:30:01.68ID:1vi9xXrm0
こんだけゴミクソのWindowsが生き残ってるのはCOMのおかげと言っていいから
もしWindowsを潰したいならマルチプラットフォームでCOMの車輪の再発明をすればいい
2025/02/08(土) 16:56:05.44ID:apo1n2eB0
WPFおじさんも現実を見れてなかったがCOMおじさんはさらにその上をいってるな
ここまで来るともうどうしようもない
560デフォルトの名無しさん (ワッチョイ 4f01-rY0L)
垢版 |
2025/02/08(土) 20:27:11.99ID:WytOYVUs0
2D はSkiaSharpだろ。
561デフォルトの名無しさん (ワッチョイ d301-X+WN)
垢版 |
2025/02/09(日) 09:24:14.74ID:cS/Ji0GP0
comは何でもできるけどアレは難しいしバグあるとヤバい。
2025/02/09(日) 11:04:11.31ID:pgX8P+m90
.net前は昔VBでcom大量生産しとったな
j++なついわ
2025/02/09(日) 16:03:00.59ID:nVH+xYHa0
COMにもいくつかレイヤーはあって、統一的なABI、実行時型情報、プロセス間通信、OLEオートメーション、コンポーネント埋め込み…とあるうち
大体のOSでもプロセス間通信まではどうとでもなる。LinuxのdBusやMacのAppleScriptではOLEオートメーションのようなこともできる
無いのはコンポーネント埋め込み(OLEドキュメント/ActiveXコントロール)ぐらいでこれはほんと惜しい
2025/02/09(日) 16:34:55.70ID:V2Ler+rt0
あれ?
いまのパワポはエクセル埋め込めんの?
2025/02/09(日) 16:39:55.05ID:eRu8ukU+0
Frescoとかあったやろ
2025/02/11(火) 11:21:04.97ID:xvrepIy10
色をTomatoとかSalmonとか配色に応じて修正してるけどさ、面倒くさいよね
WPFらしさというなら、やはり、Foreground="Red"なのだろうか、青のグラデーション、中央に表示されるMessageBox、そして警告音
古き良き00年代を懐しむデザイン
2025/02/12(水) 23:37:37.53ID:BRhQn8Rr0
>>565
昔調べたわ。結局あれ実現したのか?
2025/02/17(月) 13:32:38.13ID:Xd6W91C/0
observableCollectionもっと使いやすくならないの?何で範囲指定できないのか。
2025/02/17(月) 18:51:26.75ID:rqJoDalTM
拡張メソッドをお使いください
2025/02/17(月) 18:52:59.12ID:9JWN7J4Va
observableみたいな変な仕組み一掃してもらいたい
UIのせいでデータ側に変更強いるのは思想に反してるだろ
2025/02/17(月) 18:57:00.96ID:rqJoDalTM
IListをお使いください
2025/02/22(土) 08:14:35.24ID:WrgPAAGU0
変更があるたびにイミュータブルなVMを毎回作り直すようにしてone-way bindingのみにするだけで遥かにシンプルになるのにね
さすがにDataContextを根本から差し替えるのは非効率すぎるからReactのVirtualDOMのような最適化は必要
VMの差分比較だけでいいんだから技術的にはVirtualDOMなんかよりよほど簡単なはずだけど、そういうフレームワーク無いのかな
2025/02/22(土) 08:20:13.44ID:DUbJV40j0
名前の無いPropertyChanged放てば全部更新されるだろ
2025/02/22(土) 08:28:59.94ID:WrgPAAGU0
>>573
それだと変更のない箇所まで更新対象になるから非効率でしょ
あと、DataContextにイミュータブルなVMを直接設定しちゃうと結局丸ごと差し替えるしかないから、
DataContextのオブジェクトを入れ替えなくていいようにプロキシ的なものを間に挟むケアが必要だね
2025/02/24(月) 10:34:35.00ID:bJj6zTFJ0
observablecollectionにもう少し文句あるけど、項目ごとにいちいちpropertychangeで監視するコードを書かなきゃいけないのなんでよ。項目内の変更は無視してリスト数の変更だけ取りたいことなんてあるか?
2025/02/24(月) 10:51:27.43ID:gnxataoUM
???
2025/02/24(月) 10:54:44.98ID:I+emSd+oa
含まれてる要素ぜんぶ追っかけたら、追っかける必要ない要素まで処理することになるし
その辺効率よくするの難しいから・・・プログラマに丸投げ
2025/02/24(月) 11:09:23.48ID:6Uht1bH5M
それいうたら
どうしてPropertyChangedいるんだまでいかない?
579デフォルトの名無しさん (ワッチョイ 7d22-eWcp)
垢版 |
2025/02/24(月) 12:32:14.90ID:Oa9EYt1R0
>>575
何言ってんだこいつ
リスト自体に変更ないならListでいいよ
2025/02/24(月) 17:07:29.06ID:hohbHZqs0
日本語読めないやつが来た
2025/02/24(月) 23:32:10.57ID:WgCsy9/y0
BindableCollectionならRefresh()で解決
ObservableListでも多分できる知らんけど
2025/03/12(水) 00:20:56.93ID:LNbDBSJi0
TypeScriptをネイティブ実装化するらしいな
https://x.com/ahejlsberg/status/1899468706218160591?s=46

いよいよC#もお役御免かな
2025/03/12(水) 01:02:45.01ID:3dswsZRp0
まじか!
2025/03/12(水) 01:09:23.52ID:opZX9dvW0
あくまでもVSCode上での動作やコンパイラが速くなるだけだぞ
2025/03/12(水) 05:30:43.74ID:3dswsZRp0
TypeScript 6 (JS) で TypeScript 7 (ネイティブ)って言ってるからガチじゃね?
2025/03/12(水) 06:26:26.10ID:YhmDaNsv0
TypeScript「コンパイラ」をgoで書き直したってだけじゃなくて?
2025/03/12(水) 10:18:48.57ID:3dswsZRp0
TypeScript 5系 <-- いまここ
TypeScript 6系 まだJS ・コンパイラは早くなる・ネイティブ化への布石
TypeScript 7系 完全ネイティブ化する

だろ
2025/03/12(水) 10:25:48.02ID:TsbDxVWYa
typescriptをコンパイルしたらexeができるようになるんじゃないのか
2025/03/12(水) 10:26:44.35ID:C1Q/wGhY0
Why go?
https://github.com/microsoft/typescript-go/discussions/411

MicrosoftがGoを選んだというのが興味深いけど、案の定
なぜC#ではないのか?→C# AOTはゴミ
とかコメがいろいろ荒れとる
2025/03/12(水) 10:38:58.55ID:C1Q/wGhY0
>>588
成果物はあくまでjs
2025/03/12(水) 10:41:14.98ID:3dswsZRp0
それはts 6系では?
2025/03/12(水) 11:11:35.51ID:K962K+0d0
>>585
流石に文盲が過ぎる

一連のワークフローにおける省メモリ化と高速化を主な目標として、コンパイラを含む各種ツール群をGoで書き直すプロジェクト「TypeScript 7(native)」が進行中ってニュース
重大な(破壊的な)変更が含まれる前提であり、前身の「TypeScript 6」にて対象となるAPIや機能を非推奨としてマークする計画であるとも
2025/03/12(水) 12:02:47.70ID:3dswsZRp0
>>592
仕事中だし全部読んでねーーからな 笑
2025/03/12(水) 13:19:14.28ID:4px3o80KH
どうでも良いけどアンダース・ヘルスバーグって64才でまだ現場やるんか、超人かよ
2025/03/12(水) 14:32:08.50ID:uoPxhT/UM
TypeScriptはWeb系に受け入れられやすいようにMS色を抑えてるからC#は論外だわな
いくらヘルスバーグがいるといってもtscの開発チームなんて基本的にUnix系でMSスタックには馴染みがない連中だろうから、あえて.NETを選ぶ必要性もない
Rustにしなかったのは移植が面倒だからだろうね
2025/03/12(水) 15:28:11.96ID:YhmDaNsv0
そらvscode動かすのに.NET必須ですってなったら、折角エディタ業界を制覇したのにWindows以外でのシェア全滅するだろ
2025/03/12(水) 18:21:40.34ID:wQgKlRYw0
goがいいのか
2025/03/12(水) 19:28:25.17ID:Pt/zfEko0
tscなんてファイルIOと基本的なテキスト処理と最低限のHTTPサーバーの実装ができりゃいいだけだから、Goだと変な依存関係なしにほぼ標準ライブラリだけで作れるはず
tscみたいにシンプルな要件の中で継続的にロジックだけ手を入れていくような性質のものには適してそう
2025/03/12(水) 19:43:05.00ID:LNbDBSJi0
WhyGo?、ヘルスバーグも書き込んでるじゃん
全然関係無さそうなC#おじがここぞとばかりに集合してて面白い

ヘルスバーグの、他の動画引用の発言含めて興味深かったのは
・我々は関数型スタイルで書いている、TSCコアはクラスがまったく使われていない
→このコードベースを移植するのに最も適したGC対応の言語がGoだったという事らしい
・C#AOTは10年以上更新されておらず、最初からそう設計されたものではない
・でもC#は大事だよ!
→といいつつ、OSSとコミュニティのコラボレーションが最優先、とも。いかにも苦しいな
レスを投稿する

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

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