[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 09/07 23:20 / Filesize : 232 KB / Number-of Response : 1007
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2023/01/22(日) 05:53:16.97 ID:oY263ilm.net]
WPF(Windows Presentation Foundation)について語るスレ。

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

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

コードを貼る場合は以下のサイトの利用をお勧め。
https://ideone.com/

784 名前:デフォルトの名無しさん mailto:sage [2023/08/18(金) 20:21:20.96 ID:ubEEPNgg.net]
>>775
そんな違わなくね

785 名前:デフォルトの名無しさん mailto:sage [2023/08/18(金) 20:31:42.39 ID:mKYiQp9K.net]
>>775
とりあえずダークモードならかっこいいって思ってるでしょ

786 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/08/18(金) 21:57:15.17 ID:ZBuWhXbf.net]
普段はJaneStyle使ってましたが、ご推察の通り7月のゴタゴタで専ブラ作ってみようと思い立った。
事前に色々調べて、8月初めから作成に着手して昨日なんとか形になった。

確かにコンセプトって言われると困るけど、自分の中ではJaneStyleの使用をやめたいっていう単純な理由。
Windows環境でさくっと読み書きできるツールになればいいかなと。
本業はC#でWebアプリのバックエンドをやってる。WPFは数年前にちょろっとやったのを必死に思い出しながらというところ。
GUIアプリの経験があまりないので、業務にも耐えうるようなものになっているか知りたかった。
.NET7にしたのは最新のC#の勉強も兼ねてってことなのでご容赦を。

9月以降もdatアクセス手段を提供してくれるなら開発を続けたいけど、またAPI Keyとか始まったら諦めるしかないかも。

UIが野暮ったいのは時間をかければ治せるかもだけど、鯖側の仕様変更はどうしようもないです

787 名前:デフォルトの名無しさん mailto:sage [2023/08/18(金) 22:03:57.97 ID:o8PnwUuK.net]
>>775
大差なくて草なんだが

788 名前:デフォルトの名無しさん mailto:sage [2023/08/18(金) 22:22:27.91 ID:VmqYer8d.net]
完全にスレチなんだけどコンセプトはそんなに大げさに考えなくていいと思うよ

従来のアプリにしたいのかwebライク(YahooやBingのポータル風とか)なのか
jane styleを踏襲したいのか他のアプリを踏襲したいのか
一度の沢山スレを表示したいのか(その方式も旧tweetdeckやマルチwindowなどいろいろ)1つだけでいいのか
遊びを多く入れたいのか実用本位なのか
拡張性を充実するのか自分で全部実装したいのか
重くてもいいのか軽量をめざすのか

可能性は無限大

789 名前:デフォルトの名無しさん mailto:637 [2023/08/18(金) 22:28:53.50 ID:IBEnmxTA.net]
>>775
笑うなw

790 名前:デフォルトの名無しさん mailto:637 [2023/08/18(金) 22:34:16.95 ID:IBEnmxTA.net]
5chはスマホアプリのchmate位で十分だよ。

791 名前:デフォルトの名無しさん mailto:sage [2023/08/18(金) 22:36:33.99 ID:G7CpfWCv.net]
chmateがwindowsで動く時代だからな

792 名前:デフォルトの名無しさん mailto:sage [2023/08/18(金) 23:07:15.21 ID:VmqYer8d.net]
大体1個目はjane系のクローンになってしまう
やればやるほどクローンの完全実装はそんなに楽じゃないと気が付く

頑張って実装を進めて自作機能も充実させたところででも別にjaneでいいんじゃないかと言うことになる
そこで終わる
クローンの機能の実装のためのコーディングは非常にやりがいはあるけどそれ本当に必要な努力なのかと

こだわりがないなら一個目は適度なところで切り上げて別のコンセプトで作るのがおすすめ



793 名前:デフォルトの名無しさん [2023/08/18(金) 23:08:53.42 ID:i6F+l2qQ.net]
>>775
え、もしかして釣りだったの?

794 名前:デフォルトの名無しさん mailto:sage [2023/08/18(金) 23:14:02.82 ID:TTcuER0I.net]
何度も書いたが評価してって言って何を評価してもらいたいのかよくわからんのよ
使いやすくみんなに使ってもらいたいアプリとして評価して?
と思ったからユーザ視点でコンセプトとか求めたけど

単に技術的にコードレビューして評価してほしいなら
アプリのコンセプトなんて求めないし

君が単に「評価」してといったがみんなに何をしてもらいたっかったわけ?

795 名前:デフォルトの名無しさん [2023/08/18(金) 23:19:42.15 ID:i6F+l2qQ.net]
> WinUI 3.0でAcrylic化してるしそのためにWPFではなくWinForms使ってる

ここでWinFormsが出てくるのが本当に分からない

796 名前:デフォルトの名無しさん mailto:sage [2023/08/18(金) 23:21:02.08 ID:qWXv9m9x.net]
わからんのなら

797 名前:黙ってろよ []
[ここ壊れてます]

798 名前:デフォルトの名無しさん mailto:sage [2023/08/18(金) 23:25:04.25 ID:TTcuER0I.net]
自分がしゃべりたいようにしゃべるだけだよ
カス

799 名前:デフォルトの名無しさん mailto:sage [2023/08/19(土) 00:32:40.65 ID:GSj6RrWf.net]
そもそも>>750の専ブラはThemeがLightなアクリルなんだが、彼はダークならアクリルだと思っているんだろうか?

800 名前:デフォルトの名無しさん mailto:sage [2023/08/19(土) 01:56:58.32 ID:1/hroNhs.net]
WPFのスレでWPFアプリを作って公開したらWinFormsでやれと怒られる。
理不尽すぎる

801 名前:デフォルトの名無しさん mailto:sage [2023/08/19(土) 02:11:07.74 ID:C10c8hLy.net]
>>791
何言語?

802 名前:デフォルトの名無しさん mailto:sage [2023/08/19(土) 08:33:41.11 ID:wdqaA6jW.net]
効いてて草



803 名前:デフォルトの名無しさん mailto:sage [2023/08/19(土) 08:57:39.75 ID:+QDwvDWv.net]
作りたいなら手を付ければいいのにな

モックなりプロトタイプなり、人によっては基本設計なりスケッチなり、
やりたいアイデアがあるなら端からやってみればいい

804 名前:デフォルトの名無しさん mailto:sage [2023/08/19(土) 10:14:20.56 ID:xxLsZdb0.net]
>>775
フォントってモニターの解像度が高いと綺麗に見えるんだよ
そんなことも知らずにフォント叫んでるのお前だけだからな

805 名前:デフォルトの名無しさん mailto:sage [2023/08/19(土) 11:39:14.41 ID:Wl/qjPve.net]
そういや、DATアクセスは8月まではフリーアクセスどうこう言ってるけど
運営は8月移行はどうなるかわからんとか言ったん?

806 名前:デフォルトの名無しさん mailto:sage [2023/08/19(土) 14:14:58.58 ID:Wl/qjPve.net]
うんこWinUI 3の最新版リリースされたやん
Version 1.4 Preview 2
次がStableか
つかさ、新しいItemsViewコントロールとか
最初
ListView/GridView

ItemsRepeater

ItemsView

807 名前:デフォルトの名無しさん mailto:sage [2023/08/19(土) 14:19:30.21 ID:Wl/qjPve.net]
The new ItemsView control displays a data collection. ItemsView is similar to the ListView and GridView controls, but is built using the ItemsRepeater, ScrollView, ItemContainer and ItemCollectionTransitionProvider components. It offers the unique ability to plug in custom Layout or ItemCollectionTransitionProvider implementations
なんだItemsViewはItemsRepeaterなどの合体コントロールか

