WPF(Windows Presentation Framework)について語るスレ。
前スレ
WPF(.NET, WinUI) GUIプログラミング Part26
https://mevius.5ch.net/test/read.cgi/tech/1624176258/
関連スレ
Windows 10 UWPアプリ開発Part 3
https://mevius.5ch.net/test/read.cgi/tech/1627556967/
コードを貼る場合は以下のサイトの利用をお勧め。
https://ideone.com/
探検
WPF(.NET, WinUI) GUIプログラミング Part27
■ このスレッドは過去ログ倉庫に格納されています
2021/09/19(日) 18:43:39.82ID:9XIs1/Nq
2021/09/24(金) 08:52:21.18ID:lm8/dmzt
WebViewだろうね
WPFを使う意味があるかはともかく
WPFを使う意味があるかはともかく
2021/09/24(金) 09:53:30.84ID:QrKyvyMU
WebView2?
2021/09/24(金) 10:49:48.03ID:GTi1Ed7C
2021/09/24(金) 12:38:31.07ID:+RVxkNW4
2021/09/25(土) 00:57:31.87ID:/EdXTBH/
WPF-MediaKitもVlc.DotNetも古くてLibVLCSharpが推奨なのでは、知らんけど
https://code.videolan.org/mfkl/libvlcsharp-samples
https://code.videolan.org/mfkl/libvlcsharp-samples
2021/09/25(土) 12:26:26.31ID:88LJBDq+
2021/09/26(日) 00:59:05.90ID:hnLj2RjB
WinUI3まだー?
16デフォルトの名無しさん
2021/09/27(月) 12:55:19.28ID:NYWmPD2Y drawingContext.DrawLine(new Pen(Brushes.Black), 1), new Point(0, 0), new Point(0, 100));
drawingContext.DrawRectangleBrushes.Blacknull, new Rect(0, 0, 1, 100));
この二つって全く同じ個所に縦線引かれると思ったらDrawLineの方が左に1づれるんだけど仕様?
drawingContext.DrawRectangleBrushes.Blacknull, new Rect(0, 0, 1, 100));
この二つって全く同じ個所に縦線引かれると思ったらDrawLineの方が左に1づれるんだけど仕様?
2021/09/27(月) 14:17:54.92ID:NYWmPD2Y
DrawLineとDrawRectangleの差じゃなくてBrushとPenの差か
DrawLineのBrush版があればなぁ
DrawLineのBrush版があればなぁ
2021/09/27(月) 16:08:58.41ID:xaSuQemP
それはwindows系であるRectangleの仕様
Rectangleの場合、下、右は含まれない
Rectangleの場合、下、右は含まれない
19デフォルトの名無しさん
2021/09/27(月) 16:13:11.14ID:xaSuQemP 厳密には知らんがそんな感じだと思った*
2021/09/27(月) 16:21:02.35ID:NYWmPD2Y
>>18
いや、DrawRectangle同士でも
DrawRectangle(Brushes.Black, null, new Rect(0, 0, 1, 100));
DrawRectangle(null, new Pen(Brushes.Red, 1), new Rect(0, 0, 0, 100));
こうするとそもそもxの起点位置が違うんよ
下の赤線の方が1つ左にズレて-1位置に描かれる
いや、DrawRectangle同士でも
DrawRectangle(Brushes.Black, null, new Rect(0, 0, 1, 100));
DrawRectangle(null, new Pen(Brushes.Red, 1), new Rect(0, 0, 0, 100));
こうするとそもそもxの起点位置が違うんよ
下の赤線の方が1つ左にズレて-1位置に描かれる
2021/09/27(月) 17:35:29.70ID:kU8huA04
今のwinui、バインド関連のバグ多くない?
せっかくなら新しいの覚えながらやりたいと思ってwinuiで作ってたけど、使用に耐えるものを作れそうにない
UI部分wpfに差し替えようかな
素人がプレビュー版なんて使うんじゃなかったわ 自分じゃどうにも改善できねえ
せっかくなら新しいの覚えながらやりたいと思ってwinuiで作ってたけど、使用に耐えるものを作れそうにない
UI部分wpfに差し替えようかな
素人がプレビュー版なんて使うんじゃなかったわ 自分じゃどうにも改善できねえ
2021/09/27(月) 18:37:11.61ID:xaSuQemP
23デフォルトの名無しさん
2021/09/27(月) 18:39:27.60ID:xaSuQemP まぁ、WinUIとか定期的に更新してくれるからバグ報告すりゃそのうち直る可能性高いけど、ユーザー少ないからバグを自分で踏んで報告する羽目になる..
2021/09/27(月) 19:12:05.92ID:Aa8uOS44
>>22
modernWpfUI使えば大体似た見た目にはできるから、もういいかなって
modernWpfUI使えば大体似た見た目にはできるから、もういいかなって
2021/09/27(月) 19:25:35.38ID:Aa8uOS44
21です(23も俺)
過去にWinFormで作ったソフトをWinUIで再構築しようとしてたんだけど、新しいことやってみたい気持ちだけでWinUI使ってた
正直今背伸びしてまで使うメリットが自分には見えないんだよなー
WinForm→WinUIも
WinForm→WPFも
ユーザー目線だとそんな変わんないんじゃねって思う(WPFはUIのライブラリ使って現代風の見た目にすれば)
過去にWinFormで作ったソフトをWinUIで再構築しようとしてたんだけど、新しいことやってみたい気持ちだけでWinUI使ってた
正直今背伸びしてまで使うメリットが自分には見えないんだよなー
WinForm→WinUIも
WinForm→WPFも
ユーザー目線だとそんな変わんないんじゃねって思う(WPFはUIのライブラリ使って現代風の見た目にすれば)
2021/09/27(月) 19:26:44.43ID:Aa8uOS44
ごめん21,24,25が俺ね
どうでもいいことで連投すまん
どうでもいいことで連投すまん
2021/09/27(月) 20:38:54.92ID:xaSuQemP
28デフォルトの名無しさん
2021/09/27(月) 20:42:51.67ID:xaSuQemP WPF+ModernWPF
と
WinUI
で似たアプリ2つ同時に作りながらやってるわ
最終的にWinUI一本に絞ると思うけど
と
WinUI
で似たアプリ2つ同時に作りながらやってるわ
最終的にWinUI一本に絞ると思うけど
29デフォルトの名無しさん
2021/09/27(月) 20:54:34.65ID:xaSuQemP > ユーザー目線だとそんな変わんないんじゃねって思う(WPFはUIのライブラリ使って現代風の見た目にすれば)
たぶん、そうだと思うけど(とりあえず、ライトとダークあれば)
俺はそこだけは変にこだわってるから
ちょうど数時間前もWPF+ModernWPFで、CommandBarじゃなくてWPFのToolbar使いたくてでもModernWPFでToolbarはスタイリングされないから頭抱えてた
まぁ、自分でスタイリングする能力ないんで..
たぶん、そうだと思うけど(とりあえず、ライトとダークあれば)
俺はそこだけは変にこだわってるから
ちょうど数時間前もWPF+ModernWPFで、CommandBarじゃなくてWPFのToolbar使いたくてでもModernWPFでToolbarはスタイリングされないから頭抱えてた
まぁ、自分でスタイリングする能力ないんで..
2021/09/27(月) 22:47:47.96ID:LVIsrHah
>>26
1.0 Preview1も駄目?
1.0 Preview1も駄目?
2021/09/28(火) 06:42:23.50ID:7CUpdHu/
>>30
あー、もうそんなの出てたんだね
そういえばgithubのバグ報告のページで「1.0.0でも起こるけどまだ直ってないんか?」みたいなコメントしてた人いたわ 見たときはなんのことだと思ったけど
だめっぽいけど一応試してみるかー
あー、もうそんなの出てたんだね
そういえばgithubのバグ報告のページで「1.0.0でも起こるけどまだ直ってないんか?」みたいなコメントしてた人いたわ 見たときはなんのことだと思ったけど
だめっぽいけど一応試してみるかー
2021/09/28(火) 12:37:34.11ID:jju60wXc
>>25
>WinForm→WPFも
>ユーザー目線だとそんな変わんないんじゃ
開発者目線だとWPFのが作るのが楽(MVVM、非MVVM関係なく)だからWPF使ってる。
受け入れられやすいようにWinFormっぽい見た目に変えてる。
>WinForm→WPFも
>ユーザー目線だとそんな変わんないんじゃ
開発者目線だとWPFのが作るのが楽(MVVM、非MVVM関係なく)だからWPF使ってる。
受け入れられやすいようにWinFormっぽい見た目に変えてる。
2021/09/29(水) 08:28:02.15ID:GOP9Dp1g
悲報、WinUI3、ウィンドウのHeight, Widthプロパティ無し
ウィンドウサイズに依存したWinFormみたいな糞アプリを作れなくなるからこれはこれでいいのかも。
いやでも初期サイズぐらいは設定したい。ウィンドウサイズ固定はできなくていいけど。
ウィンドウサイズに依存したWinFormみたいな糞アプリを作れなくなるからこれはこれでいいのかも。
いやでも初期サイズぐらいは設定したい。ウィンドウサイズ固定はできなくていいけど。
2021/09/29(水) 08:54:21.60ID:O+WbcMkB
MinWidthとかもないのかな?
2021/09/29(水) 09:38:32.22ID:hXKTXicB
前回のウィンドウ位置・サイズ・位置を記憶しておいてほしいって要望は結構あるからなー。
PInvokeでなんとかなるんだろうか。
PInvokeでなんとかなるんだろうか。
2021/09/29(水) 09:44:24.58ID:hXKTXicB
ライブラリはあるからそれで我慢するしかなさそう
https://github.com/dotMorten/WinUIEx/
https://github.com/dotMorten/WinUIEx/
2021/09/29(水) 10:33:25.99ID:hdmEo5v3
>>33
いちおうサイズや最大最小ボタンの無効化とかを設定できるAPIがある
実際俺が作りかけてるソフトでも初期ウインドウサイズだけ変えてるけど問題なく使えてる
今ちょっと名前は忘れたんだけど、API紹介してるマイクロソフトのページを見ながら実装したと記憶してるので、探せばでてくると思うよ
正直標準でついててほしいけどなあ
いちおうサイズや最大最小ボタンの無効化とかを設定できるAPIがある
実際俺が作りかけてるソフトでも初期ウインドウサイズだけ変えてるけど問題なく使えてる
今ちょっと名前は忘れたんだけど、API紹介してるマイクロソフトのページを見ながら実装したと記憶してるので、探せばでてくると思うよ
正直標準でついててほしいけどなあ
2021/09/29(水) 10:34:57.02ID:hdmEo5v3
俺が使ったのは>>36のと違うやつだけど、36のほうが使いやすそう
2021/09/29(水) 13:31:20.42ID:SjiJdI8Y
winui 0.8で作ったやつそういやはじめてnull許容参照型有効にしてみたんだけど、コンパイルエラーでなく警告しかでないの?
null非許容参照型にnullf代入できちまうわ
null非許容参照型にnullf代入できちまうわ
2021/09/29(水) 13:50:46.96ID:+vfkIeDq
2021/09/29(水) 14:34:19.08ID:+vfkIeDq
違うかも、元々警告だった気がする。
エラーだと影響でかすぎるから。
エラーだと影響でかすぎるから。
42デフォルトの名無しさん
2021/09/29(水) 17:03:33.12ID:pb5Ym/dQ 初期サイズこそOSに任せたほうがよくないか
2021/09/29(水) 18:59:25.74ID:VwMtEVzw
警告をエラーにするオプションは?
2021/09/29(水) 20:58:16.79ID:DtpEbdQZ
winuiいまいちだな・・・
2021/09/29(水) 22:03:25.40ID:pdK7LZ21
>>44
3世代目で使い物になるのがMSのお約束
3世代目で使い物になるのがMSのお約束
2021/09/30(木) 00:17:53.55ID:3U3ppoE9
使えるようになる頃にオワコンと言われるMS……
47デフォルトの名無しさん
2021/09/30(木) 00:25:47.23ID:YPQ+W3Ke WinUIは3やで
2021/09/30(木) 06:03:19.53ID:5Bjzv+OV
実質WinUI 3(Windiows App SDK 1.0)がバージョン1だから。
まだストアアプリ臭が抜けてなくて、デスクトップアプリとして見ると
「は?こんなこともできないの?」ってレベル。
まだストアアプリ臭が抜けてなくて、デスクトップアプリとして見ると
「は?こんなこともできないの?」ってレベル。
2021/09/30(木) 07:55:01.00ID:V9jR/S3x
使えるうんぬんより、マイクロソフトがストアで商売したがってるイメージ
また変なの考案するより鍵屋した方が手っ取り早いのに
また変なの考案するより鍵屋した方が手っ取り早いのに
2021/09/30(木) 14:07:51.32ID:l65pxKZX
ストアはもう諦めてるだろ
諦めてるから開放した
諦めてるから開放した
2021/09/30(木) 19:46:10.00ID:Ug+arU8W
てかもうMS自身が自社フレームワーク諦めてElectronとか利用してんじゃん
2021/09/30(木) 20:07:27.48ID:zVzNCdtO
新Teamsからはelectron脱却してWebView2行くんでは?
2021/09/30(木) 20:21:22.07ID:l65pxKZX
でも、一部のクロスプラットホームアプリだけだろ??
電卓に始まってペイントやらフォトビューワとかもろもろはelectronとか使ってないだろ??
電卓に始まってペイントやらフォトビューワとかもろもろはelectronとか使ってないだろ??
2021/09/30(木) 20:26:42.56ID:URu2/Q9n
もうos周りのアプリだけだろうね
一般のアプリは、
Webかスマホかに二分される時代だし
一般のアプリは、
Webかスマホかに二分される時代だし
55デフォルトの名無しさん
2021/09/30(木) 20:28:19.61ID:l65pxKZX まぁ、xamarin(maui)はMicrosoftも諦めてて、microsoftの他の部門であえてこれらを使わないと思うが
2021/10/01(金) 10:43:29.25ID:iSJ4hQHP
MAUI(=Xamarin)使うぐらいなら普通はFlutter使うわな
2021/10/01(金) 15:27:55.77ID:gzQL+yLO
そうなの?
2021/10/01(金) 15:58:19.68ID:3yqFz9yL
VisualTreeHelperというのがありますが、
勉強する価値があるかないか、そしてその理由を教えて下さい。
Visual StudioのXAMLエディターでツリーが見れるようになったので、
今は無用の長物でしょうか?
勉強する価値があるかないか、そしてその理由を教えて下さい。
Visual StudioのXAMLエディターでツリーが見れるようになったので、
今は無用の長物でしょうか?
2021/10/01(金) 16:27:12.58ID:b8RMXs3B
アプリって言うと
昔はデスクトップアプリを指してたんだけど、
今じゃスマホのアプリの事だもんな
さらにwindows11で
アンドロイドアプリがPCで動くようになると、
もう価値がなくなるんでは無かろうか?
昔はデスクトップアプリを指してたんだけど、
今じゃスマホのアプリの事だもんな
さらにwindows11で
アンドロイドアプリがPCで動くようになると、
もう価値がなくなるんでは無かろうか?
2021/10/01(金) 17:03:56.46ID:hHr0ZnR0
Microsoftがスマホでも勝者になってる世界線にいたら、今はみんなxaml使ってたのだろうか ガクブル
2021/10/01(金) 17:08:46.75ID:D1J8zmF5
>>60
Androidも画面定義はXMLだから似たようなもんだよ
Androidも画面定義はXMLだから似たようなもんだよ
2021/10/01(金) 17:18:42.15ID:3yqFz9yL
>>59
自分へのレスですか?
自分へのレスですか?
2021/10/01(金) 17:19:52.97ID:hHr0ZnR0
android系では去年からもうflutterでコードベースの宣言的UIやってるし、android/kotlinでもjetpack compose使い始めたし、今年に入ってからxml一切触ってねぇわ
2021/10/01(金) 17:31:51.92ID:hHr0ZnR0
他は進化してるのに、今年正式にリリースされるUIフレームワークでもまだxaml??
絶望だろ
cometは実用になってるのか知らんが
つか、avalonia UIとUnoPlatformとか、Microsoftがしっかり方向性示さなかったからみんなで戦力分散してみんなで自滅してるよな..
絶望だろ
cometは実用になってるのか知らんが
つか、avalonia UIとUnoPlatformとか、Microsoftがしっかり方向性示さなかったからみんなで戦力分散してみんなで自滅してるよな..
2021/10/01(金) 19:19:18.74ID:moK98JZN
UIをXMLで記述するのは筋は良いよ。
ただツール側が大変。
だからXML止めたところは単なる妥協。
ただツール側が大変。
だからXML止めたところは単なる妥協。
2021/10/01(金) 19:24:01.74ID:Utvf4DLW
逆だよ。XMLの方がツールは作りやすい。
でも頑張って高機能なツールを用意するより、手書きの負荷を下げてツールは最低限プレビューするだけの方が、
開発者にとってもツール側にとっても楽であることに業界が気付き始めた
でも頑張って高機能なツールを用意するより、手書きの負荷を下げてツールは最低限プレビューするだけの方が、
開発者にとってもツール側にとっても楽であることに業界が気付き始めた
2021/10/01(金) 20:09:22.18ID:b8RMXs3B
CSSのほうが次元が違うぐらい凄いぞ
XAMLじゃマシなUIは作れん
画像はるしか方法がない
そするとアニメーション出来ないけど...
XAMLじゃマシなUIは作れん
画像はるしか方法がない
そするとアニメーション出来ないけど...
2021/10/01(金) 20:23:02.15ID:x1xpreRL
もうFlutterでよくね?
2021/10/01(金) 20:28:56.74ID:Utvf4DLW
XAMLはWYSIWYGなツールで編集することを大前提として設計されている上、GUIフレームワークのオブジェクトモデルの設計にも引っ張られるから、
処理系として出力だけしか考慮しなくていいCSSと比較するとどうしても記述性や表現力の面では劣る
処理系として出力だけしか考慮しなくていいCSSと比較するとどうしても記述性や表現力の面では劣る
2021/10/01(金) 20:36:30.93ID:hHr0ZnR0
コードで書く宣言的UI方が100倍楽
普通にコードを書く延長線上でいけるし、if文使って切り替えたり、for文でループ回したり簡単に自由自在
xamlでやろうとするとコードビハインドもできるがMVVMぎちぎちに要求されるからうざいわ
ValueConverterやらTriggerやらVisualStateManagerやら色んな概念でてきていったりきたり
普通にコードを書く延長線上でいけるし、if文使って切り替えたり、for文でループ回したり簡単に自由自在
xamlでやろうとするとコードビハインドもできるがMVVMぎちぎちに要求されるからうざいわ
ValueConverterやらTriggerやらVisualStateManagerやら色んな概念でてきていったりきたり
2021/10/01(金) 21:02:00.88ID:Utvf4DLW
MSがツール作るの得意すぎたせいで、みんなWYSIWYGなツールを使ってUIを作ることが当然で開発効率も良いと思い込まされてきたんだよ
ここにいるのはその最後の残党で、彼らは既にXAMLを手書きした方が早いと気付いているにも関わらず、
未だにツールの都合に合わせて面倒なXMLを記述しなければならないという矛盾には気付いていないんだ
もうちょっとだから優しい目で見守ってやってくれ
ここにいるのはその最後の残党で、彼らは既にXAMLを手書きした方が早いと気付いているにも関わらず、
未だにツールの都合に合わせて面倒なXMLを記述しなければならないという矛盾には気付いていないんだ
もうちょっとだから優しい目で見守ってやってくれ
2021/10/01(金) 21:15:45.36ID:VrVVYUYc
可変レイアウトを前提とするかが分かれ道な気がする
2021/10/01(金) 21:21:42.73ID:E9WNTUHI
WinFormはポトペタに頼るけどWPFはWISYWIGといっても確認用くらいしか使わんなあ
慣れればXAMLべた書きでほぼ思い通りのレイアウトできるし
慣れればXAMLべた書きでほぼ思い通りのレイアウトできるし
2021/10/01(金) 23:09:37.93ID:C/dNFuqv
>if文使って切り替えたり、for文でループ回したり簡単に自由自在
それ宣言的って言わんw
それ宣言的って言わんw
2021/10/01(金) 23:17:07.18ID:TQ4JmsDr
2021/10/01(金) 23:33:34.54ID:C/dNFuqv
>データの流れが単方向になっているならちゃんと宣言的なんだよなあこれが
「宣言的」の定義が捻じ曲がってる気がする
「宣言的」の定義が捻じ曲がってる気がする
2021/10/01(金) 23:40:23.81ID:hHr0ZnR0
今時の宣言的は違うだろ
画面更新において宣言的に書けるから宣言的なんだよ
画面更新において宣言的に書けるから宣言的なんだよ
78デフォルトの名無しさん
2021/10/01(金) 23:45:58.73ID:hHr0ZnR0 for文、if文とか入ろうが、それらはある一瞬のUIを記述してるから宣言的なんだよ
if文、for文で、前のUIの状態を変更してる訳じゃないんだよ
if文、for文で、前のUIの状態を変更してる訳じゃないんだよ
2021/10/01(金) 23:46:26.37ID:TQ4JmsDr
>>76
宣言的UI、でググってみ
君の思ってるfor使ったら宣言的じゃないとかいうのは表面的なコーディングスタイルの問題でしかなくて、気に入らないならLINQ使うとかやりようはいくらでもある
UIでいう「宣言的」ってのは、画面がどうあるべきかというのを宣言したら自動的にそのようになるってこと
それがWPFではXAMLであり、React等ではコードによって生成された仮想DOMであるというわけだ
宣言的UI、でググってみ
君の思ってるfor使ったら宣言的じゃないとかいうのは表面的なコーディングスタイルの問題でしかなくて、気に入らないならLINQ使うとかやりようはいくらでもある
UIでいう「宣言的」ってのは、画面がどうあるべきかというのを宣言したら自動的にそのようになるってこと
それがWPFではXAMLであり、React等ではコードによって生成された仮想DOMであるというわけだ
2021/10/01(金) 23:59:18.68ID:VrVVYUYc
いや全く分からん
2021/10/02(土) 00:06:30.03ID:zLcclBIg
2021/10/02(土) 00:33:48.60ID:zLcclBIg
宣言的UI この状態のときはこんな画面になるということ記述していくスタイル
if文とかfor文とか使う、使わないとか重要じゃない
というかif文,for文とかその他類似のもの使わないと宣言的UIで画面更新できん
if文とかfor文とか使う、使わないとか重要じゃない
というかif文,for文とかその他類似のもの使わないと宣言的UIで画面更新できん
2021/10/02(土) 00:56:36.82ID:yLGZuBe3
ifとかforとかがSGMLの中に出てくるのって美しくないから個人的には好かん
JSPとか最悪だったし
JSPとか最悪だったし
2021/10/02(土) 01:10:52.06ID:zLcclBIg
xamlも同じ
xamlでこの状態のときにこういうUIになるってxmlで記述してるよね
更にこれが進化して
この状態のときにこういうUIになるってifやforなどのプログラムコードで記述してるのが最新の宣言的UI
馴染みのプログラムコードで書けるから楽
制御構文をもたないxmlのようなものでUIを記述するのが宣言的UIというのは昔の話?
xamlでこの状態のときにこういうUIになるってxmlで記述してるよね
更にこれが進化して
この状態のときにこういうUIになるってifやforなどのプログラムコードで記述してるのが最新の宣言的UI
馴染みのプログラムコードで書けるから楽
制御構文をもたないxmlのようなものでUIを記述するのが宣言的UIというのは昔の話?
2021/10/02(土) 02:26:37.11ID:tcgPJQJ0
XAMLでWYSIWYG使うって君WPF使ったことないでしょ
2021/10/02(土) 02:45:53.54ID:xagjL2JO
むしろ宣言的でないUI定義ってのを教えてくれ
2021/10/02(土) 05:29:37.06ID:XDS1lwbt
UI部にif文書くか?
ロジックが入ると面倒だから、渡されたpropsをそのまま代入しない?
ロジックが入ると面倒だから、渡されたpropsをそのまま代入しない?
88デフォルトの名無しさん
2021/10/02(土) 06:26:11.63ID:yaQQxYBO XAMLがいいからWPF使ってるんだよな
2021/10/02(土) 09:22:51.66ID:JC0eHLmL
>>66
IDEの開発元がXMLよりコードでUI書く形式の方がIDE作るのが楽だと言ってるんだが。
コードよりXMLの方が画面イメージが直感的に分かりやすいが、そのメリットはIDE開発側が楽するために捨てたいんだよ。
IDEの開発元がXMLよりコードでUI書く形式の方がIDE作るのが楽だと言ってるんだが。
コードよりXMLの方が画面イメージが直感的に分かりやすいが、そのメリットはIDE開発側が楽するために捨てたいんだよ。
2021/10/02(土) 09:24:55.11ID:LE4xxzH9
>>86
WPF+MVVMの場合、宣言的なUI定義を記述する方法に関しては>>81のようなスタイルよりも宣言的といえる。コードと違い一切手続きを書いてなくて、バインディングを使った完全に静的な記述のみだからね。
じゃあ何が問題かというと、バインディングの代償としてVとVMとの結合が強くなっているために、実質的にビューが固有の状態を持ってしまっているのに近い状況になるケースが多いことだ。
たとえば>>81のボタンの例で言うと、MVVMでMの状態Aに基づいてボタンを動的に追加したいがMを直接バインドできない場合、
VMの持つコレクションを見て既にアイテムがない場合のみアイテムを追加するようなコードを書くことになる。これは明らかに宣言的ではないよね。
WPF+MVVMなら例えば変更が入るたびに毎回VMをMに基づいて新しく作ってDataContextを設定し直すようにすれば完全に宣言的にできるわけだけど、
これをやると変更の必要のないボタンまで毎回作り直しが走ってしまい、実用的ではない。
それを>>81ではフレームワーク側が自動的に差分を取って賢く画面に反映してくれるというわけ。
WPF+MVVMの場合、宣言的なUI定義を記述する方法に関しては>>81のようなスタイルよりも宣言的といえる。コードと違い一切手続きを書いてなくて、バインディングを使った完全に静的な記述のみだからね。
じゃあ何が問題かというと、バインディングの代償としてVとVMとの結合が強くなっているために、実質的にビューが固有の状態を持ってしまっているのに近い状況になるケースが多いことだ。
たとえば>>81のボタンの例で言うと、MVVMでMの状態Aに基づいてボタンを動的に追加したいがMを直接バインドできない場合、
VMの持つコレクションを見て既にアイテムがない場合のみアイテムを追加するようなコードを書くことになる。これは明らかに宣言的ではないよね。
WPF+MVVMなら例えば変更が入るたびに毎回VMをMに基づいて新しく作ってDataContextを設定し直すようにすれば完全に宣言的にできるわけだけど、
これをやると変更の必要のないボタンまで毎回作り直しが走ってしまい、実用的ではない。
それを>>81ではフレームワーク側が自動的に差分を取って賢く画面に反映してくれるというわけ。
2021/10/02(土) 09:26:25.38ID:uPQB1g5P
>>81
・declarative(宣言的)なコード
状態 A なので、ボタンを 3 つ表示する。
・imperative(命令的)なコード
状態 A なので、ボタンを 3 つ表示する必要がある。
ただし、すでに中央のボタンを表示しているので、その左右にひとつずつボタンを追加する。
まじで意味わからんw
・declarative(宣言的)なコード
状態 A なので、ボタンを 3 つ表示する。
・imperative(命令的)なコード
状態 A なので、ボタンを 3 つ表示する必要がある。
ただし、すでに中央のボタンを表示しているので、その左右にひとつずつボタンを追加する。
まじで意味わからんw
2021/10/02(土) 09:33:52.46ID:LE4xxzH9
2021/10/02(土) 09:54:12.88ID:RYEShMTz
94デフォルトの名無しさん
2021/10/02(土) 10:57:58.75ID:XIMD44Dk WinFormのデザイナーが吐いたコードが宣言的の良い見本
95デフォルトの名無しさん
2021/10/02(土) 12:22:55.97ID:yLGZuBe32021/10/02(土) 12:44:51.30ID:LHZxrmv8
相変わらず本末転倒ですなあ
2021/10/02(土) 13:43:37.05ID:3200/Rnj
>>95
それを俺に言われても困るw
それを俺に言われても困るw
98デフォルトの名無しさん
2021/10/02(土) 16:03:48.55ID:yaQQxYBO ほとんどのことはContentControl使えば動的に変更できると思う
2021/10/02(土) 17:46:31.63ID:xagjL2JO
100デフォルトの名無しさん
2021/10/02(土) 17:56:52.96ID:GuR5jvpG このスレ、WPF、XAML知らないで語っちゃう人が居座ってるからなw
昔から知識増えてないし。
昔から知識増えてないし。
101デフォルトの名無しさん
2021/10/02(土) 18:42:10.72ID:vbArKetj102デフォルトの名無しさん
2021/10/02(土) 18:53:29.17ID:7VMWhHgt へぇ
103デフォルトの名無しさん
2021/10/02(土) 19:02:37.65ID:0lneUYYy なにかを批判する人がその批判対象のことをよくわかってないってのはよくある話。
そもそも使わんだろうしな。
そもそも使わんだろうしな。
104デフォルトの名無しさん
2021/10/02(土) 19:05:15.85ID:UVsuyRQN へえ
105デフォルトの名無しさん
2021/10/02(土) 20:00:52.83ID:vWt6r1kN りゅうちぇる
106デフォルトの名無しさん
2021/10/02(土) 20:49:49.37ID:9KIjFSXT 静的な記述というからStaticResourceの話かと思ったら、そんなことはなかった
107デフォルトの名無しさん
2021/10/03(日) 01:34:09.16ID:CWstO9lB >>101
親VMが子VMのコレクションを持つことは普通にあるよ
それをItemsControlに渡す
ObservableCollectionを使って自前でやってもいいけど、ReactivePropertyのToReadOnlyReactiveCollectionを使うと楽
https://blog.okazuki.jp/entry/2015/02/15/231155
親VMが子VMのコレクションを持つことは普通にあるよ
それをItemsControlに渡す
ObservableCollectionを使って自前でやってもいいけど、ReactivePropertyのToReadOnlyReactiveCollectionを使うと楽
https://blog.okazuki.jp/entry/2015/02/15/231155
108デフォルトの名無しさん
2021/10/03(日) 11:13:15.32ID:WVFbsqnO >>103
じゃ批判するなって話だわな
じゃ批判するなって話だわな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- ミス・ユニバース フィンランド代表の「つり目」写真が波紋… 本人釈明も批判やまず 協会謝罪「徹底的に検証」へ [冬月記者★]
- 自民・麻生太郎副総裁 石破政権の1年は「どよーん」 高市政権発足で「何となく明るくなった」「世の中のことが決まり動いている」★2 [Hitzeschleier★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- ゆたぼん 二重手術を報告「めちゃくちゃ気に入っています」 [muffin★]
- 【山形】クマ駆除で誤射した猟友会隊員に町が1663万円請求へ...弾当たり男性大けが2023年 小国町 [nita★]
- トランプ、G7に代わるcore 5を発表 [805596214]
- ローソン セブン ファミマ どこ行くべき?
- 中国人、ガチ超正論。「日本人がアイヌに対してやったことを『問題ない』とするなら、中国が日本人に同じことをしても文句ないだろう?」 [314039747]
- 【悲報】新米、全く売れなくて倉庫が満杯になってしまうwwwwwwwwwwwwwwwwwwww [802034645]
- 木曜日のんなっしょい❗(・o・🍬)仕放題スレ🏡
- 【悲報】日本共産党、ツイッター速報にブチギレ法的措置WWWWWWWWWWWWWWWWWWWWWWWWWWWW [935793931]
