X



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

■ このスレッドは過去ログ倉庫に格納されています
2022/01/20(木) 05:40:40.10ID:+TySdXxT
WPF(Windows Presentation Framework)について語るスレ。

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

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

コードを貼る場合は以下のサイトの利用をお勧め。
https://ideone.com/
2022/02/16(水) 14:28:20.83ID:prElW7Wj
https://github.com/microsoft/microsoft-ui-xaml/issues/6360

これうちでも発生してるわ
パッケージ名を、初期値のぐちゃぐちゃなやつに戻したらきちんと動いた
パッケージ表示名だけ変えておけば問題ない?ユーザーから見える部分で影響がなければいいんだけど
2022/02/16(水) 14:46:38.19ID:9x9DexoX
>>338
うん、だから今は設定反映の話題だよ。
2022/02/16(水) 21:11:28.96ID:raZgx3Yl
違うんじゃね?
VとVMの対話の件だろ
結局メッセンジャーパターンで解決されたけど

MVVM界隈でもWPFだけだぞ
とにかくアホらしい
2022/02/16(水) 21:54:37.14ID:GuByYKJZ
MVVMで真っ当に実装する必要があるならダイアログ今はサービス使ってるわ
適当アプリならVMからShowDialogや!
2022/02/16(水) 22:33:25.97ID:raZgx3Yl
MVVMで御高説をのたまってるやつらも、
ダイアログだけVMがVの参照持ってるの多いと思われ

アホ過ぎ
2022/02/16(水) 22:56:04.26ID:GuByYKJZ
ケースバイケースだろ
2022/02/16(水) 22:56:34.84ID:k9K3LRO9
WinUI3のContentDialogは極自然にVMから操作可能ではある
但し厄介なバグがあるんだよな
2022/02/16(水) 23:50:00.59ID:9J2Avx3b
そういうところが最近のMSらしい
2022/02/17(木) 00:27:46.74ID:mxZsFD+m
Windowsのシステムで設定したテーマをそのまま使うと問題ないけど
RequestedThemeでアプリ独自のテーマに変更するとContentDialogの表示がおかしくなる
黒バックに黒文字になったり白バックに白文字になったり

しかしContentDialogをページに埋め込みじゃなくて独立させて作るとと何故かうまく動く
2022/02/17(木) 08:30:25.43ID:RRNNLUq7
>>341
いや、違くない。最初にMVVMとは関係ないと断っている。
だから実装ではなくUXの話。
ちなみにメッセンジャーパターンはアンチパターンだから使うやつは馬鹿。
2022/02/17(木) 08:57:01.84ID:j4TiyS3p
>>348
どうするのが正解?
2022/02/17(木) 13:33:28.92ID:D3Kp3a02
>>348
俺がWPFまだやってた頃、
VとVMの通信の方式でかなり揉めてて
メッセンジャーパターンの確立で
やっとWPF流MVVMのすべての問題が解決!
皆が\(^o^)/ってなってたんだけど
その後なんか動きがあったのかい?

自分はこの頃WPFにサヨナラして
SPAに全振りする事になったんだけど
2022/02/17(木) 13:34:33.35ID:D3Kp3a02
>>VとVMの通信
これ双方向の話ね
2022/02/17(木) 14:37:01.90ID:YUSmIxV4
WinUI3、ちょくちょくデザイナが表示されないってバグ報告あがってて笑った。
まさかデザイナが無いなんて夢にも思わないよな。正式版なのに。
2022/02/17(木) 14:38:43.90ID:/0nSI8jp
WPFに歴史的価値があるとすれば、それは
MVVMは保守性と開発効率を低下させると実証したこと。
354デフォルトの名無しさん
垢版 |
2022/02/18(金) 13:11:59.42ID:J8+KRXGO
既存のFormアプリにWPFのWindowを表示するため
WPFカスタムコントールライブラリのプロジェクトを追加して
WPFのWindowがダイアログで開けたのですが、なぜかFormアプリの
UIコンポーネントが全て小さくなります。
小さくならない方法はありますでしょうか?
2022/02/18(金) 14:23:41.28ID:94FodQmT
>>350
VでVの要素を操作するサービスクラスを生成してVMにインジェクションするのが一番楽だが
詳細を噛み砕いて説明するのは骨が折れるから誰かやってくれ
2022/02/18(金) 17:40:21.19ID:FPiQltqk
>>355
WPF メッセンジャー MVVMでググると上位は大体10年前ぐらいの記事が出てきます
でも多分今でもメッセンジャー使ってる人はいるんだと思う