で新しいレイアウトのLinedFlowLayoutと
AnnotatedScrollBarか

808 名前:デフォルトの名無しさん mailto:sage [2023/08/19(土) 14:33:48.82 ID:Wl/qjPve.net]
ItemsRepeaterの問題は選択機能がなく、自前で実装(見た目とかも)しなきゃいけなく
億劫だったが
ItemsViewはそこら辺もListView/GridView見たくやってくれるようなったんだよね?

809 名前:デフォルトの名無しさん mailto:sage [2023/08/20(日) 20:28:42.15 ID:N/OxtUO+.net]
ちゃんと手を動かして形にしてるだけ偉いと思うんだ
夏休みダラダラしてた俺とは天と地ほど差がある

810 名前:デフォルトの名無しさん mailto:sage [2023/08/20(日) 20:43:28.47 ID:yJmfO0+S.net]
今はさすがに休もうよ
秋はコーディングの季節だ!

811 名前:デフォルトの名無しさん mailto:sage [2023/08/20(日) 21:50:19.57 ID:m38bh0Ky.net]
近頃は秋なんかほとんどないけどね。

812 名前:デフォルトの名無しさん mailto:sage [2023/08/21(月) 10:28:12.08 ID:ol1P3YlW.net]
>>779
UI/UXは技術じゃなくセンスだけども、頑張って欲しい
テーマを選べるだけでもいいかもしれないが
あとやっぱり機能として、スレ立ては欲しいな



813 名前:デフォルトの名無しさん mailto:sage [2023/08/22(火) 22:27:09.72 ID:gdIlDAxT.net]
Vmという接頭辞がついているのにviewmodelじゃなかったり、過去の使われなくなったコードが全部残ってたり、1クラスが1万行超えてたりetcetc
おまけにそもそも設計のドキュメントは一切無い。外部向けの資料のみ。ひどい会社に来てしまった……

814 名前:デフォルトの名無しさん [2023/08/22(火) 23:11:38.63 ID:6gJfdiDb.net]
JTCあるある

815 名前:デフォルトの名無しさん mailto:sage [2023/08/23(水) 00:06:39.19 ID:nS+GPZ+c.net]
>>805
そういう愚

816 名前:sはマ板でやれ
だからお前は駄目なんだよ
[]
[ここ壊れてます]

817 名前:デフォルトの名無しさん mailto:sage [2023/08/24(木) 01:54:01.54 ID:9YaJu4I5.net]
>>751
datのフリーアクセスって8月いっぱいなの?

818 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/08/24(木) 20:49:59.75 ID:FZQDzoDX.net]
>>804
スレ立てテストできる板ってどこかにありますか?

819 名前:デフォルトの名無しさん mailto:sage [2023/08/24(木) 20:56:22.03 ID:U1/Wc6cv.net]
>>809
Anarchy実況
https://agree.5ch.net/liveanarchy/

数分で消えるしdatも残らず消滅するから気楽にテストできる

820 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/08/24(木) 21:07:04.44 ID:FZQDzoDX.net]
>>810
ありがとうございます。機能追加してみます

821 名前:デフォルトの名無しさん mailto:sage [2023/08/24(木) 22:13:47.33 ID:Tz9EhHoC.net]
がんばれ!

822 名前:デフォルトの名無しさん mailto:sage [2023/08/24(木) 23:13:10.10 ID:ypVJRmCU.net]
>>811
あのコードは何人で書いたんだ?



823 名前:デフォルトの名無しさん mailto:sage [2023/08/24(木) 23:34:26.49 ID:Ax2+ubkj.net]
どう見ても一人だろ

824 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 11:36:32.15 ID:UpJ7Bk8S.net]
初心者じゃないんだから、5chブラウザつくるとしても
少し挑戦的な事してここの視聴者楽しませてよ

825 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 12:52:15.75 ID:d6TpiO9T.net]
ツマンネ。もっと気の利いたこと書き込めよ

826 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 14:29:43.74 ID:QKHGYPpz.net]
コード見るとわかるけど違和感しか感じない
C++?とか

827 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 14:37:18.36 ID:QKHGYPpz.net]
ともかくいろいろとちぐはぐしてる
人に見られることを前提とした普通に自分で組むには不要なコメントとか
大きなサービスとか…

828 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 15:09:41.41 ID:hcnbZQTk.net]
なんだそのふわっとした具体性のない指摘は
無理にケチ付けることないのに

829 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 15:24:12.70 ID:QKHGYPpz.net]
コードを見ればわかるよ

830 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 15:35:06.57 ID:QKHGYPpz.net]
もともとc++などを含めた他の言語で野良コードを書いてた人が
ビジネス向けの専門学校みたいなところでC#を学んでDIとか色々知識があるような印象

そして丁寧にコードを書いてるけどまだC#が血肉にはなってないので元の癖が出る
それか仲間の先生に当たる人が乱雑だったので変な癖が残っているか

誰か別の人間がところどころコードを書いたのかコピペしたのか

831 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 15:44:44.01 ID:FILnRN1t.net]
本当に具体性のない空っぽな指摘だな
こういうのが上司につくと辛い

832 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 17:09:36.31 ID:UpJ7Bk8S.net]
https://devblogs.microsoft.com/ifdef-windows/windows-community-toolkit-8-0-pre-release/



833 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 17:15:40.72 ID:lyifkqna.net]
>>822
上司じゃなくてもキツイだろ
関わりたくねーわ

834 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 17:15:42.20 ID:QKHGYPpz.net]
>>822
いやいや指摘でもなんでもない
違和感を書いてる
そして何も気が付かないにぶーい人に自分の見解を伝えてる

835 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 17:28:24.81 ID:QKHGYPpz.net]
このスレの他の人はオリジナリティの話をしてる
昔からあるドラマや漫画で出てくるような芸術作品や演奏に対する指摘のようなもので

君の作品には情熱が感じられない教科書通りでつまらないみたいな話
いまだとばらかもんが丁度似た様な話をしてる

自分は今現在はそこまでの話をする段階にないと思う
適当なところで切り上げて色々デザインして経験してみたほうがいい気がする
その後に作ったものが自分が楽しんで使ってることに喜びを感じるレベルになれば人からもそういった面で良い評価を貰えると思う

836 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 17:41:00.84 ID:UpJ7Bk8S.net]
せっかくアプリ作って公開しましたと面白そうなネタが投下されたが
だめそうだな

837 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 17:56:06.42 ID:hcnbZQTk.net]
それっぽいこと言って偉そうにしたいだけか
どうりで中身が皆無なわけだ

838 名前:デフォルトの名無しさん mailto:sage [2023/08/26(土) 18:25:05.72 ID:W2Um6gjp.net]
アクロバティックなものを所望ならBlazor Hybridもいいと思うのよ
実用性あるかは別の問題として、前例のないことをやるという点は満たしてる

839 名前:デフォルトの名無しさん mailto:637 [2023/08/26(土) 22:00:12.76 ID:16WUCkmH.net]
書き方なんてどうでも良いのよ?
ゲイツはみんなと違う画期的なコードで時代を切り開いた。

