!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
探検
WPF(.NET, WinUI) GUIプログラミング Part33
1デフォルトの名無しさん (ワッチョイ 835a-A2Rd)
2024/08/20(火) 21:16:46.38ID:mRLJAUv4086デフォルトの名無しさん (オイコラミネオ MM73-sUBN)
2024/09/22(日) 13:15:34.02ID:B3mW+YFfM スレチだけど回答
言語自体の強みは薄い
最近の言語に慣れた人にはやぼったいと感じるだろう
タイピング量は多いし一画面に表示するロジックも少ない
強みはMSがバックアップしていると言うこと
言語自体の強みは薄い
最近の言語に慣れた人にはやぼったいと感じるだろう
タイピング量は多いし一画面に表示するロジックも少ない
強みはMSがバックアップしていると言うこと
87デフォルトの名無しさん (ワッチョイ 9246-odNl)
2024/09/22(日) 13:25:24.95ID:ZjgViWMf0 >>85
無料で最強IDEが使えるのと1つ覚えるだけでなんでも作れるところ
Windowsデスクトップはもちろん、Mac, LinuxデスクトップもAvanonia使えば作れる
ゲームはUnity、Webは.NET Core、Blazor
モバイルも一応作れる
無料で最強IDEが使えるのと1つ覚えるだけでなんでも作れるところ
Windowsデスクトップはもちろん、Mac, LinuxデスクトップもAvanonia使えば作れる
ゲームはUnity、Webは.NET Core、Blazor
モバイルも一応作れる
88デフォルトの名無しさん (ワッチョイ 1f37-L8o3)
2024/09/22(日) 14:45:02.65ID:S8Wcp08P0 VScodeの事?
89デフォルトの名無しさん (ワッチョイ 6250-lUwY)
2024/09/22(日) 14:50:01.54ID:CS0yZoqU0 Visual Studioだろ
90デフォルトの名無しさん (ワッチョイ 1f37-L8o3)
2024/09/22(日) 15:05:49.99ID:S8Wcp08P0 個人の場合はね
仕事でだとまず有料になるな
仕事でだとまず有料になるな
91デフォルトの名無しさん (ワッチョイ 72a4-7hLx)
2024/09/22(日) 15:36:53.15ID:ta0kecSE0 C#の一番の強みは、OS、フレームワーク、IDE、DB、等々全てMSが用意したものを使えばよくて、
雑多な周辺技術に惑わされて時間を無駄にしなくて済むこと
…だったんだけど、最近ではもはやC#の役割としてMSが本気で投資してるのってAzure上でのWeb開発だけになっちゃって、
もはや以前の万能言語の姿は見る影もない状況なんだよね
せっかく幅広いプラットフォームで使えるようになったのに、結局特定のプラットフォームに縛られた言語を脱せずに斜陽期を迎えてしまった
雑多な周辺技術に惑わされて時間を無駄にしなくて済むこと
…だったんだけど、最近ではもはやC#の役割としてMSが本気で投資してるのってAzure上でのWeb開発だけになっちゃって、
もはや以前の万能言語の姿は見る影もない状況なんだよね
せっかく幅広いプラットフォームで使えるようになったのに、結局特定のプラットフォームに縛られた言語を脱せずに斜陽期を迎えてしまった
92デフォルトの名無しさん (ワッチョイ 2701-62zA)
2024/09/22(日) 16:46:23.77ID:PYPfkdWx0 いるよね、こういう極論言い出すやつ
93デフォルトの名無しさん (ワッチョイ d685-LAfk)
2024/09/22(日) 18:07:15.37ID:gYNuxiJB0 C#の用途はWindowsアプリとUnityだよ
他にもできることはたくさんあるけど他の言語に負けないのはこの2つ
他にもできることはたくさんあるけど他の言語に負けないのはこの2つ
Javaの糞性はメンテナンス工程で発覚する物が多いからなぁ
95デフォルトの名無しさん (ワッチョイ 1f37-L8o3)
2024/09/22(日) 18:51:54.26ID:S8Wcp08P0 いつからC#は万能言語になったんだ?
少なくと複雑なUI実装にはまったく向かない
少なくと複雑なUI実装にはまったく向かない
複雑なUIってのがCADとかDAWを超えているならWinAPIから作れや(^^)v
97デフォルトの名無しさん (ワッチョイ 1f57-DO7g)
2024/09/22(日) 19:59:22.99ID:cBjFnGUy0 複雑なUIもC#は他を圧倒してるよ
UnityよりすごいUI作成ツールって他にないだろ
UnityよりすごいUI作成ツールって他にないだろ
98デフォルトの名無しさん (ワッチョイ 1fed-L8o3)
2024/09/22(日) 21:57:29.60ID:S8Wcp08P0 HTML
paint.netがwin32APIを直呼びしている時点でお察し
100デフォルトの名無しさん (ワッチョイ 6250-lUwY)
2024/09/23(月) 01:50:28.88ID:l6I+Mk/q0 paint.netはGPUアクセラレーション使うから仕方がないでは
最新のVer.5.0ではレガシーなC++/CLIのコードをC#に置き換えてるそうだけど
最新のVer.5.0ではレガシーなC++/CLIのコードをC#に置き換えてるそうだけど
101デフォルトの名無しさん (オイコラミネオ MM73-sUBN)
2024/09/23(月) 11:22:29.89ID:EQovMdIGM 非常に何とも言い難いね
自分もC# C++ハイブリッドでやってるけど非常にめんどくさい
でも速度的にメリットがあるので続けるしかない
一般的なコードで等価なコードが等価なバイナリになればいいけど無理だな
自分もC# C++ハイブリッドでやってるけど非常にめんどくさい
でも速度的にメリットがあるので続けるしかない
一般的なコードで等価なコードが等価なバイナリになればいいけど無理だな
102デフォルトの名無しさん (ワッチョイ 620b-lUwY)
2024/09/23(月) 12:37:41.02ID:l6I+Mk/q0 安全寄りの設計思想のC#が無防備なC++に近づくのは限界があるわな
とは言え、最近の.NETは高速化に力入れてて.NET Frameworkと比べると結構速くなった
とは言え、最近の.NETは高速化に力入れてて.NET Frameworkと比べると結構速くなった
103デフォルトの名無しさん (ワッチョイ ef0c-/y0s)
2024/09/23(月) 16:00:40.00ID:m8hlisxc0 C#もSpan<T>とかSIMD叩けるようになったりして久しいし.Netのバージョンを指定できる環境ならそれなりに高速動作するのでは?
104デフォルトの名無しさん (ワッチョイ c232-7cnK)
2024/09/23(月) 16:40:20.64ID:9pAijtDI0 WinUI3がAOT実装したのに話題にならないね
ちょっとした高速化以上に今まで悩まされた難読化が標準になったのにさ
ちょっとした高速化以上に今まで悩まされた難読化が標準になったのにさ
105デフォルトの名無しさん (ワッチョイ d63c-co9J)
2024/09/23(月) 21:25:13.93ID:CEJbx0xL0 進撃の巨人はオワコン
106デフォルトの名無しさん (ワッチョイ a751-4sAz)
2024/09/23(月) 23:44:36.17ID:7O7coEBZ0 winUI3のdatagridでitemsourceに指定してあるObservableCollectionを変更しても画面が更新されない…
セルを更新したときに下のセルが空欄なら同値で埋めたいんだけどObservableCollectionの値は更新されてても画面が変わらないのはどうすればいいんですか?
セルを更新したときに下のセルが空欄なら同値で埋めたいんだけどObservableCollectionの値は更新されてても画面が変わらないのはどうすればいいんですか?
107デフォルトの名無しさん (ワッチョイ ef0c-/y0s)
2024/09/23(月) 23:52:09.53ID:m8hlisxc0 >>106
ObservableCollection<T>のTにもINotifyPropertyChangedの実装が必要
ObservableCollection<T>のTにもINotifyPropertyChangedの実装が必要
108デフォルトの名無しさん (ササクッテロ Sp47-i443)
2024/09/24(火) 09:51:13.74ID:/2yiAcKTp 複雑なUIを妙なスクリプトで対処するなよ
改修大変なんだわ
改修大変なんだわ
109デフォルトの名無しさん (ワッチョイ 2701-lUwY)
2024/09/25(水) 07:29:58.87ID:i/kzvIdf0 WPFはCG以外の各種コントロールもDirect3Dで描いてんの?
110デフォルトの名無しさん (ワッチョイ 62b7-7hLx)
2024/09/25(水) 07:37:44.91ID:Jf+yMjnA0 CGの定義はともかく、今のWindowsはWPFとは無関係にほとんど全てをDirect3Dで描画している
WPFは更にその上で無駄な抽象化レイヤを幾重にも重ねてDirect3DやCPUで描画しているので極めて非効率
WPFは更にその上で無駄な抽象化レイヤを幾重にも重ねてDirect3DやCPUで描画しているので極めて非効率
111デフォルトの名無しさん (ワッチョイ a778-KU+G)
2024/09/25(水) 09:21:52.51ID:p6KYxCK00 WPFはDirect3D9のラッパー
そしてこれがWPFがWindows以外の.NETで提供されない理由
そしてこれがWPFがWindows以外の.NETで提供されない理由
112デフォルトの名無しさん (ワッチョイ 1ffb-L8o3)
2024/09/25(水) 09:49:59.93ID:UXiRrgGj0 むかしsilverLightがあったじゃん
あれはどーーなの?
あれはどーーなの?
113デフォルトの名無しさん (ササクッテロ Sp47-i443)
2024/09/25(水) 10:18:56.91ID:GD37s86yp xamlはスクリプト言語で、C#に変換さるるんじゃなかったっけ?
114デフォルトの名無しさん (ワッチョイ a711-7hLx)
2024/09/25(水) 12:26:08.34ID:alLhlB9H0 されない。等価なバイナリデータに変換された上で、C++で書かれたランタイムがそれをレンダリングする。
ただしXAMLの最古のレガシー実装であるWPFについてはXAML処理系はC++ではなくC#で実装されており、パフォーマンス上のボトルネックとなっていた。
ただしXAMLの最古のレガシー実装であるWPFについてはXAML処理系はC++ではなくC#で実装されており、パフォーマンス上のボトルネックとなっていた。
115sage (アウアウエー Saaa-rNKn)
2024/09/25(水) 15:11:10.64ID:8lhO0QOxa silverLightは息してない
即死
即死
116デフォルトの名無しさん (ワッチョイ 6366-Zm2Y)
2024/09/25(水) 19:01:26.39ID:5Vhwl/nZ0 PRキャラの光ちゃんを助けて
117デフォルトの名無しさん (ワッチョイ 1f64-L8o3)
2024/09/25(水) 19:02:00.62ID:UXiRrgGj0118デフォルトの名無しさん (ワッチョイ 2701-lUwY)
2024/09/25(水) 20:44:46.39ID:i/kzvIdf0 >CGの定義はともかく、今のWindowsはWPFとは無関係にほとんど全てをDirect3Dで描画している
WinFormsも?
テキストボックスもDirect3Dなんだ。なんか面白いな。
WinFormsも?
テキストボックスもDirect3Dなんだ。なんか面白いな。
119デフォルトの名無しさん (ワッチョイ 6320-VZV9)
2024/09/25(水) 22:17:03.73ID:Xu8aizIi0 逆にWindowsでパフォーマンスの良いGUIフレームワークとなると何が候補になるの?
120デフォルトの名無しさん (ワッチョイ 1e28-DO7g)
2024/09/25(水) 22:57:15.89ID:EcYO77Ak0 React
121デフォルトの名無しさん (ワッチョイ a7b0-7hLx)
2024/09/26(木) 08:04:02.48ID:dpiVYcoi0 WebView2やElectronでReactを使うのが最良だろうね。メモリ消費量は多めだが複雑なGUIを極めて高速に描画できる。
WinUI系は迷走しまくってるからお勧めできない。
WinUI系は迷走しまくってるからお勧めできない。
122デフォルトの名無しさん (ワッチョイ 77f4-xlq3)
2024/09/26(木) 08:46:53.86ID:5j0XXcTR0 Reactが高速w
123デフォルトの名無しさん (ササクッテロ Sp47-i443)
2024/09/26(木) 10:21:05.96ID:5M+OW9vAp webベースは却下
124sage (アウアウエー Saaa-rNKn)
2024/09/26(木) 10:44:19.65ID:R5lWYvWFa Tcl/Tk
125デフォルトの名無しさん (ワッチョイ 9232-sUBN)
2024/09/26(木) 10:58:22.15ID:2ZTCXRzi0 >>123
なぜ?
なぜ?
126デフォルトの名無しさん (ラクッペペ MMde-co9J)
2024/09/26(木) 12:03:31.39ID:vw75CWGjM 10年後に動くとは思えない
127デフォルトの名無しさん (ワッチョイ 1f66-L8o3)
2024/09/26(木) 14:30:49.45ID:O7j1NTfr0 WPFはね
128デフォルトの名無しさん (ワッチョイ ef81-/y0s)
2024/09/26(木) 17:10:50.13ID:5GwSM86j0 VB6.0もWinformsもWPFも公式にしろ非公式にしろ10年後も動いてると思うたぶん
ソースがあればビルドもできると思うたぶん
でもElectron上のアプリが10年後も動いてるかと言ったら…
そもそも10年後にビルド環境を用意できるかどうかとなると極めて怪しい
ソースがあればビルドもできると思うたぶん
でもElectron上のアプリが10年後も動いてるかと言ったら…
そもそも10年後にビルド環境を用意できるかどうかとなると極めて怪しい
129デフォルトの名無しさん (ワッチョイ a70c-7hLx)
2024/09/26(木) 19:41:09.21ID:dpiVYcoi0 そりゃ思い込みだな
ReactとElectronのリリースは11年前、最も成功したElectronアプリであるVSCodeもなんと9年前だ
SPA系のモダンWebも実は既に十分に枯れた技術なんだよ
ReactとElectronのリリースは11年前、最も成功したElectronアプリであるVSCodeもなんと9年前だ
SPA系のモダンWebも実は既に十分に枯れた技術なんだよ
130デフォルトの名無しさん (ワッチョイ 2701-lUwY)
2024/09/26(木) 20:32:23.63ID:7pm6jv2b0 WPFでSkia使えばめちゃくちゃ早いが。
131デフォルトの名無しさん (ワッチョイ ef81-/y0s)
2024/09/26(木) 21:39:21.10ID:5GwSM86j0 >>129
いや言ってる意味がわからないならいい
いや言ってる意味がわからないならいい
132デフォルトの名無しさん (ワッチョイ 638b-xlq3)
2024/09/26(木) 21:49:40.33ID:eQdJKLVp0 >>129
11年前のコードがそのまま動くとでも?
11年前のコードがそのまま動くとでも?
133デフォルトの名無しさん (ワッチョイ 2701-lUwY)
2024/09/26(木) 22:47:15.58ID:7pm6jv2b0 たまにVC++6.0使っとるが。
134デフォルトの名無しさん (ワッチョイ de79-sesJ)
2024/09/27(金) 07:49:49.43ID:UPJ9A3G20 VB6.0のように動かすだけならできるだろ
何が極めて怪しいんだ
何が極めて怪しいんだ
135デフォルトの名無しさん (ワッチョイ 7792-4vSm)
2024/09/27(金) 07:55:31.74ID:/K2li3dr0 あと10年経つと文字小さすぎて読めないとかボタン小さすぎて押せないとか言われてると思われる
ViewBoxなんてカレンダーコントロールにしか使ってなかったが、対処療法には使える
ViewBoxなんてカレンダーコントロールにしか使ってなかったが、対処療法には使える
136デフォルトの名無しさん (ワッチョイ de79-sesJ)
2024/09/27(金) 08:05:02.49ID:UPJ9A3G20 VB6.0が動くの正確な意味って解像度とか作成時の状態を踏襲した上でって意味だろうに
なんでそれと同じ条件で語らないんだか
なんでそれと同じ条件で語らないんだか
137デフォルトの名無しさん (ワッチョイ 1fb7-AkOi)
2024/09/27(金) 11:39:56.03ID:4PrSawPF0 >>134
普通に無理やろ
VB6はruntimeが脆弱性対応で更新されてもそのまま動くし既存のOSが生きてる限りサポートされることが約束されてる
Reactのホスト環境はそうはいかない
ホスト環境やReact自身の更新に追随して変更していかないと使えない
環境を凍結して動かすだけならハードに問題ない限り動かせるけどそういう話じゃないだろ?
普通に無理やろ
VB6はruntimeが脆弱性対応で更新されてもそのまま動くし既存のOSが生きてる限りサポートされることが約束されてる
Reactのホスト環境はそうはいかない
ホスト環境やReact自身の更新に追随して変更していかないと使えない
環境を凍結して動かすだけならハードに問題ない限り動かせるけどそういう話じゃないだろ?
138デフォルトの名無しさん (ワッチョイ c6d2-4sAz)
2024/09/27(金) 13:01:50.28ID:2H6QqaiG0 もういいよ react の話は
139デフォルトの名無しさん (ワッチョイ 1f24-L8o3)
2024/09/27(金) 13:22:48.25ID:kLvVhYwY0140デフォルトの名無しさん (ワッチョイ eb9a-i443)
2024/09/27(金) 13:31:54.31ID:H3snXt7I0 >>139
JavaScriptがホスト環境無しには動かない言語なのは知ってる?
JavaScriptがホスト環境無しには動かない言語なのは知ってる?
141デフォルトの名無しさん (ワッチョイ ff77-9JCP)
2024/10/01(火) 19:10:58.55ID:dt9mkk9o0 ElectronはChromiumを丸ごとバンドルするんだから全部塩漬けにするなら10年後でも普通に動くだろう
セキュリティパッチ云々はまあ.NET Framework の方ならわかるが、
5以降ならクライアントアプリは全部バンドル塩漬け前提になってしまってて、
後生大事にセキュリティ更新だけ当て続けるような運用はもはや不可能なんで、
状況は大して変わらんよ
セキュリティパッチ云々はまあ.NET Framework の方ならわかるが、
5以降ならクライアントアプリは全部バンドル塩漬け前提になってしまってて、
後生大事にセキュリティ更新だけ当て続けるような運用はもはや不可能なんで、
状況は大して変わらんよ
142デフォルトの名無しさん (ワッチョイ 6f79-uMZa)
2024/10/01(火) 20:26:18.35ID:J7GPtKrz0 JavaScript界隈は数十年前のDelphiのEXEやランタイム糞でか問題を現在進行形でまだやってるんだよな
ブラウザ側に金玉握られてたらエンジンごと抱え込むしかないよなあ
ほんと頭悪いわ
ブラウザ側に金玉握られてたらエンジンごと抱え込むしかないよなあ
ほんと頭悪いわ
143デフォルトの名無しさん (ワッチョイ b3e6-xL0Q)
2024/10/01(火) 20:27:44.35ID:zBjh5U/o0 htaが神過ぎたな
144デフォルトの名無しさん (ワッチョイ ff77-9JCP)
2024/10/01(火) 20:56:36.69ID:dt9mkk9o0 >>142
.NETも今はCLRから何から全部抱え込むのが基本よ
.NETも今はCLRから何から全部抱え込むのが基本よ
145デフォルトの名無しさん (ワッチョイ 6f10-8K0N)
2024/10/05(土) 19:46:33.97ID:QCQZKClw0 AvalonEditが高速で気に入った
1メガ位のテキストをTextBoxに放り込んだら重くて大変だったけど快適になったわTextBox使えないわ
1メガ位のテキストをTextBoxに放り込んだら重くて大変だったけど快適になったわTextBox使えないわ
146デフォルトの名無しさん (ワッチョイ dfe2-mIju)
2024/10/08(火) 23:02:49.61ID:pQ+vP70p0 今からWPFを勉強する際におすすめの参考書やWeb資料ってある?
147デフォルトの名無しさん (オイコラミネオ MM1f-1ld3)
2024/10/09(水) 00:39:16.52ID:N2h11Yh4M ないよ
148デフォルトの名無しさん (オイコラミネオ MM1f-1ld3)
2024/10/09(水) 00:52:19.76ID:N2h11Yh4M WPFはすでに終わった技術で行き止まりみたいなものでMSもそこを広げていこうとはしてない
新たに入ってこようとする人間もあまりいないので書籍がない
説明資料もない
素の状態では使いづらいのでライブラリを使うけどそのせいで人がばらけてる
それもずっと研究段階で絶対こうしたほうがいいと言う統一した使い方がない
過去のweb資料も時代遅れになっている
新たに入ってこようとする人間もあまりいないので書籍がない
説明資料もない
素の状態では使いづらいのでライブラリを使うけどそのせいで人がばらけてる
それもずっと研究段階で絶対こうしたほうがいいと言う統一した使い方がない
過去のweb資料も時代遅れになっている
149デフォルトの名無しさん (ワッチョイ dfe2-k+rt)
2024/10/09(水) 07:33:01.17ID:+lBoFbSl0 他の言語したことあるならネットの情報だけで学べるやろ
150デフォルトの名無しさん (JP 0H4f-6k2q)
2024/10/09(水) 08:28:12.38ID:ODDYjXGdH WPFと言ってもWinFormsとかわらんし。
XAMLはテキトーにサンプル作ればその内わかる。
(最初はポトペタでもいいと思ってる)
データバインドはWinFormsにはないけどバインドする必要もないし。
https://qiita.com/inf102
qiitaにはそれなりにある。
XAMLはテキトーにサンプル作ればその内わかる。
(最初はポトペタでもいいと思ってる)
データバインドはWinFormsにはないけどバインドする必要もないし。
https://qiita.com/inf102
qiitaにはそれなりにある。
151デフォルトの名無しさん (ワッチョイ 0f02-hOPt)
2024/10/09(水) 08:32:36.58ID:I+S9acjo0 MVVMパターンやデータバインディングにこだわりすぎるとハマる
152デフォルトの名無しさん (ワッチョイ 8b0f-F8I7)
2024/10/09(水) 09:04:02.74ID:LZH5WMbK0 データバインディング、テンプレート等とWPFのMVVMは分けて考えるべき
初学者には絶対無理だけど
初学者には絶対無理だけど
153デフォルトの名無しさん (JP 0H4f-6k2q)
2024/10/09(水) 14:18:46.27ID:ODDYjXGdH 非MVVMのWPFが自分的にはサイコー。
50-60人〜 の大規模での開発なければMVVMの恩恵はない。
50-60人〜 の大規模での開発なければMVVMの恩恵はない。
154デフォルトの名無しさん (ラクッペペ MM86-/24N)
2024/10/09(水) 14:36:12.29ID:GBd6hExlM mとvmの境界が分からない
IPropertyChangedがあればvmになるの?
Commandの中身はvmじゃなくてmに書くべき?
IPropertyChangedがあればvmになるの?
Commandの中身はvmじゃなくてmに書くべき?
155デフォルトの名無しさん (ワッチョイ e785-jyON)
2024/10/09(水) 16:00:23.92ID:7juExw200 難しく考える必要はない。
VMの仕事はMの状態をビューに反映させることと、Mに対して何らかのコマンドを送出すること、それだけ。
コマンドってのは例えば梱包済み商品の発送処理を開始せよ、みたいなやつね。
発送処理開始ボタンが押されるとVM上のイベントハンドラが実行される。
なお、MVVMではこのイベントハンドラをコマンドハンドラなどと呼ぶことがあるが、上記のコマンドと紛らわしいからここではイベントハンドラと呼ぼう。
そして、イベントハンドラは関連するパラメータと共に発送処理クラス(これがMに相当)の処理実行メソッドを呼ぶ。これがコマンドの送出だ。
そしてVMはメソッドの戻り値等を介して「発送処理中」ステータスに更新された受注情報のリストを受け取り、その内容を自らのプロパティに反映する。
結果として、画面上の受注情報のステータスが更新されることになる。
泥臭い話と思うかもしれないが、君の憧れるMVVMやドメイン駆動といったアプリケーションアーキテクチャのキラキラワードの実態は本来こういうものだ。
VMの仕事はMの状態をビューに反映させることと、Mに対して何らかのコマンドを送出すること、それだけ。
コマンドってのは例えば梱包済み商品の発送処理を開始せよ、みたいなやつね。
発送処理開始ボタンが押されるとVM上のイベントハンドラが実行される。
なお、MVVMではこのイベントハンドラをコマンドハンドラなどと呼ぶことがあるが、上記のコマンドと紛らわしいからここではイベントハンドラと呼ぼう。
そして、イベントハンドラは関連するパラメータと共に発送処理クラス(これがMに相当)の処理実行メソッドを呼ぶ。これがコマンドの送出だ。
そしてVMはメソッドの戻り値等を介して「発送処理中」ステータスに更新された受注情報のリストを受け取り、その内容を自らのプロパティに反映する。
結果として、画面上の受注情報のステータスが更新されることになる。
泥臭い話と思うかもしれないが、君の憧れるMVVMやドメイン駆動といったアプリケーションアーキテクチャのキラキラワードの実態は本来こういうものだ。
156デフォルトの名無しさん (ワッチョイ 8b09-F8I7)
2024/10/09(水) 16:26:14.31ID:LZH5WMbK0 別にMVVMを全部コードで書いてもよい
これからわかることは...
これからわかることは...
157デフォルトの名無しさん (ワッチョイ 4e95-ilj5)
2024/10/09(水) 17:57:57.80ID:Fy3THiM40 WinUI3 でバリデーションエラーをTextBox に表示するのってどうやるの?
INotifyDataErrorInfo はあるし
VisualState にもそれっぽいのあるからできると思うんだけど。。
INotifyDataErrorInfo はあるし
VisualState にもそれっぽいのあるからできると思うんだけど。。
158デフォルトの名無しさん (ワッチョイ df24-mIju)
2024/10/09(水) 22:40:18.12ID:EgWGnFmO0 「ViewModelはViewのための橋渡しをするだけで、他のロジックはModelが持つ」と理解したんだけど、例えば以下のような感じ?
数値カウンターアプリを作る場合にCounterState みたいなモデルを用意して、「現在値」というプロパティと、インクリメント/デクリメントするためのメソッドを実装する
ViewModelはそれを画面の表示やボタン動作に紐付けるために、「現在の値」というプロパティと、ボタン押下時のコマンド (内部的にモデルのインクリメント/デクリメントメソッドを呼ぶ) を定義する
……といった具合の実装をMとVMとで行うと理解したんどけど、合ってる?
役割は違うけど、VMとMとで同じプロパティを書く冗長さがある感がする
INotifyPropertyChangedみたいなWPF特有の知識をModelに持たせない、という考えは納得できる
数値カウンターアプリを作る場合にCounterState みたいなモデルを用意して、「現在値」というプロパティと、インクリメント/デクリメントするためのメソッドを実装する
ViewModelはそれを画面の表示やボタン動作に紐付けるために、「現在の値」というプロパティと、ボタン押下時のコマンド (内部的にモデルのインクリメント/デクリメントメソッドを呼ぶ) を定義する
……といった具合の実装をMとVMとで行うと理解したんどけど、合ってる?
役割は違うけど、VMとMとで同じプロパティを書く冗長さがある感がする
INotifyPropertyChangedみたいなWPF特有の知識をModelに持たせない、という考えは納得できる
159デフォルトの名無しさん (オイコラミネオ MM1f-1ld3)
2024/10/09(水) 23:50:39.69ID:dETTV3dXM こういう不毛な話を20年続けてる
160デフォルトの名無しさん (ワッチョイ 8b29-F8I7)
2024/10/10(木) 00:48:19.73ID:Y9XtQuCJ0 ましで
161デフォルトの名無しさん (ラクッペペ MM86-/24N)
2024/10/10(木) 10:13:58.71ID:6yZTy5dIM >>153
変更イベントでTextをintに変換とかいちいちしてるの?
変更イベントでTextをintに変換とかいちいちしてるの?
162デフォルトの名無しさん (ワッチョイ e7a9-jyON)
2024/10/10(木) 11:08:47.70ID:Ulhr2nl60 >>158
それで正しい
面倒ならCounterStateを完全にイミュータブルにして、そのインスタンスを直接プロパティで公開してしまえばいい
それならCounterStateがINotifyPropertyChangedを実装する必要はなくなる
その方がReactなんかのモダンWebアーキテクチャに近い今時の構造になるが、WPFの場合は更新時にモデル全体を差し替えるようなことをすると更新範囲が広くなっちゃうからパフォーマンスは犠牲になる
それで正しい
面倒ならCounterStateを完全にイミュータブルにして、そのインスタンスを直接プロパティで公開してしまえばいい
それならCounterStateがINotifyPropertyChangedを実装する必要はなくなる
その方がReactなんかのモダンWebアーキテクチャに近い今時の構造になるが、WPFの場合は更新時にモデル全体を差し替えるようなことをすると更新範囲が広くなっちゃうからパフォーマンスは犠牲になる
163デフォルトの名無しさん (ワッチョイ c610-6k2q)
2024/10/10(木) 18:21:44.49ID:bR/Ks12r0 PropertyChanged.Fodyも[ObservableProperty]も使ってないって情報古すぎる
今時手書きはないよ
今時手書きはないよ
164デフォルトの名無しさん (スッップ Sdea-jyON)
2024/10/11(金) 01:00:45.44ID:V8K6PYDOd 質問者が問題視しているのはプロパティの重複とWPF特有の要件をMに持ち込むことだから、
それらのツールは何ら本質的な解決にはならないでしょう
それらのツールは何ら本質的な解決にはならないでしょう
165デフォルトの名無しさん (ワッチョイ 4ed2-bvTI)
2024/10/11(金) 07:34:33.39ID:D2KvZw8t0 xamlってWidth={Binding Path=vm.Width×0.9f}
みたいな形でバインディングプロパティを加工出来ないのがつらいよな
Converterあるけどあれだと0.9fとか0.5fとかいろいろなサイズに対応するために複数のコンバーター作らないといけないし
みたいな形でバインディングプロパティを加工出来ないのがつらいよな
Converterあるけどあれだと0.9fとか0.5fとかいろいろなサイズに対応するために複数のコンバーター作らないといけないし
166デフォルトの名無しさん (ワッチョイ 462e-jyON)
2024/10/11(金) 09:21:28.65ID:CgGvZ7IF0 WYSIWYGなGUIビルダーが前提の時代遅れな設計だから仕方ない
Reactなら普通に式書けるが、ああいう手書き前提のアーキテクチャではビジュアルデザイナを実装するのが困難だ
業界がまだRADの幻想に囚われていた時代の遺物よ
Reactなら普通に式書けるが、ああいう手書き前提のアーキテクチャではビジュアルデザイナを実装するのが困難だ
業界がまだRADの幻想に囚われていた時代の遺物よ
167デフォルトの名無しさん (ワッチョイ dbde-OzAm)
2024/10/11(金) 12:38:14.23ID:LpW4FRFf0 >>165
ConverterParameter
ConverterParameter
168デフォルトの名無しさん (ワッチョイ 9bcb-ilj5)
2024/10/11(金) 15:03:42.73ID:aU2XMHpS0 今からデスクトップアプリは何で開発すればよいの?結局、未だにWPF?
169デフォルトの名無しさん (ワッチョイ 8bec-uxRS)
2024/10/11(金) 15:07:40.13ID:oAJpwo350 Tauri
170デフォルトの名無しさん (ワッチョイ 462e-jyON)
2024/10/11(金) 17:27:07.45ID:CgGvZ7IF0 WebベースならElectron、Tauri、WebView2あたり
Webが嫌なら、もはやWin向けではMS謹製となった React Nativeだな
Webが嫌なら、もはやWin向けではMS謹製となった React Nativeだな
171デフォルトの名無しさん (ワッチョイ 4ed2-bvTI)
2024/10/11(金) 17:54:11.45ID:D2KvZw8t0 >>168
簡単な奴ならWinUI3でいいけど業務アプリとかガチめのやつはWPFが安定
簡単な奴ならWinUI3でいいけど業務アプリとかガチめのやつはWPFが安定
172デフォルトの名無しさん (ワッチョイ 4ed2-bvTI)
2024/10/11(金) 17:55:27.19ID:D2KvZw8t0173デフォルトの名無しさん (ワッチョイ dbde-OzAm)
2024/10/11(金) 19:42:24.84ID:LpW4FRFf0 >>172
あとConverterにプロパティを書いておくと、x:Keyと一緒に指定できるよ
あとConverterにプロパティを書いておくと、x:Keyと一緒に指定できるよ
174デフォルトの名無しさん (ワッチョイ df93-mIju)
2024/10/11(金) 22:22:51.77ID:S/LAlpyb0 Web系ならGo製のWailsという選択肢もある
Tauriよりもビルドがだいぶ早い (RustはC++と同様にビルドが長くなりがち)
ただしElectron等はWeb系のフロントエンドの知識 (TypeScriptだったり、フレームワークやCSSだったり) が必要だから、C#に慣れてるならWPFになると思う
自分は試したことないけど、Avaloniaも評判は良さそうに思える
Tauriよりもビルドがだいぶ早い (RustはC++と同様にビルドが長くなりがち)
ただしElectron等はWeb系のフロントエンドの知識 (TypeScriptだったり、フレームワークやCSSだったり) が必要だから、C#に慣れてるならWPFになると思う
自分は試したことないけど、Avaloniaも評判は良さそうに思える
175デフォルトの名無しさん (ワッチョイ 0f02-hOPt)
2024/10/11(金) 22:39:29.66ID:e+urK+rQ0 Webベースで作る時に、見た目をWindows風にするスタイルシートってある?
176デフォルトの名無しさん (ワッチョイ 8bd1-F8I7)
2024/10/11(金) 23:27:08.82ID:TQ53xTM/0177デフォルトの名無しさん (ワッチョイ 8b73-1n8d)
2024/10/11(金) 23:43:34.27ID:TQ53xTM/0178デフォルトの名無しさん (スッップ Sdea-jyON)
2024/10/11(金) 23:45:25.83ID:V8K6PYDOd それこそReact Native使えば?
UWPだからWindows風どころか正真正銘WindowsネイティブUIよ
UWPだからWindows風どころか正真正銘WindowsネイティブUIよ
179デフォルトの名無しさん (ワッチョイ 0655-Tt1K)
2024/10/11(金) 23:49:11.62ID:VNXwNI6H0 >>177
開発止まっとる
開発止まっとる
180デフォルトの名無しさん (ワッチョイ 8bd1-F8I7)
2024/10/12(土) 00:48:02.73ID:Om8PnXVB0 Webなら格好いUIつくれんのに
Windowsの古めかしい方に寄せるのは何故?
Windowsの古めかしい方に寄せるのは何故?
181デフォルトの名無しさん (ワッチョイ 0f02-hOPt)
2024/10/12(土) 01:37:01.36ID:pKFLyiMR0 >>180
客に「違和感がある」とか文句付けられないようにするため
客に「違和感がある」とか文句付けられないようにするため
182デフォルトの名無しさん (ワッチョイ de10-TIP8)
2024/10/12(土) 02:33:02.01ID:2unSxFzS0 Windowsアプリなんだから格好いい悪いじゃなくて他のWindowsアプリと揃えなきゃだめだろう
まあネイティブとWebViewだとテキストボックスの挙動すら違うんだけどな
まあネイティブとWebViewだとテキストボックスの挙動すら違うんだけどな
183デフォルトの名無しさん (ワッチョイ 8bd1-F8I7)
2024/10/12(土) 08:38:27.68ID:Om8PnXVB0184デフォルトの名無しさん (オイコラミネオ MM1f-1ld3)
2024/10/12(土) 08:42:51.92ID:dtNF+rDsM そろそろスマホでもアプリの時代が終わりつつある
些細なことでアプリを入れたくないと言う心情は理解出来る
スマホに100以上アプリ入れてどこに何があるのかもわからないし要らない通知ばかりされる
アプリはもうすぐ死ぬ
些細なことでアプリを入れたくないと言う心情は理解出来る
スマホに100以上アプリ入れてどこに何があるのかもわからないし要らない通知ばかりされる
アプリはもうすぐ死ぬ
185デフォルトの名無しさん (オイコラミネオ MM1f-1ld3)
2024/10/12(土) 08:44:53.19ID:dtNF+rDsM サービスは主要なインフラアプリに統合されて
ツールはツールで残る
ツールはツールで残る
レスを投稿する
ニュース
- 中国通ジャーナリスト「高市首相が反省、撤回必要ない…こういう外交待っていた」「日本のレッドラインを明確に示した」 ★2 [お断り★]
- 高市首相を「こんなバカ」呼ばわりで物議…人気ミュージシャンが声明「感情的で稚拙だった。適切な言い方でなかった」 [muffin★]
- 舛添要一「日本は亡国への道をひた走り」「相対的国力は中国が増大し日本が低下している」 [冬月記者★]
- 芸能界ケンカ最強番付を発表「リングなら岡田准一」 横浜流星&新田真剣佑の名前も 1番強いのは誰か [牛丼★]
- 【物価高対策】「おこめ券を配布しません」大阪府交野の市長が明言「経費率が高い」「今高い米をムリして…」 [1ゲットロボ★]
- たぬかなの“結婚隠し”に「弱者男性ビジネス」の声…本人が異例の対応「支払いの履歴持ってきてくれたら返金するから連絡してや」 [muffin★]
- プーアノンの王たる俺が次の世代の日本の権力者になることは決定してる。お前ら、今のうちにゴマすっておいたほうがいいぞ [805596214]
- イスラム教徒「厳しい戒律を守りながら賢明に生きています」👈ネトウヨがバカにして良い人達じゃなくね?🤔 [152212454]
- Vプリカ便利すぎワロタ
- ( ・᷄ὢ・᷅ )クンクン…
- マクドナルド、ドリンクを神改良!「新しくなったストローのいらないフタでゴクゴク飲めて、ドリンクの見た目も楽しめる!」 [856698234]
- 白人「ジャップさぁ、こんな濃厚でカラダに悪そうな食べ物が「家庭風ラーメン」っておかしいだろ」 [377482965]