○○の寄せ集めのQiitaですら代わりの技術の紹介がない
2022/02/18(金) 17:43:40.08ID:NqXxszTV
WPFがMVVMがクソだと証明したからな。
2022/02/18(金) 17:47:22.30ID:FPiQltqk
他のMVVMではこんな話で盛り上がってないもんな
データの射影ぐらいの扱いなのになんでWPFじゃ状態遷移とかその他もろもろ全部MVVMでやらなければならないんだ
どうせ再利用なんかしないのに
2022/02/18(金) 17:54:24.26ID:Sc3FeDVQ
>>358
中途半端な初心者が「MVVMでやらないとバカにされる!」
って強迫観念に囚われてるか、意味も分からずこうやって作るものって思考停止してるか、両方か
2022/02/18(金) 17:58:06.73ID:FPiQltqk
>>359
いやいや
熟練と言うか知り尽くしたほうが危うい
2022/02/18(金) 18:26:19.18ID:TADg4zOp
メッセンジャーパターンまで付き合って
辞められて良かったわーー
苦労しても固有のロジックすぎて
他で全く役にたたないからな
2022/02/18(金) 18:27:26.73ID:TADg4zOp
>>359
当時から、
MVVM至上主義って言われてたよな
2022/02/18(金) 18:45:06.76ID:T3Y33b1k
MVVM使わないで、例えばconfigを設定する画面を想定した場合、

//configからcontrolへ
IdTextBox.Text=config.Id;

//controlからconfigへ
config.Id=IdTextBox.Text;

みたいなのをコードビハインドに書いてるの?
2022/02/18(金) 21:55:43.47ID:+xc5jpMS
HTML/CSSなら思い通りの画面作れるけどXAMLだと作れない。
「技術的に」じゃなくて「自分のスキル的に、っていう意味だけど、
やっぱり参考となるようなsampleの絶対数の少なさがなぁ。
2022/02/18(金) 22:07:10.37ID:tDFU7xrn
WebView2でよくね?
今更こんなオワコン使わなくても
2022/02/18(金) 22:20:20.27ID:eP6qEqnA
話題がループしてるな
2022/02/18(金) 22:31:21.56ID:TADg4zOp
>>365
WebView2をどう使うの?
2022/02/18(金) 22:34:46.53ID:y3Eq57lv
WebView2の人はUIフレームワークとツールキット何使ってる?
2022/02/18(金) 23:51:16.91ID:YtNFK6ow
あー、WebViewでローカルのhtmlとかも表示できるってこと?
だったらそれでいいのかな
2022/02/18(金) 23:55:20.81ID:TADg4zOp
どうやって表示制御するの?
2022/02/19(土) 00:12:02.32ID:v22Fyi01
>>370
C#のオブジェクトをWebView側に渡すことでJavaScript側からC#のメソッドを呼び出したりC#側の状態を参照したりできる
あとは普通にJavaScript側でReactとか使うだけだ
2022/02/19(土) 00:22:40.12ID:UkMRjGML
JS側とC#のやり取りをどうやるか定番ってあるのかな。
あまり聞いたことがないがまさかRESTとかじゃないだろうし。
2022/02/19(土) 00:27:02.29ID:yc9OR0yy
WPFで自前ブラウザー&httpsサーバー作って
SPAをホストする方法ね
中身はReactとか...

自分がSPAに移行するまえに
しのぎでやってた方法
この方式でキオスク端末でまだ何台か動いてるよ

でも今はPWA有るからそっちのが楽だけどね
2022/02/19(土) 00:27:35.44ID:yc9OR0yy
>>372
websocket
2022/02/19(土) 00:28:31.85ID:yc9OR0yy
>>372
electron.NETとかみてみれば
もうWPFの要素ないけど...
2022/02/19(土) 00:32:25.83ID:yc9OR0yy
あとc#とjsの連携のedge.jsというのがある
2022/02/19(土) 00:36:35.88ID:X0wJkiGG
>>368
Svelte
2022/02/19(土) 00:47:45.48ID:UkMRjGML
なんかいっぱいでてきたw
定番とかは定まってないのか。
2022/02/19(土) 00:51:11.00ID:yc9OR0yy
react