840 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 00:46:17.43 ID:W3b+7qIa.net]
>>825
では俺も ID:QKHGYPpz のレスを見て指摘でなく違和感を書こうかな
誰の何の役にも立たない独り言なら、多数が集う掲示板でなくチラシの裏にでも書いて誰にも見せず捨てればいいのに
会話できず、するつもりもないと開き直るなら掲示板にくるのは無駄だし害悪ですらある
これに気が付かないにぶーいID:QKHGYPpzに自分の見解を伝えてみた

841 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 09:09:39.66 ID:4wYaVVdN.net]
お前の方こそブーメラン刺さってねw

842 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 11:36:52.09 ID:3H5CXIUM.net]
>>830
どんなの?



843 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 12:46:27.21 ID:W3b+7qIa.net]
>>832
そのとおりだよ。わざと >>825 を真似て醜悪な文面にしたのだから
>>831 のレスは ID:QKHGYPpz の鏡だよ

844 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 12:58:47.33 ID:t0g5o5TS.net]
そんなこともわからない>>832の頭の悪さときたら
ってことでしょ

845 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 13:51:55.91 ID:vknuNgDk.net]
viewmodelsって対応するviewに表示するためのデータとロジックを持ってるって認識で合ってる?
コード見てると他のviewmodelファイルでインスタンス化されたりプロパティが呼び出されてたりしててあれこういうのありなの?って

846 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 14:43:13.39 ID:Qf4ZUzrP.net]
例えばどのファイルのどこがおかしい、改善すべきと言わないと

847 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 21:19:33.66 ID:vknuNgDk.net]
機能修正の事前準備としてリファクタリングさせてください
とか言ってもひとまず機能修正優先でとか動いてるんだから余計なことするなとか言われるのがオチだよね

848 名前:デフォルトの名無しさん mailto:sage [2023/08/27(日) 21:40:22.11 ID:IUQW/AR/.net]
もうその5chブラウザの事ほっとけよ
作者があまり顔出さないのに
作者不在のままここで毎回ゴタゴタが発生であほらしい

ほっとくのが吉

849 名前:デフォルトの名無しさん mailto:sage [2023/08/28(月) 19:25:42.52 ID:Ed5E1clR.net]
心理的安全性の低いスレだな

850 名前:デフォルトの名無しさん mailto:sage [2023/08/28(月) 19:58:34.85 ID:BueC5+dS.net]
攻撃しても何もいいことはないのになあ…
googleの本でも読めば良いのに

851 名前:デフォルトの名無しさん mailto:sage [2023/08/28(月) 20:00:38.72 ID:BueC5+dS.net]
ふと思ったことや感じたことを言うと叩かれる → 心理的安全性が低い
他人の行ったことを否定する → 心理的安全性が低い

本人に自覚がないのが恐ろしい

852 名前:デフォルトの名無しさん mailto:sage [2023/08/28(月) 20:44:27.43 ID:QJ/DbKdl.net]
マスゴミって批判しないで、記者が萎縮してしまいます。でも自分達は批判も攻撃もするけどね。みたいな二重基準?



853 名前:デフォルトの名無しさん mailto:sage [2023/08/28(月) 21:29:09.23 ID:6uHv/wqC.net]
技術的な話とかに関して色々批判はいいと思うけど
最後は人格攻撃と不毛な事になるのが多いからなw

854 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/08/30(水) 09:16:29.73 ID:rmxbhQ8d.net]
MVVMって例えばWPFでいうなら、VMでSystem.Windows名前空間をusingしないっていう認識で合ってる?
要はVMだけでOS非依存のdll化できるか

855 名前:デフォルトの名無しさん mailto:sage [2023/08/30(水) 10:42:16.63 ID:mm/q7vOw.net]
そんな定義は聞いたことないな

856 名前:デフォルトの名無しさん mailto:sage [2023/08/30(水) 11:12:09.35 ID:FKrsdOsE.net]
究極の疎結合って意味では合ってる
CommunityToolkit.mvvmもプラットフォーム非依存だし極端な話、上側がWinUI3でもVMそのまま動くってことでしょ

ただ実際問題すげーめんどくさいとは思うがw

857 名前:デフォルトの名無しさん mailto:sage [2023/08/30(水) 13:38:27.33 ID:Zjd+Qgp2.net]
だね、5chブラウザのほうでViewModelでウィンドウクラス?を参照してたのは気になってた

まぁ、最初の1回だけは勉強のためMVVMガチガチにやって頑張ってもいいし
そこは本人次第

858 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/08/30(水) 14:56:17.68 ID:rmxbhQ8d.net]
ありがとう、System.Windowsを分離してみる。


>>848
確かにWindowは分かりやすく「ん?」ってなるけど、
ClipBoardとかBitmapImageとかもみんなSystem.Windows配下なんだよね。
これらの処理を全部持ってくと、Viewにも結構ロジックが必要になりそう。
UIフレームワーク固有の機能なんだから疑問を持つのがおかしいのかもだけど

859 名前:デフォルトの名無しさん mailto:sage [2023/08/30(水) 23:23:43.59 ID:I012WzjW.net]
View固有の機能じゃなければ分離しなくてもよい

860 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 00:04:15.85 ID:tqam1yBh.net]
その前にenumの機能のおさらいをしたほうが良い

861 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 01:17:12.25 ID:UxD03clT.net]
MVVMといえばうちの会社でのプロジェクトでさぁ例えばだけどmodelにcircleクラスがあるとするじゃん
んでそれをコンストラクタの引数に取るVmCircleなるクラスをわざわざ作るのよ。んでそれを各種viewmodel内部でいじるんだけど、VmCircleはCircleのviewmodelとか言ってるの
おかしいでしょそれはviewmodelでもなんでもないでしょって言ったんだけどいやviewmodelだって
これ俺がおかしいのか?

862 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 01:44:14.25 ID:k/7LWfvb.net]
>>852
サーバサイドでも使う Entity とかを .NET Standard で共有して、
クライアントサイドではそれをINotifyPropertyChanged を実装したクラス (VM) に変換する必要がある、
もしくは将来的に変更通知が必要になる可能性を見越してそうしておく、
とかならありえなくはないんじゃない?



863 名前:デフォルトの名無しさん [2023/08/31(木) 07:06:57.56 ID:BoGIe8nI.net]
>>845
変な理解しているな。
ViewModelでBitmap加工などは普通にやる。 当然、System.Windowsをusingする。
Viewのエレメントに直接アクセスするなという事だけ。 いわゆる委譲だな。
例えば、Viewにパラメーター渡すために、IxxxViewRepositoryインターフェースをViewに継承させ、そのレポジトリをViewModelにインジェクションすればそれでOK。
ContainerのChildrenは、ViewModelにダイナミック生成バインドできないので、Add、Remove、Move操作をそういう方法でやる。
DDDなどのクリーンアーキにチャレンジしてみれば、その辺はインチュイティブに理解できるようになるよ。

864 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 07:56:35.25 ID:UxD03clT.net]
>>853
そもそもviewmodelってviewとmodelをつなぐ役割をするものじゃないんですかね
別に対応するviewなんて何も無いただデータとそのメソッドを持つだけのクラスをviewmodelと言えるんでしょうか

865 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 11:36:17.81 ID:GMvg4a1K.net]
https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/stable-channel#version-14

うんこ品質の時間です
突然1.4がリリースされやがった
9月末が予定じゃなかった?

866 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 12:07:44.06 ID:+9swg57/.net]
>>854
それ、すごい労力かかる割にはWPF専用のViewModelになっちゃうじゃない。
いまUIライブラリ移行の過渡期なんだし、再利用できるViewModelとか考えないの?

