■ このスレッドは過去ログ倉庫に格納されています
WPF(.NET, WinUI) GUIプログラミング Part26
- 1 :デフォルトの名無しさん:2021/06/20(日) 17:04:18.66 ID:7UVkl7BZ.net
- Windows Presentation Frameworkについて語るスレ。
前スレ
WPF(.NET4.x, .NET Core) GUIプログラミング Part25
https://mevius.5ch.net/test/read.cgi/tech/1612522463
関連スレ
Windows 10 UWPアプリ開発 Part 2
http://mevius.2ch.net/test/read.cgi/tech/1499658092/
コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/
- 952 :デフォルトの名無しさん:2021/09/19(日) 10:50:54.04 ID:zoNPTzv8.net
- XAMLは筋の悪い技術だよ
ループ等を無理矢理バインディングで実装しなきゃいけないために複雑怪奇になってる
普通に文字列のテンプレートエンジンか、Reactみたいにコードでよかった
MVUでは結局コードになったね
- 953 :デフォルトの名無しさん:2021/09/19(日) 12:01:27.73 ID:YE49AlZO.net
- XAML Styler必須だよな、なぜVisual Studioに標準搭載しないのか
- 954 :デフォルトの名無しさん:2021/09/19(日) 13:28:03.13 ID:bqLn7Zqv.net
- ループって何言ってるか分からんがリストのことならコレクションバインディングするだけでしょ
違うならすまん
- 955 :デフォルトの名無しさん:2021/09/19(日) 13:52:08.27 ID:dh1bYHy4.net
- ObservableCollectionとListViewをバインドするだけとちゃうの?
- 956 :デフォルトの名無しさん:2021/09/19(日) 14:12:08.70 ID:/b0JgwvO.net
- >>951
画面をXAMLで書けることの何がメリットなの?
- 957 :デフォルトの名無しさん:2021/09/19(日) 14:13:52.23 ID:/b0JgwvO.net
- >>952
禿同
Viewと分けるにしても、XAMLなんか使わずにコードでいいじゃんね
- 958 :デフォルトの名無しさん:2021/09/19(日) 14:17:30.11 ID:/b0JgwvO.net
- >>950 >>954-955
スマソ、確認だけど、
XAMLで出来ること = コードビハインドで出来ること
なん?
すべての機能が一対一で相互互換性あるの?
- 959 :デフォルトの名無しさん:2021/09/19(日) 14:25:03.65 ID:bqLn7Zqv.net
- 別にMVVMは強要されてる分けじゃない
使いたくなければ使わなくていいよ
- 960 :デフォルトの名無しさん:2021/09/19(日) 14:26:01.77 ID:bqLn7Zqv.net
- MVVMじゃなくてxamlか
xaml無しでUI書くこともできるだろう、好きにすればいい
- 961 :デフォルトの名無しさん:2021/09/19(日) 14:27:02.36 ID:k8GedCcQ.net
- メリットは宣言的なところ
jsさえあればDOMでdocumentを構築できるがやる奴なんかいないのと同じ
- 962 :デフォルトの名無しさん:2021/09/19(日) 14:39:50.67 ID:/b0JgwvO.net
- >>960
全然答えになってない
XAMLでやってることすべてをコードビハインドで出来るのかって訊いてる
- 963 :デフォルトの名無しさん:2021/09/19(日) 14:41:23.81 ID:/b0JgwvO.net
- >>961
コードでうまいこと宣言的にできないもんかね?
- 964 :デフォルトの名無しさん:2021/09/19(日) 14:52:46.50 ID:k8GedCcQ.net
- >>963
目的と手段が逆転してるぞ
そのためにXAMLがあるんだろうが
- 965 :デフォルトの名無しさん:2021/09/19(日) 15:54:38.30 ID:V+8kg11o.net
- ReactのあれはReactだけのやり方だから好きじゃないな
- 966 :デフォルトの名無しさん:2021/09/19(日) 16:47:23.99 ID:bqLn7Zqv.net
- >>962
何でそんな失礼なん?
全部できるかどうかなんて証明でいないわ
MSに訊け
- 967 :デフォルトの名無しさん:2021/09/19(日) 16:59:45.77 ID:M6A2mfW9.net
- >>956
・画面イメージそのままに階層構造で表現できるからXAMLを見ただけで画面イメージを把握できる。つまり画面デザイナが無くても困らないからVSCodeでも開発できる。
・diffで差分を確認しやすい。
・スニペット登録しておけばEmmetみたいに爆速で画面作成できる。
- 968 :デフォルトの名無しさん:2021/09/19(日) 17:48:29.61 ID:k97hf5Wx.net
- XAML直接弄ることはあったけどデザイナーで結果見ながらだ
さすがプロだ。ちがうなあ…。
- 969 :デフォルトの名無しさん:2021/09/19(日) 17:56:27.98 ID:nIKY40XN.net
- xamlでやってることはすべてコードビハインドできる
xamlで書けるものはそうした方が楽で速いってだけ
- 970 :デフォルトの名無しさん:2021/09/19(日) 18:23:45.11 ID:dWPcIkOu.net
- >>954
例えば要素の特定のプロパティの値に応じてスタイルを変えたいとき、HTMLのテンプレートなら値に応じてifでCSSのクラスを切り替えるだけだよね
XAMLだとどうする?いちいちConverter作る?
- 971 :デフォルトの名無しさん:2021/09/19(日) 18:38:16.20 ID:z/QIU9f5.net
- いちいちというかConverterはふつうに作ってるな。ある程度作ったらあとは使いまわせるし。
- 972 :デフォルトの名無しさん:2021/09/19(日) 19:16:13.86 ID:cbIcUE3M.net
- お前がXAMLをどう思うかなんてのはどうでもいいことだ
アニオタが自分はこのアニメが好きでこのアニメが嫌いって言ってるのと変わらん
- 973 :デフォルトの名無しさん:2021/09/19(日) 19:19:44.56 ID:iNtXNZB3.net
- >>970
DataTriggerを設定する
- 974 :デフォルトの名無しさん:2021/09/19(日) 19:25:44.86 ID:E5LuOPCO.net
- >>969
何の速度の事をいってるのか判らんが、
動作速度はコードビハインドのが早いぞ
- 975 :デフォルトの名無しさん:2021/09/19(日) 19:38:38.45 ID:/b0JgwvO.net
- >>964
サンクス
とりあえずコードだと宣言的にはできないということはわかった
>>967
サンクス
裏を返せば、コードだと画面がイメージできない・しにくい、と言ってるんだな、それは分かるかも
差分はイメージできる前提でメリットにはなり得る
スニペットってどの粒度で作ってあるんだろう?
それを標準で載せてくれよと思うわ
左のリストボックスで選択すると右のリストボックスに移る奴とかさ、結構使うだろ
- 976 :デフォルトの名無しさん:2021/09/19(日) 19:40:34.61 ID:lTTF8pbf.net
- たぶん、動作速度の事いってないと思う
楽でっていってるから、開発速度とかじゃね
- 977 :デフォルトの名無しさん:2021/09/19(日) 20:29:08.95 ID:cF49PKlA.net
- >>975
差分は〜のあたり何言ってるのか分からんが……
とりあえず最後の複数リストボックスのそれはたぶんコードビハインド書かないと無理
フォーカスの移動はバインディングで対応できなかったはずなので
- 978 :デフォルトの名無しさん:2021/09/19(日) 20:29:10.32 ID:cF49PKlA.net
- >>975
差分は〜のあたり何言ってるのか分からんが……
とりあえず最後の複数リストボックスのそれはたぶんコードビハインド書かないと無理
フォーカスの移動はバインディングで対応できなかったはずなので
- 979 :デフォルトの名無しさん:2021/09/19(日) 22:15:48.20 ID:V+8kg11o.net
- 動作速度にこだわるなら言語選び間違ってるよね
- 980 :デフォルトの名無しさん:2021/09/19(日) 23:23:28.51 ID:bqLn7Zqv.net
- >>970
色を変えるとか簡単な変化ならConverter
スタイルそのものを変えるならTemplateSelector
でもこれループ云々と関係ある?
- 981 :デフォルトの名無しさん:2021/09/20(月) 00:49:08.80 ID:Xe9wEhiD.net
- >>980
Webのテンプレートエンジンを使ったことあるなら、そんな疑問が出てくる方が不思議なんだが
- 982 :デフォルトの名無しさん:2021/09/20(月) 00:50:49.73 ID:Urg8oj7a.net
- >>977
そうかぁ、複数リストボックスはやっぱりコードビハインドが無いと無理そうなのか
フォーカスの移動がネックね
XAMLの限界って奴かな
こういうのがあるなら最初っから腹くくってコードビハインドで書いた方がいい気がしてきた
だって、XAMLで書いててどうやるんだろう?と悩んだ挙句、
結局コードビハインドしか解決法が無い、ということにもなりかねんからね
訂正:
差分はイメージできる前提でメリットにはなり得る
↓
XAMLを見て画面がイメージできる人なら、diffで差分を確認しやすいのはメリットになり得る
まぁ、階層が増えたとか移動したとかは分かりやすいだろうな
- 983 :デフォルトの名無しさん:2021/09/20(月) 00:55:56.18 ID:rs8t3f0k.net
- >>981
イヤな言い方だね
あんな汚らしい記法は嫌いだわ
ループよりコレクションにバインディングする方が読みやすい(個人の感想です)
- 984 :デフォルトの名無しさん:2021/09/20(月) 01:02:15.33 ID:1ct4tbKZ.net
- xamlはbamlにコンパイルされ理論上はC#コードより速くなるよ
少なくともMSのWPFチームはそう主張して
生C#にコンパイルするcamlを廃止したわけだし
なお実際に測定すると...
- 985 :デフォルトの名無しさん:2021/09/20(月) 01:17:24.74 ID:GKDt5rSn.net
- >>984
それは単純ケースだけじゃ?
MSの公式のパフォーマンス改善の手引きに
バインデイングを止めるようにとあったと思うが...
- 986 :デフォルトの名無しさん:2021/09/20(月) 01:19:47.53 ID:GKDt5rSn.net
- とにかく俺のプロジェクトじゃ
WPFのパフォーマンスの悪さがやり玉に上げられて
それは大変だった...
- 987 :デフォルトの名無しさん:2021/09/20(月) 01:25:48.63 ID:nLJN3AnD.net
- 双方向バインディングをやめてOneWay等も使えって書いてあった気がする
- 988 :デフォルトの名無しさん:2021/09/20(月) 01:35:10.41 ID:rs8t3f0k.net
- WPFのBindingは全部レイトだから遅いのは宿命だわな
UWPからx:Bindを逆輸入すればいいのにと思っていたけどもうWinUIに逝っちゃったからなあ
- 989 :デフォルトの名無しさん:2021/09/20(月) 01:44:05.05 ID:GKDt5rSn.net
- とにかく、
バインデイングとかテンプレートのセレクターの動作をみれば、
遅くなるのは当たり前なんだよなーー
- 990 :デフォルトの名無しさん:2021/09/20(月) 01:45:44.54 ID:GKDt5rSn.net
- >>988
そのx:Bindは早いの?
- 991 :デフォルトの名無しさん:2021/09/20(月) 03:00:03.34 ID:/wXzoW3g.net
- 最近のパソコンなら遅いとは感じないけどな。
- 992 :デフォルトの名無しさん:2021/09/20(月) 04:17:47.61 ID:ikLxeDh9.net
- WPFはバインディングよりも描画が重かったイメージだな
- 993 :デフォルトの名無しさん:2021/09/20(月) 08:09:56.39 ID:1ct4tbKZ.net
- >>985
逆だね
単純なケースでは生xamlでも速いのでbamlの利点が生きてこない
VisualStudioで描画が重いと思ったことないので(軽いと思ったこともないけど)
WPFそのものにはポテンシャルは十分にあるんだろう
ただWPFみたいた終わったテクノロジーでそんなレベルの開発者集められるのはそれこそVSの開発チームくらいだろうね
- 994 :デフォルトの名無しさん:2021/09/20(月) 08:47:58.20 ID:tGJnTRCJ.net
- グラボとメモリが無いとヤバい
- 995 :デフォルトの名無しさん:2021/09/20(月) 09:31:37.18 ID:E4xUszIH.net
- >>982
そういう複合コントロールはユーザーコントロールで作るからデータの出し入れは依存関係プロパティーを使いMVVMは使わず
処理もコードビハインドに思いっきり書く
で、出来たものをページなりウインドウに貼り付けて使用します
- 996 :デフォルトの名無しさん:2021/09/20(月) 12:01:41.39 ID:336bYktz.net
- x:bind 速度の違いが全くわからないので使うのやめた
コンパイル時の型エラーがうざいし
bindingに戻った
速度に関してはそりゃ開発環境入れてるメインマシンで動かせばそりゃ問題ないけどさ、ローエンドのCPU積んでるマシンで動かしたらどうなんだろう
今時のローエンドでもbaytrailのatomからは随分速くなったろうから問題ないと思うけど??
- 997 :デフォルトの名無しさん:2021/09/20(月) 12:11:27.54 ID:GKDt5rSn.net
- >>993
WPFは遅くて同時は叩かれましたよ
そのあと改良されて大部分巻き返しましたが
同時かなり高度な描画デバックキットがリリースらされましたので
それを駆使して対処してましたが
XAMLとバインデイングから
どのようなコードが生成されてるのか
予測が付かなくて
地獄見ましたよ
- 998 :デフォルトの名無しさん:2021/09/20(月) 12:12:02.12 ID:336bYktz.net
- つかさ、winuiもいいんだけださ
そもそもwindowsを開発とかのマウス入力前提の環境でしかつかってないんだよ
だから、winuiのfluent designがタッチ入力よりすぎで微妙すぎる
- 999 :デフォルトの名無しさん:2021/09/20(月) 12:16:06.20 ID:si8x6YH6.net
- >>990
WPFにはx:Bind無いので直接比較はできんけど
UWPで同じようなもん作ったとき、Binding連発してるところで
WPFだと頻繁に見られるタメみたいなのがなかったね
- 1000 :デフォルトの名無しさん:2021/09/20(月) 12:21:05.16 ID:336bYktz.net
- まじで?
俺はUWPのbindingとx:bindしか比較してないけど
x:phaseとかも使ってみたけど
体感で全く違いがわからなかったわw
もちろん厳密な比較はしてないけど
- 1001 :2ch.net投稿限界:Over 1000 Thread
- 2ch.netからのレス数が1000に到達しました。
総レス数 1001
260 KB
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200