変なの選択すると開発者集めに苦労するよ
保守も
2022/02/19(土) 00:59:59.59ID:UkMRjGML
純粋なWebアプリならもちろんReactでいいんだが。

>変なの選択すると開発者集めに苦労するよ

JS on C#ってのが現時点ではそんな気がする。
素直にWPFやFormsでいいじゃん、と。
2022/02/19(土) 01:26:47.51ID:yc9OR0yy
潮流的にクライアントサイド要員はjs(ts)必須ですね
デザイナーの成果物がhtml,css,jsですから
ダサいのは商品価値もさがりますからね

サーバサイドはjava,c#,js,ruby,python(最近は本当に増えてます)いろいろですね

言語統一したかったらjsですね
ただサーバサイドは要員も別のが多いです
2022/02/19(土) 02:10:08.75ID:9cx4u8XC
jsは型が動的なのがなぁ…tsも実行時の型は保証してないし
2022/02/19(土) 03:21:20.16ID:YdSWfk2N
TSの処理系によって型安全レベルが違ってるからねぇ
ありえんけどブラウザがネイティブでTSに対応したら使ってもいいけど
2022/02/19(土) 03:33:01.88ID:yc9OR0yy
クライアントサイドはc#よりtypescriptのほうが書きやすくて圧勝ですね

あとUI開発にはホットリロード必須と思います
Blazorは最悪でした
2022/02/19(土) 07:57:27.90ID:jK3SOMU4
JavaScript(TypeScript含む)は絶対関わりたくない。
こんなの大規模開発に使っていい代物じゃないよ。
JavaScriptが担っていた部分はDartに置き換わってほしい。
あとReact系もさっさと滅びろ。
2022/02/19(土) 07:57:48.80ID:ApZEftHi
>>116のMS製React Nativeがいいんでないか?
もしくは
2022/02/19(土) 08:46:04.71ID:FnhAxPLY
つか、WebView2ならC#とJSのIFは標準で用意されているのに誰も知らないのな
つまり口だけで誰も使っていないということだろ
2022/02/19(土) 09:07:27.13ID:AlOKsuc0
>>354
答えになってないかもしれんが、
FormアプリにWPFを使うなら、formのelementhostにWPFのユーザーコントロールを貼るのがいいと思う
2022/02/19(土) 10:01:52.96ID:yc9OR0yy
>>387
それマジ?
2022/02/19(土) 10:14:08.32ID:FnhAxPLY
>>389
あ、371の人は知っているようだから「誰も知らない」は間違いだな
WebView2のドキュメント見れば書いてあることだ
2022/02/19(土) 10:45:05.98ID:h/hs4NES
.NET5 WPFのListBoxについて質問があります

VS使わずにやってるんですがBehaviorがないと言われます
名前空間もusingしてますが、そもそも無いようで…
別の機種からの投稿なので具体的な名前空間は忘れましたが、サンプル通りのやつです

やりたいことは一つのListBox内の入れ替えや複数のListBox間のD&D操作です
2022/02/19(土) 10:48:21.53ID:v6jasGDT
C#でM書いて渡せばWebView2のJSから直接アクセスできるから、MVVMやってるならVVMの部分がそのままJSとHTML/CSSに置き換わるだけだね
つまりビジネスロジックは完全にC#で書けるわけで、これでなおJSで大規模開発辛いと思うなら、
多分そいつがMVVMだと思っているものはVMにロジック書きまくってるエセMVVMの可能性が高い
2022/02/19(土) 11:31:54.74ID:yc9OR0yy
WebView2
ひっそりとそんなブリッジ機能あったのね
10年前にあれば良かったかな...

日曜プログラマー的に
昔みたくフロントreactでロジックc#で作ってみるかな
2022/02/19(土) 11:32:54.00ID:yc9OR0yy
でもWebView2使った
electron相当のもうあんじゃね?
知らんけど
2022/02/19(土) 11:33:36.90ID:R5yjbcGL
System.Windows.Interactivity.dll → Xaml.Behaviors.Wpf
2022/02/19(土) 11:50:34.88ID:UkMRjGML
>>392
でもJSとC#混在ってだけで一段ハードルが上がるわけじゃん。
ビジネスロジックだけじゃなくてプレゼンテーションロジックも同じC#で書けた方が楽なのは間違いない。
2022/02/19(土) 12:07:51.70ID:yc9OR0yy
システム開発でweb系が苦手ってだけで
仕事めちゃ少なくなるんですよ
肩身がせまい