867 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 12:40:08.29 ID:k/7LWfvb.net]
>>855
俺の理解が間違ってるかもしれないけど、
その Circle クラス?が画面上の円のコントロールかなにかの DataContext になってるなら ViewModel であるといえるんじゃないだろか。
画面上のどこにもバインドしてないんなら違うと思うけど。

例えば ListBox の ItemsSource にバインドするコレクションの各要素の型は ViewModel と言えると思う。
ListBoxItem を 1つの View として見た時にその DataContext になるから。

↓これとか ItemViewModel というのを定義してる。
https://blog.okazuki.jp/entry/2016/04/08/233620
ItemViewModel

868 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 13:22:03.44 ID:WwAx/vtc.net]
viewmodelはmodel用のviewじゃなくてview用のmodel
各種viewmodelでcircleモデルのview用の変換やviewからの入力に対してモデルとの橋渡しをする場所としてvmcircleを作ってるんならまあ理解できる

869 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 14:00:23.53 ID:+wESSzqb.net]
何なら納得するんだろうか?

画面に複数のタブページがあるアプリがあって
メインVMに複数のタブページ用のVMがリストなどで持たれている(直接のモデルじゃなくて)

これでおかしいと思うのかどうか

870 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 15:36:13.08 ID:KSwuKB63.net]
XAML Islandsとか名前がよくない
絶海の孤島のイメージだ

871 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 15:53:03.73 ID:A6umWt5F.net]
Islandsで孤島?

872 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 16:07:40.97 ID:qE8kvwKZ.net]
複数形だから孤島ではないな



873 名前:デフォルトの名無しさん [2023/08/31(木) 16:52:36.04 ID:BoGIe8nI.net]
>>857
VieModelの再利用?
再利用するのはViewの方であって、ViewがViewModelへのバイディング権がある。
それで、フレキシブルな画面構築ができる。
ロジックの再利用は、Domain層にまとめる。

874 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 17:36:52.11 ID:+9swg57/.net]
>>864
ん?例えばMAUIとかWASMに移植するときはViewModelを全部作り直すってこと?
大変じゃね?っていうかそれってMVVMじゃなくね?

MVVMって画面とロジックの分離であって、画面が変わるたびに作り直さなくちゃいけないなら
それはViewModelではなくViewの範疇では?

875 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 18:44:34.81 ID:+wESSzqb.net]
ViewModelはviewとmodelの間が互いにデコボコしてて
綺麗にくっつかない場合に間に入るつめもの

もともときれいにくっつくなら不要

Viewが変わればまた形に添ったViewModelが必要になる

876 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 19:17:40.59 ID:0zAKJthF.net]
クライアント側にあるView層にViewとViewModelがある
サーバー側にModel層があって自分の場合はREST full APIで作られたSaaS出ある場合が殆ど
業務ロジックはModel層内に全てあるので再利用可能

877 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 19:22:25.33 ID:0zAKJthF.net]
View層にはWPFを動作させるための処理しかない

View層をReactで作ってもそこにあるのはReactを動作させるための処理しかない

業務ロジックは全てサーバー側にあって全く無駄にはならない

878 名前:デフォルトの名無しさん mailto:sage [2023/08/31(木) 21:51:01.50 ID:lnQo2el+.net]
>>762
今思いついたんだが「sugar dragonfly」はどう?

879 名前:デフォルトの名無しさん mailto:sage [2023/09/01(金) 16:45:19.11 ID:ba1FgNHl.net]
機器の通信サンプルアプリをWPFで作るのは有り?
サンプルを参考にする相手がWPFを使ってるかわからないから、WinFormsの方が無難かな?
一番無難なCUI版は出来たからコアの通信部分は変わらなくて、通信結果を見やすくするだけなんだけども

880 名前:デフォルトの名無しさん mailto:sage [2023/09/01(金) 17:16:03.23 ID:E0s4hvcN.net]
ActiveXでExcel VBA対応するのが無難だな

881 名前:デフォルトの名無しさん mailto:sage [2023/09/01(金) 19:47:27.67 ID:+613Qa0i.net]
>>866
それはVMじゃない。どっちかというとMVCのCに近い。

882 名前:デフォルトの名無しさん mailto:sage [2023/09/01(金) 21:56:19.74 ID:42muqi3u.net]
>>866の説明はCよりVMよりだと思う
VMはModelを特定のView用に変換した状態を持っておくもの

MVC
Vーーーーーーーー 監視 ーーーーーーー>M
Vーーー入力ーー> C  ーーー入力ーー>M
V<ーーーーーーー 通知 ーーーーーーーーM

MVVM
Vーーー監視ーー> VM ーーー監視ーー>M
Vーーー入力ーー> VM ーーー入力ーー>M
V<ーー通知ーーー VM <ーー通知ーーーM



883 名前:デフォルトの名無しさん mailto:sage [2023/09/01(金) 22:06:47.51 ID:XOi5r4E6.net]
みんなめちゃくちゃだな..

884 名前:デフォルトの名無しさん mailto:sage [2023/09/01(金) 22:16:55.21 ID:+613Qa0i.net]
>VMはModelを特定のView用に変換した状態を持っておくもの

なにその珍解釈

885 名前:デフォルトの名無しさん mailto:sage [2023/09/01(金) 22:33:11.78 ID:dq5C6mfu.net]
一人だけ俺様理論がおるな

886 名前:デフォルトの名無しさん mailto:637 [2023/09/01(金) 22:55:04.64 ID:86UzGWyS.net]
みんなVIEWを差し替え差し替えでMODELを流用することやってるの?

887 名前:デフォルトの名無しさん mailto:sage [2023/09/01(金) 23:31:31.63 ID:hl1Bipr4.net]
いや全然

888 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 00:18:16.99 ID:fOS98KnE.net]
自己満ですなーー
WPFのMVVMがまさに究極の自己満

MVVMとかvue.jsとかangular、androidとかでも普通に使うし
そっちは実装コストもかからん

889 名前:デフォルトの名無しさん mailto:637 [2023/09/02(土) 05:21:08.01 ID:6VujaKd3.net]
android studioはwindows formのポトベタと同じ感覚なんだが?

890 名前:デフォルトの名無しさん [2023/09/02(土) 08:18:23.73 ID:Fau+Wvgs.net]
>>877
モニターアプリでは良くやるよ。
化学プラントの製品毎の画面やライン管理の製品毎の32~4096接点モニターとかね。
モニターと非常停止等の共通アクション画面なら流用する。
ただし、Viewのビハンイドコードトリミングは必要。
それらを再利用というには微妙だな。 VMはペアで消費するものと考えるのが普通。
再利用というのはロジックの再利用を言うのが一般的じゃね?

891 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 09:33:36.47 ID:fwdoqn2z.net]
結局VMに何らかの描画以外のロジックを書いてる人が多いんだろうなと
mvvm原理主義者じゃなければ別に好きなようにしたらいいんだが

WPFは結局どのように実装すべきなのかハッキリとしたパターンが確立されなかった
これが一番の問題だった

明確に役割分担してオブジェクトの生死を適切に管理してる人間がどれだけいるのか

892 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 09:49:03.02 ID:fOS98KnE.net]
>>875
あってるぞ
MをVに表示させる為に必要な形に変えたものだ
例えばM(Web APIのResult)をVM(Vにバインディンク可能なデータ型)に変換してVと接続する



893 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 10:06:25.37 ID:fwdoqn2z.net]
状態と言う意味が通じていないので話をしても無駄

v vm mでそれぞれ状態は持ってる
普通はmの状態のことを話すんだけど双方の話がかみ合っていない