情シスのお客さんなら
100%web出来るから
フリーのwebのUIライブラリーに見劣る操作性のものは
恥ずかしくてだせないですね
自分は

そんな背景でjsには精通する必要があって
第二言語のc#は別のでもいい感じなのです

一番多いのはjavaで
最近はバックエンドpythonがマジで増えてる
2022/02/19(土) 13:03:45.50ID:mW2XZAFZ
>>396
上がるか?下がらん?
2022/02/19(土) 13:16:07.12ID:IE8zF3Kj
html側もwebview2べったりがイヤだからwebapiモドキ
2022/02/19(土) 13:23:50.87ID:UkMRjGML
>>398
そのココロは?
単純にJSとC#、Reactと.NETと、異なるものを同時に扱わないとならないだけでもその分労力は増えると思うが。
2022/02/19(土) 13:34:39.99ID:X0wJkiGG
>>400
Reactみたいにややこしいもの使わなくてもSvelteでも何でも良いんだし。
言ってるほど難易度高くないよ。
カスタマイズしたオーナードローなTreeViewとか作るならHTML+CSSの方がはるかに楽。
2022/02/19(土) 13:40:29.28ID:yc9OR0yy
WPFは自作コントロール作るのが酷く面倒だからね
2022/02/19(土) 13:55:04.77ID:UkMRjGML
>>401
つまり、カスタムコントロール作る前提なら、ってことかな。
うちでやってるデスクトップアプリだと、よほどのことがない限りいちいちカスタムコントロールなんて作らないしなぁ。
2022/02/19(土) 13:55:48.58ID:X0wJkiGG
アニメーションするチャートとかもWebベースの物の方が良いもの多いよね。見やすいのが多いし、作る側としてもインタラクティブな動きはつけやすい。
最近は業務アプリでもみんな目が肥えてるから。

PowerBIとかもWebViewっぽくないか?
2022/02/19(土) 13:56:45.11ID:X0wJkiGG
>>403
カスタムコントロールまでいかなくても、チャートの類とか、ビューアーの類とか。
PDFのプレビュー出すのにWebView使うとかもアリよ。
2022/02/19(土) 14:00:32.65ID:UkMRjGML
JSとC#の話をしていたはずなのにCSSとXAMLの話になったり、プログラミングの話をしていたはずなのに
ライブラリが豊富という話になったり、なんだろうこのモヤッとする感じ。
2022/02/19(土) 14:04:51.66ID:Gaj/uCI/
c#ジジイたちにWebなんてムリ
今のhtmlやcssは複雑になったしデザインとレスポンシブ込みだとcssフレームワーク使っても使えない無能ばかりだからな
2022/02/19(土) 14:10:51.58ID:X0wJkiGG
>>406
C#とJSを連携する目的はそれしかないからでしょ。
JSで業務ロジック作って連携する訳がないんだから。
C#でXAMLをコントロールする話と、JavaScriptでCSS+HTMLをコントロールする話が、
C#からJSにinteropしてHTML+CSSを動かす話になるじゃん。
その上で使えるライブラリはJSでしょ。
何が疑問?
2022/02/19(土) 15:33:28.33ID:AlOKsuc0
みんな、たまにはWPFの話もしてくれよ
2022/02/19(土) 15:42:50.85ID:HrfptPE1
WPFからバインディングを切り離したグラフィックモジュールが欲しい
バインディングが諸悪の根源
2022/02/19(土) 15:45:17.17ID:evvGZLor
>>410
ならバインディングしなければいいだけじゃないのか

バインディングそのものはWinFormsにもあるんだぜ
2022/02/19(土) 15:47:24.50ID:b+8HD1Ua
常用してるライブラリがあったら教えてくり
2022/02/19(土) 16:17:06.06ID:bVzeAasi
ID:X0wJkiGG みたいに情報提供してくれる人はありがたいけど
煽り入れてくるのはNGするといいお
2022/02/19(土) 16:34:50.41ID:JpT/s+kG
webもやらないとなぁと思ってVueで入門だわ・・・
2022/02/19(土) 17:50:55.25ID:X0wJkiGG
>>412
JSだとSvelteで全て済ませたいところなんだけど、d3.jsでチャート書くことも多い。
あと変わり種としては最近はmodel-viewer使ったものも作った。割とウケたけど、これは多分3D触らない人は使わないと思う。
2022/02/19(土) 18:35:10.60ID:AlOKsuc0
>>410
バインディングを一切使わなくてもアプリは作れるよ
2022/02/19(土) 20:28:44.30ID:ZIf//Swn
Bindingすげぇ!って言ってたじゃんお前ら最初
2022/02/19(土) 20:32:24.01ID:FnhAxPLY
>>416
ListViewやListBox、TreeViewなどが使用不能だから
しょぼいやつしか作れませんわ