894 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 10:12:13.25 ID:fwdoqn2z.net]
本来はMと全層から利用されるビジネスロジックが主体なんだけど
vmでガッツリロジックなり制御なりのコード書いてる人が多い

そういう人から見るとvmは状態を持っていると言う主張になる

895 名前:デフォルトの名無しさん [2023/09/02(土) 10:21:43.71 ID:Fau+Wvgs.net]
>>882
だね。
ViewModelはインスタンスプールの場という認識が無いとそうなるね。
Bitmap加工にしても、ロジックは別の層に置くもの。
ロジックはDomain層、ドライバーはInfrastructure層でカキコしておけば再利用というスタイルの本筋が見えてくる。

896 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 10:42:05.01 ID:ePvjWEyO.net]
wikipediaだとこうだな。VMはVが表示すべき状態を保持するというのが普通の理解だと思う。

ViewModel
ViewModel(ビューモデル)はViewを描画するための状態の保持と、Viewから受け取った入力を適切な形に変換してModelに
伝達する役目を持つ。すなわちViewとModelの間の情報の伝達と、Viewのための状態保持のみを役割とする要素である。

897 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 10:53:39.97 ID:UWvP69T4.net]
という事はバリデーションもvmじゃなくてmでやるの?

898 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 11:59:17.23 ID:+7egXD0v.net]
>>887 の定義だとちょっと密に思えてしまうな


https://learn.microsoft.com/ja-jp/dotnet/architecture/maui/mvvm

大まかに言うと、ビューはビュー モデルを "認識" し、
ビュー モデルはモデルを "認識" しますが、
モデルはビュー モデルを認識しておらず、
ビュー モデルはビューを認識していません。
したがって、ビュー モデルではビューをモデルから分離させ、
ビューとは独立してモデルを進化させることができます。

899 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 12:40:51.82 ID:CPf5VJuY.net]
君たち一旦モデルの事はわすれろよ
めちゃくちゃすぎる

900 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 13:16:00.96 ID:CPf5VJuY.net]
>>882の言うようにハッキリとしたものがないと同意した上で言わせてもらうが
>そういう人から見るとvmは状態を持っていると言う主張になる
VMは状態をもつ

めちゃくちゃすぎる
普通に状態を持つ

901 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 13:18:09.94 ID:fwdoqn2z.net]
アプリケーションの真の実態はMなんだから忘れることじゃないな
勘違いされがちだけどMはデータ置き場でもライブラリでもないアプリケーション本体

VMは表層でしかない
メッセージの仲介所
上で書かれたインスタンスプールでもない
仕事をするにあたりただどこかにあるモデルへの参照を持っているだけ

ModelAとModelBを参照して計算してModelCに入れるのはVMの仕事ではない
VMはMに単純なメッセージ飛ばすのが仕事

902 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 13:35:29.82 ID:CPf5VJuY.net]
ロジックを単にロジックと表現したりするとこみると
ロジックをビジネスロジックとプレゼンテーションロジックに分けて
考えてないよね

ここで>>882のじゃあ明確なその区別のルールは?って問題が出てくるが



903 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 13:44:31.42 ID:fwdoqn2z.net]
どうも自分の書き込み全体じゃなくて部分的な文章しか見てもらえてない気がする

>>884とかガン無視されてる

904 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 13:46:57.02 ID:fwdoqn2z.net]
あ、vmが状態を持つのはそのように書いたからであってあまり意味はない
適切なのかどうかは知らない

905 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 14:04:49.20 ID:CPf5VJuY.net]
でも>>892の見ると、君完全にFatModelの某riga◯◯氏の主張だよね

906 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 14:09:38.75 ID:fwdoqn2z.net]
>>896
誰それ?
VMは可能な限り薄くすべきだよ

907 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 14:19:20.78 ID:CPf5VJuY.net]
>VMは可能な限り薄くすべきだよ
いやいや、ViewModelは作る画面をモデル化したものだから
それは作る画面次第だから
VM薄くするために要件にまで介入する気なの?

(もちろん、VMに限らずスパッゲッティ排除したりすることはいいことだが)

908 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 14:32:46.57 ID:Opj29vAW.net]
>>888
サーバー側でも結局必要になる処理なんで
バリデーション機能を提供するWebAPI定義してそっちでやってる
パフォーマンスもローカルでやるのと変わらん

自分設計の案件は
小計行の合計値など画面に表示されるものほぼ全てサーバー側での計算値だ

909 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 14:40:30.69 ID:CPf5VJuY.net]
>メッセージの仲介所
>デコボコしてて綺麗にくっつかない場合に間に入るつめも
これが先じゃないんだよ
例えば、学生を扱う時に「Student」クラス作ってNameとかAgeとか
状態持たせて「モデル化」するのと同じように

作る画面を同じように状態抜き出してロジック与えて名前を
付けたものがViewModel

こっちが先

910 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 14:48:44.91 ID:CPf5VJuY.net]
で、ViewModelの実装において画面が複雑なら、ビューモデルに書くプレゼンテーションロジック
が複雑になるし、Modelにドメインロジックの実行を依頼したりする

だから、
>メッセージの仲介所
とか表現が極端すぎる
ViewModelは画面をモデル化したもので、立派に独自のプレゼンテーションステート
やプレゼンテーションロジックも持つ立派な1つのエンティティです

911 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 15:38:06.62 ID:5BMaIqoW.net]
>>900
>作る画面を同じように状態抜き出してロジック与えて名前を
>付けたものがViewModel
作る画面(View)のもとになるのがModelなのでその過程をどの程度意識しているかどうか
言い換えればViewを所与のものとして受け取っているかどうかの違いでは?

それ以外の点はほぼ賛同できる

912 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 16:13:13.84 ID:ePvjWEyO.net]
>>902
>作る画面(View)のもとになるのがModelなのでその過程をどの程度意識しているかどうか

アプリケーションの実装はそう考える場合があるかもしれんがMVVMパターンとして
MとVMにそういう関係があることを求めてはいないと思うがな。



913 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 16:37:06.13 ID:CPf5VJuY.net]
>>903
いいこというね
>>890のモデルを忘れろってそういうことなんだわ
ViewModelはあくまでも作る画面をモデル化しておとしこんだのであって、
その作る画面がどのModelが元になってるか関係ないんだわ

914 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 17:02:01.28 ID:fwdoqn2z.net]
自分でロジックブーメラン投げて刺さってるし触れるだけ無駄なんだなと

ヒマつぶしにriga○○が何なのか調べてみたけどわからなかった
更に調べるとかなり前から懐かしのugayaのことをrigayaと言ってる人物がいる
多分この人なんだろう

rigayaと言うのは別人がいてNVEncの作者

915 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 17:08:17.47 ID:CPf5VJuY.net]
>>905
ごめんごめん
rigayaはNVEncの作者でugayaのほうか悪かった

916 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 17:18:55.85 ID:fwdoqn2z.net]
ロジックブーメラン

917 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 17:35:30.95 ID:CPf5VJuY.net]
何、しつこく
それも謝ってほしいのか?
すみませんでした

918 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 17:45:52.02 ID:ePvjWEyO.net]
なんの話をしているんだろうと思ったがこれか?
https://ugaya40.hateblo.jp/entry/model-mistake

919 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 17:57:45.40 ID:CPf5VJuY.net]
そうそれ
全部Modelに押し込めってことか?って事で
FatModelって勝手に呼んだけど