VM使わないならまだしも
2022/02/19(土) 21:22:19.62ID:dHM7ffAe
仮想化使わなきゃItemsControl系使えるけど
まぁ、データ数増えたらきついな
2022/02/20(日) 06:09:29.10ID:rMSJWNa2
>>418
それらもバインディングなしで使えるよ
2022/02/20(日) 09:19:45.81ID:OX17O63E
Caliburn.Microならx:Nameだけでバインディングする
PropertyChanged.FodyならINotifyPropertyChangedを自動実装する
バインディングがわからないって初心者、またいちいち書くの面倒で嫌という人なら役に立つかもしれない
2022/02/20(日) 16:36:12.10ID:fPGhCMQ1
もう終わったドマイナーライブラリの宣伝はいらないよ
2022/02/20(日) 20:58:13.91ID:THbE7o0A
VBA触ってからWPF触ったときはデータバインディングに感動したりもしました
2022/02/20(日) 21:23:04.93ID:swKuI/ic
データーバインディングって Borland C++ Builder の時から有ったよね
2022/02/20(日) 21:28:40.05ID:XyZ+411b
>>424
そう。当時はシンタックスシュガーでしかなかったものが
MVVM信者によってアーキテクチャの一部に祀り上げられたのが根本的な誤ちの始まりになった。
2022/02/20(日) 21:40:18.51ID:yw9AEnt+
何が誤ちだよ「過ち」って書くんだよ
MVVM理解できない奴は根本的に学がなくて勉強嫌いだって分かるな
2022/02/20(日) 22:14:55.49ID:zJV+WKvF
C#自体がマイナー

実需はゲーム開発のみ
2022/02/20(日) 22:21:48.82ID:uUEkIMOM
>>426
常用漢字ではないけど>>425の文脈だと誤ちでも間違いでもない
そもそも5chで誤字指摘とか…
2022/02/20(日) 23:17:32.96ID:Qz/cDKkO
文書入力した後、見返したり推敲したり編集したりしないのだから入力違いやグダグダ文書なんか当然
いわば一筆書きみたいな文書の書き方になるわけだし
2022/02/20(日) 23:40:10.52ID:uUEkIMOM
技術板なので技術的にグダグダなのは勘弁して欲しいが意味が取れるなら多少の誤字とかは許容範囲
2022/02/20(日) 23:58:10.11ID:j4WAiXFM
たぶん、MVVM信者って煽りが気に入らなかったんでしょ
だから誤字を指摘してやり返したと予想
2022/02/21(月) 01:29:06.13ID:06fqlVz8
>>425
べつに誤字や漢字使いはどうでもいいんだが
バインディングがシンタックスシュガーって、もとはどうだったのか気になる

もともと機能としてはもってて書き方だけなのか
自動生成なら相当な量のコードに該当する気がするんだが
2022/02/21(月) 01:39:26.02ID:MsEPZ7ij
そもそもフロントアーキテクチャ界隈では
viewModelとviewのデータフローで
双方向というのは否定されている
2022/02/21(月) 01:45:07.36ID:Vo68A3hI
使ってみたらシンタックスビターだった。
2022/02/21(月) 09:57:25.91ID:Z2tCC8cM
>>433
そんなこと言っても、Connected Animationは双方向出来ないと詰む
2022/02/21(月) 14:40:06.59ID:G8P6KNI7
>>426
MVVM信者は本当に枝葉の議論が好きだねえ
2022/02/21(月) 20:11:38.06ID:oeWV3I3V
ところで.NET7が来たわけだが
おまいらどうよ?
2022/02/21(月) 20:57:34.26ID:kRnBXcNL
奇数はスルーだろ。
ぎりぎりまで長寿の4.8で粘るという手もあるしな。
確実に3年以上使える。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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