完全な正解はないから俺も含めてみんなおれおれMVVMを信じるだけw

920 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 18:42:57.12 ID:ePvjWEyO.net]
俺も>>909はVMの要件とは思わんな。
ただ、V→VM→Mというクリーンアーキテクチャで考えるならMからVMへの依存性逆転に使うインターフェースは
M側に含めることになるかな。それが「Modelの影」にあたるのかもしれんが。
言葉としては違和感があるな。どっちかというと「Viewの影」の方がしっくりくる。

921 名前:デフォルトの名無しさん mailto:sage [2023/09/02(土) 22:11:29.82 ID:fOS98KnE.net]
「Viewの影」か...

VMにはMからの応答データ以外にも
カレントフォーカスやら
リスト系入力コントロールのカレントインデックスやら
入力コントロールの変更前値なども保持してるね
これらはMではあまり取扱かわない

922 名前:デフォルトの名無しさん [2023/09/03(日) 18:43:28.44 ID:PKYmB8Sw.net]
>>911
Mにインジェクションはまずくね?
そもそも、EntityやModelは定義とロジックが入るクラスで、かつ、Domainに属するクラス。
ViewとViewModelはApplicationレイヤー。
Domainとは、外部参照ができない領域で、そこにPropertyインジェクションはリスクを覚悟した使い方。
何事もトリッキーが必要になる事はあるが、SOLID原則は可能な限り守るべき。



923 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 18:47:29.66 ID:McvOhRnv.net]
この5chブラウザって実行できねぇじゃねぇかよ
とりあえずWindows 11 ProのSandbox環境立ち上げて
実行してもSeach app in the store?だっけ?
とダイアログが出て実行できねぇ
.NET 7のランタイムとかいれてもだめやわ
だるっ

924 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 19:07:48.99 ID:Zxyqi4pM.net]
>>93
>Mにインジェクションはまずくね?

どこからそんな解釈が?

925 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 20:37:38.19 ID:TWuH3asg.net]
本来のMVVMだとVMがMに命令を出してその結果をVMのプロパティーに反映だが
コレクションはMに無いとどうにもならないし、それをVMがリダイレクトする
この時点で初期のVMMVは破綻しているよな

926 名前:デフォルトの名無しさん mailto:637 [2023/09/03(日) 21:08:54.26 ID:0JPdNbB1.net]
デザイナーとプログラマーと別けてやるならそうだか、自分一人でやるんならマイルールで頑張れば良い。他人は他人、気にせずに行こう!

927 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 21:16:42.81 ID:Zxyqi4pM.net]
>>916
>本来のMVVMだとVMがMに命令を出してその結果をVMのプロパティーに反映だが

本来のMVVMと言うが、MとVMのやり取りにおける役割分担ってそんなに明確に定まったものはないと思うが。

928 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 22:05:14.34 ID:Dhh2faXN.net]
【クライアント側】
View (WPF)
ViewModel(WPF)
Model(c#, 業務ロジック以外のロジック、例えばUI処理に必要なロジックなど)
【サーバー側】
Model(c#, 業務ロジック)

みたいに実際はクライアント側にもModelが必要になる事が多い

929 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 22:46:24.33 ID:TWuH3asg.net]
>>918
創世記の頃はさっき書いたようなのだったが、ビジネスロジックをほぼ全てMに書く派閥ができてカオスになった
あと、ReactivePropertyでMから簡単にリダイレクト出来るようになったのも大きい

930 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 23:12:27.45 ID:3gQjLtaF.net]
今時はPropertyChanged.FodyやObservablePropertyで自動化
便利になりました

931 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 23:49:15.10 ID:Dhh2faXN.net]
クライアント側やクライアント側にもModelが存在しえるが
ここにはUI要素が殆どなく(あったとしても抽象化されている)
WPF以外からも再利用が可能だ

ViewModelは特定のView専用に実

932 名前:装されており
異なる種類のViewの実装から再利用する事は望めないのが普通だ
[]
[ここ壊れてます]



933 名前:デフォルトの名無しさん mailto:sage [2023/09/03(日) 23:50:04.10 ID:Dhh2faXN.net]
訂正)サーバー側やクライアント側にもModelが存在しえるが

934 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 01:14:09.52 ID:vsxnPNVu.net]
VewModelはViewの構成要素(データやコマンド)には依存するけど実装には依存しないでしょ

935 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 19:44:13.60 ID:J0Btfpeo.net]
昔SilverLightと言うのがありまして…

936 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 19:56:38.46 ID:1eoZIF84.net]
光ちゃん好き

937 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 20:00:29.56 ID:fuW/8CV2.net]
M、VMはそのままで、VをWPFでもUWPでもUnoでもMAUIでもコマンドプロンプトでもまだ存在しないビューにしても成り立つのが理想のMVVM

まあ本体のバージョンやらなんやらで制約受けるんだけども

938 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 22:51:14.61 ID:7E+/PPwt.net]
>>927
機種やOS依存しないのはMだけで、VMはWPFからWinUI3に変わるだけでも作り直し
Win32とWinRTは名前空間が別だ

939 名前:デフォルトの名無しさん mailto:sage [2023/09/04(月) 23:30:01.70 ID:J0Btfpeo.net]
前からいるVMは作り直さなくてもいいと言う人は実際に使ってない気がするんだな

940 名前:デフォルトの名無しさん mailto:sage [2023/09/05(火) 05:52:19.52 ID:DX9vicfo.net]
Vが変わったらVMも作り直しとかそもそもお前のはMVVMじゃないぞ

941 名前:デフォルトの名無しさん [2023/09/05(火) 20:28:59.35 ID:qu07bRnx.net]
MVVMでは、Modelはただの定義であって、それがどこにあろうが、ローカルインスタンスはViewModelにある。
ModelインスタンスはViewにバイディングされるが、Model管理はサブスティチューターやインタラクター等の中間介在者経由で行う。
Modelにインジェクションは、中にパーサーを持たせ、ファイヤーや他にアソシエートさせるという事だろうが、それは、再利用性を損ねる事になる。
MVVMは見かけはMVVMだが、実際には、疎結合実現のために、取り巻くサービスから構成される。

942 名前:デフォルトの名無しさん mailto:sage [2023/09/05(火) 21:33:41.74 ID:s337iXA9.net]
お前の中ではな



943 名前:デフォルトの名無しさん mailto:sage [2023/09/05(火) 21:50:07.00 ID:vxLs2+zd.net]
ここに限らずプログラマー板は全般的に設計の話題になるとグダグダだよね

944 名前:デフォルトの名無しさん mailto:sage [2023/09/05(火) 22:14:49.56 ID:FTgFHkq3.net]
もう今はMFC/WinForms/WPFという過去の遺産グループに一括りにされる時代なのよね
WPFはなんていうか、オーパーツを発掘してる気分、腐ってやがる早すぎたんだって

945 名前:デフォルトの名無しさん mailto:sage [2023/09/05(火) 22:47:35.31 ID:vcpA6cRm.net]
何が言いたいのかさっぱり

946 名前:デフォルトの名無しさん mailto:637 [2023/09/06(水) 05:28:15.62 ID:CIPjTMvR.net]
結局プログラム言語とかプログラミング作法じゃなくてアイデアなんだよな。
それをセンスと言うのかな?
MVVMはオートメーションの作法なんだよ。
俺は機械作業の一部になりたくないな。

947 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 06:00:45.77 ID:aEV5JQPD.net]
ViewModelの再利用性なんて無限のコストをかけていいならいいけどさ
円周率を表示するアプリがあって3.14と表示するかおよそ3と表示するか画像取り込んで表示するかなんて
Viewの仕様次第でいくらでも膨らむのにどうやってViewModelの再利用性を決めるんだ?

948 名前:デフォルトの名無しさん mailto:637 [2023/09/06(水) 06:51:57.86 ID:CIPjTMvR.net]
UIは変化(進化)するWindowsとandroidも違うし、あと数年でMVVMなんて有ったなぁとなるかも知れない。昔の構造化とか。

949 名前:デフォルトの名無しさん [2023/09/06(水) 09:12:10.70 ID:UTcPybKQ.net]
MVVM言いたいだけ

950 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 09:46:23.58 ID:iXwPGoYi.net]
おののののか
みたいな?

951 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 09:47:40.27 ID:gzG1FQ5Q.net]
>>937
さすがにその例なら再利用するだろ
なんで一から作り直すんだ?

952 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 11:09:07.24 ID:EbyA7lxn.net]
データをどう見せるかなんてViewのシゴトだしな
コードビハインド書きたくないとかはワガママだ



953 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 11:35:08.73 ID:Hs78urxK.net]
>>942
それな!
本来Vのコードビハインドに書くものを外だししただけでこれがVMとか言っちゃうのが多すぎる。
>>937とかその典型。それに再利用ってのは本来将来のコストを下げるためにやるもの。
半端もんは口出さずに100万年ROMってろってこった

954 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 11:44:28.70 ID:CARezZ1i.net]
あくまでも個人の感想です。

955 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 11:57:04.90 ID:jZLgLXW4.net]
VMはVに依存する=WPFならWPF専用になる
汎用クラスだけでVMが書けない以上不可能なんだよね

956 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 13:38:44.54 ID:d8gQVss7.net]
MVVMじゃなくてViewとModelだけのVMパターンだね

957 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 19:08:19.79 ID:49e0pxsZ.net]
最終的にはそういう事
m vm vをどうしても二つのグループに分けると
v vm とmグループになる
vm再利用とかありえない

958 名前:デフォルトの名無しさん [2023/09/06(水) 20:03:38.91 ID:R922v4XL.net]
>>946
だね。 
V+VMはペアで中味はトリッキーでもなんでもご自由にどうぞ。
V+VMとMの関係がアーキテクトの骨子。

959 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 20:08:53.79 ID:ZnJznt7P.net]
WPFのはMVVMというよりblandパターン
MVVMとは関係ない実装がVMに多すぎ

960 名前:デフォルトの名無しさん mailto:sage [2023/09/06(水) 21:58:31.52 ID:H3c+Isko.net]
blandパターンって何やねん

961 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/09/08(金) 20:01:30.51 ID:xsuhKaXw.net]
WPFはパフォーマンスでないねぇ
UI仮想化しないと初期表示がくっそ遅いし、仮想化するとスクロールがガクガクする
WebViewを試してみるか

962 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 20:04:01.88 ID:uWWTBRXF.net]
>>951
WPFからReactに移ったときWeb速や!って思た



963 名前:デフォルトの名無しさん mailto:sqge [2023/09/08(金) 20:57:27.63 ID:AJzWVUJo.net]
WPFってそんなやべぇやつだっけ?
昔、UWPアプリで、6年くらい前のスマホSoCのatomのタブレットでスクロールちょっと重いなと
格闘した記憶あるけどデスクトップPCやろ?

964 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 21:01:43.66 ID:AJzWVUJo.net]
UWPアプリのしたらばリーダーみたいのMicrosoft Store
になかったけ?
それでスクロール試してみん
サムネイル画像の表示とかもやってたはず

965 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 21:15:10.75 ID:AJzWVUJo.net]
コードみたけどレスの表示にRichTextBox使ってるの?
これ重いんじゃ?
TextBlockとかでがんばるとか

ってどの部分重いのか知らんが
レス表示だよね?

966 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 21:30:39.96 ID:/3OGw28W.net]
UI仮想化してるならコンテナーのリサイクルも有効にしてる?

967 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/09/08(金) 21:49:54.47 ID:xsuhKaXw.net]
>>955
試した。色々。
1個のどでかいTextBlockもやってみた。

>>956
試した。

inlineのパフォーマンスがすごい悪いんだと思う。
stackoverflowとかもめっちゃググった。
その中の外人さんコメで「WPFやってるとプログラミング初心者に戻ったと錯覚する」っていうのが妙に刺さったw
やっぱリフレクション主体のフレームワーク構造ってのに無理があるのでは。
少量のデータなら問題ないけど、ちょっと増えてくると指数的に重くなる

968 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/09/08(金) 21:58:52.02 ID:xsuhKaXw.net]
説明不足ですみません。
重いのはレス表示の部分。
範囲選択させたり、ハイパーリンク埋め込んだりなのでRichTextBox使ってる。
UI仮想化すると初期表示は早いけど、スクロールがガクガクだったり前回表示位置が上手く取得できなかったりとギブアップ気味。
これ以上この部分に時間かけるのもどうかと思い出した次第です

969 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 22:09:56.39 ID:/3OGw28W.net]
大量のデータならデータ仮想化もした方が良さそうだけど

970 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 22:21:08.42 ID:AJzWVUJo.net]
RichTextBoxの範囲選択はあきらめたほうがいい
Janeとかもできないやろ?
Webブラウザ使ってる余裕sikiはできるだろうが
TextBlockでもマルチスタイルのインラインリンクぐらいはできなったっけ

971 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 22:28:15.74 ID:AJzWVUJo.net]
>>957
ああごめんTextBlock試したのか
じゃあWPFがやばいのか
WinUIしてみようぜw
>>953にも書いたがレス表示みたいな事を当時やったが
デスクトップとかなら余裕だと思うんだが

972 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 23:00:10.22 ID:ZMs2WmkU.net]
10年以上前に自分が通った道を他人が歩いているのを見ている
今はIEコンポーネントもないしな



973 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 23:13:15.61 ID:ZMs2WmkU.net]
自分もrichtextboxから始めたけど開発スタート初日から見限った
これはダメだと
今より全然マシンパワーなかったから当然かと

Sikiは仕組み上遅くなるのが分かってるのでもうそういう既存の仕組みを使わないで自力描画してるようだ
レスをパースして行数計算して文字のフォントサイズを実際に脇に描画してそれを元に文字サイズを推定して
表示部分だけ自前描画

過去の自分も似たようなところにたどり着いて外部Dllを作ったがいろいろとうまくいかずc++からは戻って来た
でもかなりレベルアップしたような実感が得られた(個人の感想です)

974 名前:デフォルトの名無しさん mailto:sage [2023/09/08(金) 23:21:58.63 ID:ZMs2WmkU.net]
過去にここ?かc#のスレでたまに質問して技術を探ったがまともに回答できるレベルの人間はいなかった

結局フレームワークが提供するものを使わずに自前の疑似描画が最速なんだけど
それがわかったとしてそこからは精神の問題になる

長い試行錯誤とこれは自分にとって時間をかける意味のあることなのかと自問自答

975 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 00:57:33.07 ID:hHjqEXWc.net]
>>958
開発中の機能が重いわけ?
レス数1000近くて画像リンク含むスレッド表示してみたけど
どこがカクカクなのか分からない

976 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 01:14:55.16 ID:12n4cwT7.net]
スレチだが、個人的には read.crx 2 をフォークするなりしてほしい
いまどき「Windows専用の5chクライアント」はちょっと...

977 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 01:26:18.10 ID:OYJBfPAk.net]
人のやることにケチ付けてないで、自分で作れば

978 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 02:13:46.91 ID:K25duMZT.net]
んだんだ

979 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 02:39:19.20 ID:fuRqrN4P.net]
出来の良いエンジニアが全員Webで開発してるから仕方ない

980 名前:mdysdev● ◆XSDsAilQpD0E mailto:sage [2023/09/09(土) 06:59:15.87 ID:xfSBfAyx.net]
スレ立てさせてください

981 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/09/09(土) 07:03:42.77 ID:xfSBfAyx.net]
次スレ立てました

WPF(.NET, WinUI) GUIプログラミング Part32
https://mevius.5ch.net/test/read.cgi/tech/1694210576/

982 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/09/09(土) 07:16:20.48 ID:xfSBfAyx.net]
>>965
ホイールスクロールじゃなくてスクロールバーのつまみを持って高速で上下させるとガクガクしません?

>>963
すごいね
時間とカネがあれば挑戦してみたいけど、
打算的な考えがはたらいてしまいどうも地味な部分(申し訳ない)に注力するのを躊躇してしまう
これだと浅く広くになってしまってよくないんだろうけど。



983 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 15:42:58.83 ID:hHjqEXWc.net]
>>972
うん、つまみもってスクロールさせてみた
他のsikiとかと比較すると吸い付きは悪いけど、実際使う上で
この速度でイライラするかとそこはどうなんだろう

>>954で上げたしたらばリーダーでやってみたけどゲロ速い

984 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 15:49:37.56 ID:hHjqEXWc.net]
UWPとかそこら辺高速化する
事前バインディング(x:Bind)や段階的レンダリング(x:Phase)みたいのあるけど
どれくらい効果あるのやら

985 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 18:25:25.91 ID:hHjqEXWc.net]
xaml切り貼りして試したけど
>>956のこれでかなりスムーズにならね?
VirtualizingPanel.VirtualizationMode="Recycling"
これで解決やろ

986 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/09/09(土) 19:33:09.18 ID:xfSBfAyx.net]
>>975
Recycling指定しただけだと表示されるレスがぐちゃぐちゃになってませんか?
結局RichTextBoxLoadedを呼びなおしてInline作らないといけないので、Recycling指定してもしなくても体感が変わらない気がします
(というか変わらなかった)

あとUI仮想化するときの致命点として、
表示されている近辺しかUIをメモリに保持していないので、
レス内の文字列検索する場合に全部探せないっていうのが・・

987 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 20:11:19.23 ID:hHjqEXWc.net]
>>976
そっか
中身全然見てなかったww
元々LoadedでセットしてたからRecycleするとLoaded呼ばれなくなって中身が
更新されてなかったら速くなってたのかw
悪かった

>レス内の文字列検索する場合に全部探せないっていうの
ああ、これはRichTextBoxの機能でやろうとしてる?
MVVM的にはViewModelのほうが全部データ持ってるはずだけど

988 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/09/09(土) 20:28:03.21 ID:xfSBfAyx.net]
>>977
「検索にヒットしたレスだけを抜き出して表示」ならVMを検索してDataContextを再設定すればいいと思う。
ただ「レスを表示したまま」っていう要件で例えば検索ワードの背景色だけを変えたい場合って
UIに全レスが読み込まれてないと出来ない気がするんだけど何かうまい方法あります?

989 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 20:53:19.09 ID:hHjqEXWc.net]
>>978
ResViewItemViewModelのほうにアンカーやらリンクやらの
情報持ってるわけでしょ?
そこに検索ヒット部分の情報持たせて、それらを混ぜて表示すればいいだけじゃない?

990 名前:mdysdev ◆XSDsAilQpD0E mailto:sage [2023/09/09(土) 21:00:00.66 ID:xfSBfAyx.net]
>>979
ああ、なるほど。
理解しました

991 名前:デフォルトの名無しさん mailto:sage [2023/09/09(土) 22:52:24.90 ID:6wE+xkUP.net]
色々ひっくり返るけど、WebView2でやるのが一番いいんじゃないかな?

992 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 00:01:36.42 ID:HR/6NGES.net]
WebviewでやるならBlazor Hybridの方が良いかも?
C#と連携しやすいし



993 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 00:12:18.74 ID:/4aaxiYm.net]
winformsとかwpfの案件ばかり渡り歩いてきたけどやっぱり斜陽なのかなぁ。きっちりウェブとかスマホアプリとかの勉強してそっちに軸足動かさないといかんのだろうか
とにかく不安で不安でしょうがない。何が一番不安ってwinformsやwpf本体以上にそういう現場って周りの開発環境自体もすごく古めかしいことが多い
git?何それ?みたいなことばかり

994 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 00:16:03.86 ID:L5K9/P3E.net]
そういうのはプログラマー板でやって

995 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 00:24:23.99 ID:W8P3LkyJ.net]
別にここでok

996 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 00:45:08.82 ID:y88PGdZC.net]
その手の話はスレが荒れるからマ板で
特に「WPF以外は何がいい?」みたいな話に発展して、それもうWPF無関係じゃんってなる

997 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 00:47:46.81 ID:ZyGp2Gk+.net]
特別な用途別意外
デスクトップアブリの開発需要がないでー

998 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 13:31:19.20 ID:YVmQiRtO.net]
普通にデスクトップアプリは特殊用途でしか使われてない
CADとかそういうジャンルみたいのが一例

999 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 13:48:10.83 ID:YVmQiRtO.net]
10年以上前の話
工場などの管理アプリは以前はデスクトップだった
情報は生産管理室でしか見たりできなかった
それがweb上に構築されて社内にいれば労働者が必要な権限のもと必要な情報を引き出せるようになった

営業も同じ
以前は会社に戻って日報ソフトで報告書を作ってたのがスマホから出せるようになった
作成も移動時間などの隙間時間を使える
在庫もその場で確認できる
以前は会社に電話確認してた

DXが持てはやされる今なんで今更仕事でデスクトップアプリを使うのか
開発者のエゴなんじゃないか

1000 名前:デフォルトの名無しさん [2023/09/10(日) 14:09:35.55 ID:1PErJKRp.net]
デスクトップやネイティブからWEBアプリになったのって
今はサーバー側の計算資源に余力あるのもでかいと思う
フロント側で計算することが減った

1001 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 14:37:39.16 ID:YVmQiRtO.net]
WPFが出る前後の話で描画がdirectXになるので速くなるのではと期待された
CADなんかもGDIから置き換えになるんじゃないかと
C#が今よりメジャーになるんじゃないかと

実際はご存じの通りでまあなんでもあてにならんもんだなと

1002 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 15:37:57.94 ID:cU2jqfnk.net]
webは手だしてみてるけど
いざ画面作るとなるといまいちcss操れないへっぽこさでなぁ



1003 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 15:52:00.61 ID:NUnFSs94.net]
ワシらのためのbootstrap

1004 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 16:29:10.18 ID:qF59qXuI.net]
>>932
それな
俺はflutterもやってるのでflutter for webに頑張ってもらってcssやらずに乗り切れるかどうか
Webのバックエンドはgoとかやったけど

1005 名前:デフォルトの名無しさん mailto:sage [2023/09/10(日) 16:32:58.69 ID:qF59qXuI.net]
>>992だった
Webのバックエンド用にrustもかじったほうがいいのかな
Web ApiでSQL叩くぐらいだけど
asp.net vs go vs rust
悩む

1006 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<232KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef