23/06/22 12:08:51.67 f4QrThnD.net
口だけならなんとでも言える
動いてる物を出せよ無能
562:デフォルトの名無しさん
23/06/22 20:18:12.49 2/GtWGn8.net
グラフ表示の事か?
基本的な非同期の知識とcanvasに線が書ければ後は頑張り(?)次第。
手練れは頑張りなんて不要なんだろうけど、基本動作まで自分は2時間は掛かった。
始めはWinFormsだったけど勉強がてらWPF版も作ってみた。
後者の方が綺麗で動きもよかった。
自己満足だが真似する時はどれだけそっくりに作れるかこだわると面白い。
563:デフォルトの名無しさん
23/06/22 21:00:45.20 CCzLUMWa.net
WPFの描画機能は規模が大きくなると速度低下が激しいのが残念
SkiaSharp等を使えば一応回避出来るけど
564:デフォルトの名無しさん
23/06/22 22:05:57.96 oInj3jkO.net
UWPとWindowsAppSDKだと、Win2DというDirect2Dの公式ライブラリがありますね
一回使ったけど流石に早かった
565:デフォルトの名無しさん
23/06/23 00:18:21.51 HwDl1XJv.net
DrawingVisualで描画すれば速いよ
566:デフォルトの名無しさん
23/06/25 09:24:47.83 RV4PZadR.net
SkiaSharp DrawingVisual あまり資料がないな~
567:デフォルトの名無しさん
23/06/25 12:00:19.37 bsDOU/Dc.net
あまり情報がないものでも、ChatGPTが組み合わせて教えてくれる場合がある。
その場合、複数言語のページの内容を混ぜて回答してくれるのかな?
568:デフォルトの名無しさん
23/06/25 16:20:15.73 Avq8WYKk.net
DrawingVisualはWPFの機能でMSのサイトに解説とコードサンプルがあり、リファレンスがあるのだから資料がないということはないだろう
DrawingVisual オブジェクトの使用 - WPF .NET Framework | Microsoft Learn
URLリンク(learn.microsoft.com)
569:デフォルトの名無しさん
23/06/26 20:38:37.00 /ad+dyyW.net
URLリンク(swharden.com)
ベンチマーク
10万本で0.4secで驚異的。
570:デフォルトの名無しさん
23/06/26 21:30:09.55 /ad+dyyW.net
でもSkiaSharp + OpenGL はハードル高そうだな。
だったらSystem.Drawingの方がいいじゃん。
571:デフォルトの名無しさん
23/06/26 22:37:30.04 Jb1NpiVn.net
>>564の比較はWinFormsで
OpenGLで動かしたい場合はSKControlクラスの代わりにSKGLControlクラスを使うだけで良いみたい
WPFの場合はSKElementクラスだけど、これの性能には触れてないな
572:デフォルトの名無しさん
23/06/26 22:47:47.73 Jb1NpiVn.net
比較対象が多いページ見つけた
URLリンク(swharden.com)
573:デフォルトの名無しさん
23/06/27 19:40:57.53 ZU8ILpLR.net
URLリンク(blog.emoji-gen.ninja)
>日本語のドキュメントに至っては、ほぼ皆無です。そのため、Skia を使って本格的に開発する場合は、ある程度の覚悟が必要です。
なんだと!!ww
ヤフー知恵袋も質問0 だった。。
574:デフォルトの名無しさん
23/06/27 21:04:13.08 ZU8ILpLR.net
一応、線は引けるけど、非同期コードいれるとcanvasが壊れてるといって落ちる。
あと、XAMLで指定したメソッド以外でどうやって描画するのか不明。
575:デフォルトの名無しさん
23/06/28 02:24:02.68 HaY2f2W2.net
>>569
SKElementはメソッドやイベントが少なくて超シンプル
URLリンク(learn.microsoft.com)
基本的に、SKElement.PaintSurfaceイベントで描画するだけ
再描画したい場合、InvalidateVisual()を実行すると上記イベントが発生する
576:デフォルトの名無しさん
23/06/28 06:39:28.56 +Blkfaog.net
じゃボタンを押したときに線を引かせたいときはそのボタンのイベントハンドラで
InvalidateVisual()実行させて線を引くコードはPaintSurface 内に記述するのか。
なんか面倒だし、PaintSurfaceが巨大化しそう。まぁPaintSurface内で自作関数呼べ
ば良いんだろうけど。
577:デフォルトの名無しさん
23/06/28 08:32:25.75 ngy9I2lE.net
WM_PAINTでの経験が活かされますね
578:デフォルトの名無しさん
23/06/28 09:38:16.64 NAypQ388.net
描画とかボタン処理は同じコンテクストで実行されるから
何も考えずに処理書けばいい
タイマーや通信など他の契機で描画したいなら工夫がいるだけ
579:デフォルトの名無しさん
23/06/28 14:41:27.72 BVdlIcNn.net
漠∞!!!!
列∞!!!!!
后∞!!!!!!
機∞!!!!!!!
枚∞!!!!!!!!
図∞!!!!!!!!!
寿∞!!!!!!!!!!
非∞!!!!!!!!!!!
駅∞!!!!!!!!!!!!
頓∞!!!!!!!!!!!!!
官∞!!!!!!!!!!!!!!
司∞!!!!!!!!!!!!!!!
戸∞!!!!!!!!!!!!!!!!
城∞!!!!!!!!!!!!!!!!!
堺∞!!!!!!!!!!!!!!!!!!
580:デフォルトの名無しさん
23/06/28 19:47:18.96 HaY2f2W2.net
>>573
PaintSurfaceイベント毎に(SKSurfaceクラスやSKCanvasクラスの)オブジェクトが変わるから(変わらないこともある)
ボタンのクリックイベント等で描画するのは無理じゃないかな
581:デフォルトの名無しさん
23/06/28 19:54:32.34 +Blkfaog.net
求めていたものやっと見つけた。中国サイト。
良くできてるな~。
await Task.Delayではなく、
SpinWait.SpinUntil(() => false, 1000 / 60); //每秒60帧
だそうだ。こんなの知らんわ。
URLリンク(www.dongchuanmin.com)
URLリンク(zhuanlan.zhihu.com)
582:デフォルトの名無しさん
23/06/28 20:35:15.51 OvMs43YX.net
中華リンク貼られても見ねーよ
583:デフォルトの名無しさん
23/06/28 23:57:16.98 i6K+M06u.net
中国語、韓国語、ロシア語等、いろいろなページを見てるわ。
584:デフォルトの名無しさん
23/06/29 00:40:34.34 Wk17Qk7t.net
DOBON.NET
Thread.SpinWaitメソッドはスレッドの同期のために�
585:熾狽ナ使用されているようですが、通常は私たちが使用する機会はないでしょう。
586:デフォルトの名無しさん
23/06/29 00:47:40.82 puM++CKl.net
>>576
ビジーウェイト状態になりそうなコードだから試してみたけど、予想に反してCPU時間の消費がそんなでもないな
ただ、環境によってループの頻度が違うみたいだ
.NET7: 毎秒約500回
.NET Framework 4.7.2: 毎秒約1万回
587:デフォルトの名無しさん
23/06/29 01:11:48.23 0ql7o6ud.net
Win32APIのInitializeCriticalSectionAndSpinCount()みたいな実装をするためのものか。
ほんのちょっと待てばロックを取得できる場合に数千回ループで待って、
できるだけスレッド切り替えにかかる無駄な時間を避ける。
InitializeCriticalSectionAndSpinCount 関数 (synchapi.h) - Win32 apps | Microsoft Learn
URLリンク(learn.microsoft.com)
588:デフォルトの名無しさん
23/06/29 06:25:02.66 ejYRoEqU.net
>>578
他国でもソースは同じだもんな。
589:デフォルトの名無しさん
23/06/29 07:36:02.98 G16HAkDq.net
匿名掲示板に貼られた中華リンクのソースが必ず正しいと思ってるやつがいるのはおめでてーな
590:デフォルトの名無しさん
23/06/29 10:00:47.73 df8BmqTV.net
MSの翻訳は糞だから日本語のMS公式観るより
英語のMS公式観た方が良いのは事実
591:デフォルトの名無しさん
23/06/29 10:16:30.19 e/2/rrz3.net
匿名掲示板の中華リンクと公式の英語を同一視してるやつやべーな
592:デフォルトの名無しさん
23/06/29 11:10:54.33 df8BmqTV.net
そんなやついたか?
593:デフォルトの名無しさん
23/06/29 11:44:14.93 ejYRoEqU.net
碌に読んでないの多いよな。
>中華リンクのソースが必ず正しいと思ってるやつがいる
リンク張っただけなのにコレだもん。
594:デフォルトの名無しさん
23/06/29 11:56:50.12 IrCo4C0s.net
ページ自体はまともでも、そこに貼られてる広告がヤバそう(偏見
595:デフォルトの名無しさん
23/06/29 11:59:03.18 3KkF7hHh.net
悔しそうで草
596:デフォルトの名無しさん
23/06/29 18:30:52.58 puM++CKl.net
>>576
このコードでSpinWait.SpinUntil()で待機させるメリットって何だろう
Dispatcher.Invoke()してるから1ループの実行時間は結構ばらつくし、Thread.Sleep()で十分な気がするのだけど
精度を出すなら、System.Timers.Timer使った方が良いし
597:デフォルトの名無しさん
23/06/29 18:58:35.73 AdXw454n.net
60フレームだそうとしてるのになんともいえん感じにはなる
598:デフォルトの名無しさん
23/06/29 20:40:19.95 puM++CKl.net
>>590
Thread.Sleep()で十分な気がするって書いたけど、
実際に試すとSpinWait.SpinUntil()のままよりThread.Sleep()に置き換えた方が明らかにFPS向上するなw
PCに負荷をかけたらまた違うのかねぇ
599:デフォルトの名無しさん
23/06/29 21:07:27.01 ejYRoEqU.net
await task.delay ()だと例外で落ちるから。
600:デフォルトの名無しさん
23/06/30 03:50:01.15 G8RX/6Lm.net
>>593
InvalidateVisual()呼ぶだけならUIスレッドで実行されるように気を付ければawait Task.Delay()で問題無いよ。
601:デフォルトの名無しさん
23/06/30 07:00:48.53 ClIVzebM.net
よーし何か作ってみよう~
602:デフォルトの名無しさん
23/06/30 19:36:32.72 ClIVzebM.net
ここ という所で1sec wait掛けたい。どうすんだ?
public MainWindow(){
Task.Run(() =>{
try{
while (true){
Dispatcher.Invoke(() => {
canvas.InvalidateVisual(); });
_ = SpinWait.SpinUntil(() => false, 10); //每秒60帧
}
}
catch (Exception e){
}
});
}
void OnPaintSample(object sender, SKPaintSurfaceEventArgs e){
Render (e.Surface.Canvas );
}
public void Render (SKCanvas canvas){
SKPaint thickLinePaint = new SKPaint{
Style = SKPaintStyle.Stroke,
Color = SKColors.Orange,
StrokeWidth = 1
};
for (int x=0;x<=600;x++){
canvas.DrawLine(x, 0, x,100, thickLinePaint);
// ここ
}
}
603:デフォルトの名無しさん
23/06/30 19:37:34.75 ClIVzebM.net
書き忘れ
skiasharp .netframework.
604:デフォルトの名無しさん
23/06/30 21:02:19.59 k2cLJ2r8.net
フレームごとに呼ばれるシステムはフレームイベント内部でwaitさせるんじゃなくて
何フレーム目かとかの時間情報を持たせてその時間基準で全部描画するもの
605:デフォルトの名無しさん
23/06/30 21:18:03.73 ClIVzebM.net
へー。今まで(?)の手法とは違うんですね。
難しい~。
606:デフォルトの名無しさん
23/06/30 21:40:58.12 G8RX/6Lm.net
>>596
ここ という所での待機はNG。UIスレッドを掴んだままで描画されない。(イベントが終わったら描画される)
URLリンク(ideone.com)
607:デフォルトの名無しさん
23/06/30 21:46:05.66 ClIVzebM.net
ほう。ご丁寧にソースまで。ありがとう!!
608:デフォルトの名無しさん
23/06/30 21:51:04.15 k2cLJ2r8.net
実行環境違うだろうけどここ参考にしたら
URLリンク(learn.microsoft.com)
609:デフォルトの名無しさん
23/07/02 07:22:17.31 NrLD8OfZ.net
URLリンク(ideone.com)
フラグが多くなりそうだな。
610:デフォルトの名無しさん
23/07/02 07:28:34.32 NrLD8OfZ.net
canvas.childlen.add()の場合はaddし過ぎる(500超えるとヤバい)と
酷いときは止まるけど
skiasharpは描画を続けても平気なのかね。
611:デフォルトの名無しさん
23/07/05 21:26:03.46 iW/VMTsC.net
心電図、SkinaSharp版を作って試したけどCPU使用率は canvas.chilren.add版が
24%、Skina版が2.5%、他の項目は殆ど差なしだった。
限度はあるだろうが、Skinaはcanvas.clearしなくても軽いな。
612:デフォルトの名無しさん
23/07/08 06:53:37.52 9pZJE7Lr.net
画面遷移のやり方わかんなくて調べてるけど
MVVM使わない方法しか出てこないよ...😢
613:デフォルトの名無しさん
23/07/08 09:31:12.51 rhn5/plT.net
どういう調べ方をしたんだ
メッセンジャーを使ったりサービスを使ったりすればいいだろ
今の主流はサービスかな
614:デフォルトの名無しさん
23/07/08 11:04:12.71 gObB59CG.net
Template Studioという拡張機能をVSにインストールしてアプリの雛形を作ると画面遷移のコードまでジェネレートしてくれる
WinUI版しか使ったこと無いが、恐らくWPF版も同様と思われる
615:デフォルトの名無しさん
23/07/08 15:06:36.80 EY12ydBx.net
ホント、MVVMって手間ですね!
616:デフォルトの名無しさん
23/07/08 15:26:11.20 p+sO9/0D.net
画面遷移は遷移サービスに依頼
サービスは作られるときにGUIのフレームの参照をもらってる
フレームをくれるのはメインウィンドウ(MetroWindow継承)のコードビハインド
メインwindowsを作るのはホストサービス
ホストサー・・・
本当に意味不明だわ
617:デフォルトの名無しさん
23/07/08 15:42:14.13 p+sO9/0D.net
サービス作る
VM作る
画面など作る
だとサービス作る時に画面がないのでアウトだけど
先に画面作るのも気持ち悪いし画面でサービスを使わないと限らない
普通はどうしてるんだろ
MVVM原理主義者たちは?
618:デフォルトの名無しさん
23/07/08 15:48:28.55 Ug32iaVM.net
>>610
> サービスは作られるときにGUIのフレームの参照をもらってる
サービス(モデル)がGUIのフレーム(ビュー)に依存してるって設計が悪んじゃないの
619:デフォルトの名無しさん
23/07/08 15:52:16.34 p+sO9/0D.net
サービスはinterface越しで操作してたような気がするけどそもそもGUIに依存してもいいだろ
なんだか知らないことに口出しをするのもめんどくさいな
620:デフォルトの名無しさん
23/07/08 15:57:28.09 L9qo6Y2h.net
GUIに依存するとデバッグが大変になるんだよ
621:デフォルトの名無しさん
23/07/08 16:09:37.95 0FxLf7Ij.net
>サービスはinterface越しで操作してたような気がするけどそもそもGUIに依存してもいいだろ
それを直接依存させないのがMVVMやクリーンアーキテクチャの考え方。
622:デフォルトの名無しさん
23/07/08 17:01:16.26 p+sO9/0D.net
考えるだけ時間の無駄だけど自作クラスNaviService(INaviService継承)がコンストラクタでGUIフレームをもらってるとして
それの何がいけないのか
デバッグやテスト用にはDummyNaviService(INaviService継承)を作るだけだろと思うが
フレームをわざわざラップさせる意味は多分ない
class NaviServiceに
MyFrame _frame;
bool GoBack()
{
return _frame.GoBack();
}
とおいて自作MyFrameに更に同じようなものを書くのはただの無駄
623:デフォルトの名無しさん
23/07/09 08:22:10.73 F2jcE+HG.net
凄いよな。
で、難解なMVVM駆使して何作ってんだ?
624:デフォルトの名無しさん
23/07/09 09:18:14.11 bY6lUE+2.net
誤)難解なMVVM
正)お馬鹿なMVVM
625:デフォルトの名無しさん
23/07/09 10:36:40.65 F2jcE+HG.net
MVVMより、SkiaSharpなど2Dグラフィック系の勉強してる。MVVMは自分には無理や。。
626:デフォルトの名無しさん
23/07/09 12:47:45.01 /vDoZjEa.net
一応WPFの思想はMVVMなんじゃないか
627:デフォルトの名無しさん
23/07/09 15:57:12.07 F2jcE+HG.net
それはない。MS自体、使い分けと言ってる。
628:デフォルトの名無しさん
23/07/09 17:55:53.87 dWXLeXtb.net
別に同じ物を書いても目的が達成すればいいのでは?
DIはDIP規則をやるための機構だが、マルチインジェクションはISP原則から必須になる。
Microsoft.Extentionを使うとシェルもナビゲーションも簡単でマルチDIは簡単だが、PrismはViewModelLocatorがマルチインジェクションに対応していないのが残念だ。
ViewModeにこそマルチインジェクションが必要と思うのだか・・・
Prismでは、追加インジェクション関数をViewModelに入れている。
MVVM否定? 今時MVVM否定論なんて流行るのか?
629:デフォルトの名無しさん
23/07/09 20:36:20.21 LqamH1A3.net
マルチインジェクションてなんですか?
630:デフォルトの名無しさん
23/07/10 06:31:31.15 nluT7sbQ.net
燃料噴射装置。ある意味正解。
631:デフォルトの名無しさん
23/07/10 09:42:06.59 +87QqsLJ.net
そもそもPrismは開発終了で今から使っちゃいけないものだよな
それとも新しいのが出たんだろうか
632:デフォルトの名無しさん
23/07/10 14:14:23.34 h4a2e+7i.net
開発終了したっけ?
633:デフォルトの名無しさん
23/07/10 14:48:31.42 6m3EwvsS.net
この辺の話かな
URLリンク(github.com)
>Prism is leaving the .NET Foundation. Before making any changes to the Prism repo, we are archiving the current source code which is under the .NET Foundation.
634:デフォルトの名無しさん
23/07/10 15:40:16.84 yIoSKETV.net
>>627
URLリンク(github.com)
.NET Foundationを離れて開発を続けるって書いてあるぞ
635:デフォルトの名無しさん
23/07/10 16:13:40.89 xp+Y6DUu.net
Prismはちょっと重厚すぎてオブジェクト志向で言うところの単一責任原則から離れすぎてて使いにくい
636:デフォルトの名無しさん
23/07/10 19:35:36.03 nluT7sbQ.net
で、マルチインジェクションって何だろ。
637:デフォルトの名無しさん
23/07/10 20:01:58.73 7HtUCVrE.net
.NET FoundationはMVVM Toolkit推しみたいだね
Community.Toolkit(旧Microsoft.Toolkit)に含まれてるやつ
638:デフォルトの名無しさん
23/07/10 23:29:38.85 c1hj3m9Z.net
自分もマルチインジェクションがわからん
639:デフォルトの名無しさん
23/07/11 06:15:49.09 tEhhj7Dg.net
>>628
しかしそれから一年行方不明
640:デフォルトの名無しさん
23/07/14 07:31:28.85 uNvEuXay.net
止めたんじゃね。殆どMVVM使われてないし作るメリットが見いだせない。
641:デフォルトの名無しさん
23/07/15 16:17:56.97 xVqfKfwW.net
>>629
Prismは最初のDIコンテナのUnityがくっそ重かったけど、DryIocが事実上の標準になって軽くなったんだけどね
642:デフォルトの名無しさん
23/07/15 20:40:31.18 UiYhW/dJ.net
Prismは実践的なmvvmの使い方とそれ用の軽いライブラリ提供しようとしてたら
ドンドン仕組みが大きくなって実践的と言うより宗教的になって来たので辞めたんだろ
MVVMのvm自動生成機能のためにフォルダ構造やファイル名まで指定してくるようになったらもう完全な宗教だろ
643:デフォルトの名無しさん
23/07/15 22:13:09.54 qTZx5K+e.net
android studioでjavaでやっていますが、WPFの仕事が入りそうなんで質問です。
ViewModelと言うことで同じ様な組み方と思ったのですが、UIのデザイナーは無いのですか?
androidはポトベタ風(相対関係)にデザインして、xmlで若干補ったけど、こっちは全部xmlで記述するんですか?
644:デフォルトの名無しさん
23/07/15 22:17:18.73 UiYhW/dJ.net
WinGUI3はそうだよ
開発が間に合ってない
WPFとかUWPとかwinformsはデザイナがある
645:デフォルトの名無しさん
23/07/15 22:21:32.04 IAi8wYQ9.net
WPF~UWPで首切りまくったせいで絶賛劣化中
646:デフォルトの名無しさん
23/07/15 22:29:58.82 WTK8CS0X.net
>>637
Visual Studio Professional
70,858円
647:デフォルトの名無しさん
23/07/15 22:41:20.26 qTZx5K+e.net
>>640
それmsdn3年付きで導入しました。
648:デフォルトの名無しさん
23/07/15 23:04:31.50 F8pGys1G.net
>>641
C# で WPF を使った Hello World アプリ - Visual Studio (Windows) | Microsoft Learn
URLリンク(learn.microsoft.com)
649:デフォルトの名無しさん
23/07/16 08:53:57.15 kPWMqAlO.net
>>637
絶対指定によるペタも可。ただしリサイズしない場合に限る。
50個くらいコントロールあるとき面倒なんでポトペタですませた。
650:デフォルトの名無しさん
23/07/16 11:43:41.21 Zkk0ia7G.net
android studioのデザイナのGuidelineみたいな補助線と横幅の割合設定などありますか?
651:デフォルトの名無しさん
23/07/16 15:04:36.79 kPWMqAlO.net
知らんけど、XAML習得を勧める。難しそうだが何とかなる。
652:デフォルトの名無しさん
23/07/16 15:41:11.43 Kbd6AKbP.net
もういい加減機能追加が止まったwpfで新規アプリを作りたくないんだが
出来ないことの回避策を探す事に時間取られるWinUI3で作るのも地獄だし
もうずーっとWindowsのGUIアプリは今は作るな時が悪いで停滞してんじゃねーか
653:デフォルトの名無しさん
23/07/16 15:48:37.64 oB6p9OVz.net
それを「枯れた」という。
654:デフォルトの名無しさん
23/07/16 17:11:14.42 Zkk0ia7G.net
>>645
了解、android studioのデザイナ位で良いのでMSもやって欲しいな。
655:デフォルトの名無しさん
23/07/16 17:26:09.46 kPWMqAlO.net
機能追加って何が欲しいんだ?
一通りあると思うけど。あとは工夫次第だろ。
656:デフォルトの名無しさん
23/07/16 17:48:27.06 NIqQTkMR.net
最低限色付きのemojiは対応して欲しいな
今は自分で作るかnugetでいいのを探して使ってる
657:デフォルトの名無しさん
23/07/18 15:46:29.61 uuDyB+uu.net
WinUI3公式のサンプル試そうと思ったら依存関係ないとかいう例外出て情報も少なくて早々に投げちゃった
658:デフォルトの名無しさん
23/07/18 16:55:57.68 0hGflB6j.net
絵文字よりSVGだろぉ
はよせい
659:デフォルトの名無しさん
23/07/18 19:29:02.67 5UWIDgaz.net
webのUI使ってるとWPFの表現力の限界が見える
660:デフォルトの名無しさん
23/07/18 20:27:45.99 mNXjpdDn.net
デスクトップアプリなんてそんなもんだよ。
事実上、WIN32APIの画面でも問題ない。
661:デフォルトの名無しさん
23/07/18 20:56:20.17 AK2q1/EQ.net
事実上?
662:デフォルトの名無しさん
23/07/18 22:21:23.88 SyIOChPo.net
GUIはあらかじめ決められたUI/UXガイドラインに沿っていればよくて
あまり奇をてらう必要はないよな。というかかえって害悪だよな。
663:デフォルトの名無しさん
23/07/18 22:27:51.77 5UWIDgaz.net
基本的なリングプログレスも用意されていないのでUI/UXデザインがどうとかいう話でもない
664:デフォルトの名無しさん
23/07/18 23:05:33.75 Isn7rP+W.net
プログレスバーならあるし
ウエイトカーソルでいいだろ
665:デフォルトの名無しさん
23/07/19 11:41:28.51 x9es5cRL.net
Webは退化
666:デフォルトの名無しさん
23/07/19 12:35:30.77 A8CV4uql.net
WPFも外部のライブラリにはMSが出してないUI部品がいろいろとあるじゃん
>>657 のいうwebには外部のライブラリを使わずにhtml,cssの機能ですぐに使えるクルクルってあるのかい?
667:デフォルトの名無しさん
23/07/19 12:47:37.05 iEaOd/wb.net
.gif
668:デフォルトの名無しさん
23/07/19 20:38:09.57 tH39MvqA.net
>>660
どんなモノでも簡単に作れる
URLリンク(blog.stackfindover.com)
デザインが先に来て後から実装するのが普通なぐらい
669:デフォルトの名無しさん
23/07/19 21:12:34.35 Ov59KYrm.net
>>662
#2 Pure CSS radial progress bar は三角関数必要だろ。どうやってんだろ。
なんかうまく工夫してんだろうか。
670:デフォルトの名無しさん
23/07/19 21:28:55.59 5c4o81Qs.net
その昔、MacがToolboxとして標準ウィジットを搭載してユーザーインターフェースガイドラインを発表したら
GUIのデザインを独自にやりたいといってDOSプログラマは否定的だったとか。
671:デフォルトの名無しさん
23/07/19 22:19:12.68 1tsx70I0.net
ProgressRingクラス使うより簡単には見えなかった
672:デフォルトの名無しさん
23/07/19 22:41:45.76 1biVaVka.net
>>665
UI設計って基本作りたいラフスケッチ/ワイヤーフレームを先に決めてから実装に落とす
WPFじゃ簡単に出来ないどころか不可能だと思うけど...
673:デフォルトの名無しさん
23/07/19 23:41:59.04 gAbRA/Vo.net
WPFは当初から基本的なAPIやコントロールがあまり実装されない
それでwinformsから借りてた
現在はUWPから借りてる
UX/UIの基準がもう更新されていないから今風なコントロールの基準からかなり遠ざかっている
674:デフォルトの名無しさん
23/07/20 15:46:30.38 q9wMynRV.net
numericupdownやchartくらいは実装しておいて欲しかった
675:デフォルトの名無しさん
23/07/20 20:05:17.02 4+aEc/KW.net
ただ固まらないように使ってるだけじゃないの
676:デフォルトの名無しさん
23/07/21 00:08:18.44 UX0onJ+y.net
numericupdownはたまに作ると「まだ無いのかよ」って毎回がっかりしてる
グラフはともかく、これは必須でしょう
677:デフォルトの名無しさん
23/07/21 06:41:34.68 RqIZ05fo.net
winformsにあるからな。WPF作るとき実装すれば良かったのに。簡単なコントロールだろ。
678:デフォルトの名無しさん
23/07/21 15:50:52.27 bOOjw2GE.net
WPF用にコントロールの見た目を全部刷新すれば、もっと使う人も増えたんだろうけどな
WPFで作ってもコントロール表示がWinFormsのままだと萎える
679:デフォルトの名無しさん
23/07/21 18:44:40.80 wzbrv7/A.net
WinFormはWin11風に変わるけど
wpfは変わらないのですが…
680:デフォルトの名無しさん
23/07/24 19:29:13.93 A+Ff56tZ.net
新しい職場に来てWPFの案件なんですが正直レベルが高すぎてついていけません
今までもやったことはあったんですがまぁバックグラウンドにごりごりコード書いちゃうようなwinformsと大差ないようなので
当然MVVM全開でリアクティブでicommandでみたいな。正直このウインドウどこで呼んでるのどこでクリック処理してるのとかそのレベルでコード読むのが大変です
WPFwithMVVMを勉強するのになにかいいリソースってありますか。日本語書籍とか全然無いですよね。随分昔に出たXAMLプログラミングなる書籍は一通り読んだんですがそれにはMVVM一切無くて
681:デフォルトの名無しさん
23/07/24 21:00:07.43 KKtTNygQ.net
それはキツイな。同情するわ。
682:デフォルトの名無しさん
23/07/24 23:28:55.70 L/yEgKIa.net
俺はネットの情報だけでMVVMを覚えたけど、
リアクティブとicommandが何のことか分からない素人なので、
残念ながら助言できない。
683:デフォルトの名無しさん
23/07/25 00:06:37.05 GKGh2WSx.net
ReactivePropertyとかだったらokazukiのブログを一通り読むと少しは分かるかな
684:デフォルトの名無しさん
23/07/25 00:52:00.23 kw8ArH5v.net
リアクティブでごりごりされてたら読む気がおきない
685:デフォルトの名無しさん
23/07/26 11:55:11.15 BzcAP5MI.net
wpf のShowModalでダイアログ出しても
タスクバーで親ウインドウ選べてタブでフォーカス移動とか出来るのは
なんか対策ありますか?
686:デフォルトの名無しさん
23/07/26 17:54:38.19 iOxX8HKc.net
普通にOwnerの設定忘れじゃなくて?
687:デフォルトの名無しさん
23/07/27 19:09:01.36 T1U/urv+.net
Ownerは設定しています
マウスで親ウインドウをクリックならちゃんと子ウインドウがチカチカしますが
タスクバーで選ぶと選べてしまいます
688:デフォルトの名無しさん
23/07/27 20:05:05.04 4LOg1fU5.net
>>679
俺のWPFのWindowクラスにはShowModalというメソッドがない
Ownerを設定してShowDialog()したらフツーにあんたが希望してる動作になったぞ
689:デフォルトの名無しさん
23/07/27 20:56:02.18 83Yj8N2k.net
そう。多分勘違い。
690:デフォルトの名無しさん
23/07/28 01:56:53.18 fJMcb68e.net
申し訳ありません確認不足でした
スペルはミスです
それとメインウィンドウからの一段回目のダイアログは問題ありませんでした
サブのサブを出したときに変な感じです
imgur.com/a/Ny0LW7A
691:デフォルトの名無しさん
23/07/28 02:42:36.52 tnpoO9lU.net
これは知らなかったな
マウスで操作する分には何も起こらないけど
キーボードで操作したらボタン押せちゃって、もう1個ウィンドウが開いた
692:デフォルトの名無しさん
23/07/28 02:47:31.78 tnpoO9lU.net
サンブルとしてボタンをクリックしたら、サブウィンドウが出るように作ったってことね
693:デフォルトの名無しさん
23/07/28 03:22:34.24 V2VuB5te.net
・Win32 API の EnableWindow で開く前に自身を無効化しておく(false)
・子の Closed イベントを購読しておいて子が閉じた時に Enablewindow を使用して有効化(true)する
・そのあとで子を ShowDialog
でいけないかな
694:デフォルトの名無しさん
23/07/28 03:36:24.33 V2VuB5te.net
Closed イベントじゃなくて ShowDialog の後で EnableWindow でもいいかも
子が閉じるまで処理止まるはずだから
695:デフォルトの名無しさん
23/07/28 03:42:52.01 V2VuB5te.net
var hWnd = new WindowInteropHelper(this).Handle;
EnableWindow(hWnd, false);
win.ShowDialog();
Enablewindow(hWnd, true);
みたいに。試してないが。
696:デフォルトの名無しさん
23/07/28 09:10:07.71 rw0v5Bhm.net
>>684
俺の環境だとまったくそうならない。win11でのvs17.6.5で.net framework4.8.9167.0
バージョンは何?
697:デフォルトの名無しさん
23/07/28 12:08:54.40 tnpoO9lU.net
>>684
キーボードで操作出来ちゃうのは、↓で防げるな
子ウィンドウをShowDialog()する前/後で、親のウィンドウのIsEnabledプロパティを無効/有効
>>689
効果なかった
698:デフォルトの名無しさん
23/07/28 23:47:06.43 fJMcb68e.net
>>690
win10, win11どっちもで
vs2017express と vs2022community
.NET Framework4.8 と .NET6
vs2022からデバッグで起動すると
そもそも動きがダメダメで駄目だった
exe直接開かないと話にならない
何だこりゃ
699:デフォルトの名無しさん
23/07/29 11:50:08.48 I6XWshKt.net
そもそもモーダルwindowからモーダルをまた開くのがおかしいのでは?
700:デフォルトの名無しさん
23/07/29 16:07:13.22 KgtriUaM.net
>>692
バージョンにそれほど差異はなさそうだ。
だがこっちで.NET 6と7でも試したがどうにも再現しない
コードはこれ
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
仮想環境上のほぼ素のWin10に.NET Framework 4.8で作ったexeを持っていって実行しても再現しない
他の人は再現しているようだから起こるんだろうね。だが俺には無理そうだ
最後に念のため当方の環境を書いておくよ
Windows 11 Pro
バージョン 22H2
OS ビルド 22621.1992
Windows 10 Home
バージョン 22H2
OS ビルド 19045.3208
Microsoft Visual Studio Community 2022
Version 17.6.5
VisualStudio.17.Release/17.6.5+33829.357
Microsoft .NET Framework
Version 4.8.09032
RuntimeInformation.FrameworkDescriptionで取れる.NETのバージョン
.NET Framework 4.8.9167.0
.NET 6.0.20
.NET 7.0.9
701:デフォルトの名無しさん
23/07/29 16:57:46.82 zcThIP3a.net
>>694
そのコードで再現する
実行時の操作方法が合ってないと思われ
タスクバー使ってない気がする
702:デフォルトの名無しさん
23/07/29 17:29:00.89 k66xJEd7.net
.vsとbinとobj削除したプロジェクトzipでくれ
703:デフォルトの名無しさん
23/07/29 19:57:44.82 I6XWshKt.net
だからShowDialogしたwinodwからShowDialogするアプリってなんだよ
実際
704:デフォルトの名無しさん
23/07/29 20:31:56.47 rLsm4ZL4.net
普通にありそうだけど。
例えばモーダルの設定画面から起動するファイルダイアログとか。
VSのオプションで、「プロジェクトおよびソリューション」→「場所」とか
705:デフォルトの名無しさん
23/07/29 22:57:25.29 I6XWshKt.net
ああそういうことか
やっとお前らが何を言ってるのか理解した
結論としてはモーダルwindowをタスクバーに出してるんだろ
それじゃダメ
win.ShowInTaskbar = false;
その後にshowdialog
706:デフォルトの名無しさん
23/07/29 23:03:32.75 I6XWshKt.net
何か特殊な状況とかあってハマってるのかと思ったら古来から伝わる話だった
707:デフォルトの名無しさん
23/07/30 00:27:23.64 SWW1XK+d.net
>>695
なった、なった。俺の勘違いだった。すまん
モーダルのダイアログボックスがモーダルのダイアログボックスを開くことはある。たとえばこんな感じ
URLリンク(i.imgur.com)
すでに >>699 に書かれてるとおり、この動作がこれまで問題になってないのは、上の画僧のようにモーダルにするダイアログボックスはタスクバーに表示させないのがUI作成の作法だからだろう
モーダルにするダイアログボックスというのは所有ウィンドウと内容が強く関連し、その一部のようなものだからモーダルにするのだし、単独では存在しないのだから、タスクバーに出すのは先頭の所有ウィンドウのみにすべきだと思う
よって、ShowInTaskbarをfalseにすれば問題解決
708:デフォルトの名無しさん
23/07/30 09:17:38.39 ra9EA2uQ.net
>>701
こんなん普通だろ
モーダルウインドー表示中に
システムエラーでるパターンは大体こうなる
709:デフォルトの名無しさん
23/08/01 18:51:53.90 7eSyhjys.net
いろいろやってみたけど
モーダルではない Show で出したウインドウからShowDialogしてもダメダメだし
メインウィンドウ以外はタスクバー使うなって事なのかな?
最小化すると懐かしい雰囲気が味わえるね
IsEnabledで被害を防ぐのはいいんだけど戻ったときに親のフォーカスがなくなるのが難点
子ダイアログではなく親ウインドウをタスクバーから消すのもやってみたがウインドウまるごとチラつくのでやな感じ
これなら親を消すほうがいいな
710:デフォルトの名無しさん
23/08/01 20:45:37.33 XpUMrXC2.net
今更どうにもならんとは思うが、ページ遷移型で組んでコンテントダイアログ使うのが一番いい
ウインドウは一つだけだから何も考えなくていいからね
711:デフォルトの名無しさん
23/08/04 22:18:29.56 p+l3H84b.net
久しぶりにwinUI3触った
あんまり進展はないようだ
GUIデザイナがないのは致命的で知らないコントロールの機能を手探りで実装していくのは大変だった
優秀な人には余裕なのかもしれないけどここまで辛い状況とは思わなかった
知っている人向けなんだよ全部が
712:デフォルトの名無しさん
23/08/04 22:50:44.24 p+l3H84b.net
UWPで開発してそれをWinUI3に移植するのが近いのかと思ったけど
それも怪しい
なんか思ってたのと全然違う
713:デフォルトの名無しさん
23/08/04 22:51:51.21 H/tEfCiJ.net
>>705
HTML、CSS とかはどうやってるの?
714:デフォルトの名無しさん
23/08/04 22:54:22.35 p+l3H84b.net
>>707
ググれば山ほど記事が出てくるでしょ?
国内外問わずに
winUI3はそれがない
あってもMSのクソドキュメント
715:デフォルトの名無しさん
23/08/04 22:58:35.63 p+l3H84b.net
WinUI3は基本のテンプレートのルートにあたるレイアウトコントロールがstackpanelになってる
しかもorientationがhorizontal
XAML入門者がGridをデザイナ抜きで使いこなせるとは思えないからだろう
Gridも仕様変更か追加されてて普通に使いにくい
716:デフォルトの名無しさん
23/08/04 23:02:46.68 p+l3H84b.net
デザイナがあればツールボックスにコントロールが一覧表示される
そこに表示されているアイコンや名前から機能を類推して選択することが出来る
それがない
手探りはまずいと思ったのかストアからギャラリーがインストールできるようになってるけど
出来が悪い
残念ながらサンプルとコードが一致してない
コピペで動くようにすらなってない
717:デフォルトの名無しさん
23/08/04 23:36:37.10 0JBhJhQY.net
HTML扱えたらXAMLも似たようなものだったけどな
718:デフォルトの名無しさん
23/08/04 23:39:18.35 ma+YRo6X.net
私みたいな出来の悪い人はWinUI3挫折してWPFでやってる
719:デフォルトの名無しさん
23/08/04 23:50:32.05 YGjl9jfE.net
>>711
笑
720:デフォルトの名無しさん
23/08/04 23:52:28.56 oW25VfjB.net
>>709
GridよりStackPanelの方がレイアウト時の負荷が軽いんじゃなかったっけ
721:デフォルトの名無しさん
23/08/05 00:01:18.60 MhNBXByr.net
デザイナー作るのそんな難しくないのにな。
やる気の問題か?
722:デフォルトの名無しさん
23/08/05 00:06:20.15 49wwu17R.net
逆に Grid をデザイナで調整する方が難しくない?
余計な Margin が設定されたりするし
プレビュー程度にしかつかわないな
723:デフォルトの名無しさん
23/08/05 00:14:34.58 ddH4mDWJ.net
WinUI3のテンプレートの出力を小一時間イジっただけで全部把握しているように振る舞えるメンタルは尊敬に値するわw
724:デフォルトの名無しさん
23/08/05 00:16:24.64 ZG2jS4fE.net
VBからポトペタでやってきた人にはそれができないと困っちゃうのかな?
725:デフォルトの名無しさん
23/08/05 08:48:23.47 Jl4w36Dl.net
xamlをGUIで設計する奴なんておらんやろ・・・おらんやろ?
726:デフォルトの名無しさん
23/08/05 09:32:31.05 K+IHkxAt.net
バインドの書式とかサッパ�
727:鰍セからつこうとるよ
728:デフォルトの名無しさん
23/08/05 09:48:07.14 wQaB7TT9.net
>>717
テンプレートってこんなだぞ?
頭大丈夫か?
<Window>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Button x:Name="myButton" Click="myButton_Click">Click Me</Button>
</StackPanel>
</Window>
729:デフォルトの名無しさん
23/08/05 09:50:01.90 wQaB7TT9.net
>>719
バインドはGUIでやってる
IDEでサポートされるようになってWPFをまあまあ使うようになった
それまでは全然使わなかったけど
730:デフォルトの名無しさん
23/08/05 10:05:49.53 ddH4mDWJ.net
>>721
少し上で5連投している彼のことだよ
731:デフォルトの名無しさん
23/08/05 10:08:37.40 wQaB7TT9.net
>>723
だから俺だよ
732:デフォルトの名無しさん
23/08/05 10:25:30.61 wQaB7TT9.net
WPFのデザイナはドンドン進化を続けていてかなり便利になっている
かなりの部分が手で書かなくても確認し選べる
自分のミスも見えるし自動入力なのでそのそもミスが起こらない
733:デフォルトの名無しさん
23/08/07 14:28:05.32 xnajTjTc.net
コントロールのデザインはいつ進化しますか?
734:デフォルトの名無しさん
23/08/07 20:31:20.53 ianDibNu.net
webview2が出て全て解決したはずだが
735:デフォルトの名無しさん
23/08/08 01:05:30.69 IyV15CeD.net
ファイルをwebview2にドラッグ&ドロップした時、セキュリティをすっ飛ばしてファイルのフルパス取得出来るようになった?
736:デフォルトの名無しさん
23/08/08 07:57:17.91 rQ7TZ/NI.net
WinUI3は流石に安定し始めているしデザインだけじゃなくてxamlも進化しているし
そろそろ使い始めても良いんじゃないかな
unpackagedでコンパイラの出力をそのままコピーするだけで動くのも大きい
737:デフォルトの名無しさん
23/08/08 08:44:11.20 6xGdan8t.net
ユーザー報告のissue放置しまくってるのに安定とはこれいかに
738:デフォルトの名無しさん
23/08/08 08:46:49.69 +QZUW2Vj.net
WinUI3はWPFよりも流行らずに死ぬと思うね
739:デフォルトの名無しさん
23/08/08 09:34:36.21 12xdoC8F.net
皮WPF+WebView2+reactでok(*бωб)
740:デフォルトの名無しさん
23/08/08 11:08:28.84 DR6HV6l/.net
Googleのカイゼン活動についていく気は無い
741:デフォルトの名無しさん
23/08/08 13:12:34.17 egrx38+v.net
でもマテリアルデザインは使うんでしょう?
まさか生WPFのまま使い続けてるとか・・・?
742:デフォルトの名無しさん
23/08/09 11:20:59.99 +lD1iL0g.net
VirtualizingStackPanel.IsVirtualizing="True"なItemsControlでスクロール位置を保存したい。
ScrollViewerのScrollableHeightやExtentHeightは仮想表示がONのためか、同じ表示内容でも毎回変化してしまい
指標となる不変の高さが存在しない
何かいい方法ないですか?
743:デフォルトの名無しさん
23/08/10 13:28:25.50 Aji0Vi4e.net
>>735
1. 可視範囲内で先頭の要素のインデックスを保存しておく。
2. 復元時は ItemContainerGenerator.ContainerFromIndex
を使ってインデックスから要素を取得。
3. その要素の BringIntoView を呼び出す。
みたいな感じでいけるかも。
744:デフォルトの名無しさん
23/08/10 16:54:00.98 mo1X7ejl.net
>>736
ありがとうございます。
表示内容側からアプローチですね
がんばってみます
745:デフォルトの名無しさん
23/08/10 19:57:26.05 doLXtH58.net
WPFのWindows 11 themeも全然進んでねぇし
WinUI 3といいひどすぎる
746:デフォルトの名無しさん
23/08/11 13:37:47.66 JGKsK+J9.net
なんもいじってないvisualstudioだと画面のビジュアルが上に表示されてその下にxamlのエディタが出るじゃないですか
それでまぁそのエディタが狭い。数百行とか1000行を超えるような画面になるとまぁあの狭い画面じゃまったく把握できない
みなさんどういう風にいじって開発されてます?
747:デフォルトの名無しさん
23/08/11 13:47:06.17 HA39DxTe.net
>>739
モニタがフルHDだったりしない?
WQHD だと特に狭いと感じないな。
縦向きにするといんじゃね?
748:デフォルトの名無しさん
23/08/11 20:02:52.96 dFkQ56Sr.net
>>739
上下ではなく左右に
749:デフォルトの名無しさん
23/08/12 23:21:45.24 CdwkORH9.net
あー左右に並べられたんですね。ボタンで一発ですか。ありがとうございました
なぜ気づかなかったかな
750:デフォルトの名無しさん
23/08/15 19:02:52.22 d9T9MMRf.net
>>738
Win11のGUIがなぜ一向にFluent化されずハイスペックマシンでもカクついたりするほどパフォーマンスが悪いのか疑問に思ってたんよ
ところが海外でWin11からシステムファイルをどこまで削除して起動できるかという試みがあって
極限まで削除したその結果なんとGUIがWin10そのものだったんよ
要するにWin11はWIn10のShellにXamlを使ってWinUIでOSのGUIを個別に作ってやがったんだよ
まさかWin11のGUIってOSネイティブじゃないからコピーなんかのコモンダイアログすらFluent化されてないんじゃ・・って怪しんでた通りで唖然としたわ
だってデスクトップだけ見てもmacOSやLinuxはGUIがアップデートされたらネイティブだからすべて統一されてるじゃん
こんな統一感のないGUIは世界中探してもWin11だけよ
まさかWindowsのコアであるタスクバーやExplorerやタスクマネージャーまでWinUIだったとは思わんかったわマジでMSってもうまともなエンジニアがおらんのやなって思ったわ
751:デフォルトの名無しさん
23/08/15 20:19:13.24 sK7X6CvI.net
winui commnity callの動画見てもエクスプローラでWinUI使ってるって言ってるやろ
具体的にはしらんがで、
エクスプローラで使われてる機能のバグだけ修正して終わり
752:デフォルトの名無しさん
23/08/15 20:27:56.15 WNL7znVK.net
>>743
その海外のサイト教えて
753:デフォルトの名無しさん
23/08/15 20:28:03.58 8at2H6c0.net
こういうレベルの誤解が出来るってある意味スゲーよな
754:デフォルトの名無しさん
23/08/15 23:14:22.56 vZJb8fI+.net
Windows3.1のアプリですら動かせるように過去バージョン互換をつけるならそう簡単にUIを作り変えることなんて無理なんだろ
755:デフォルトの名無しさん
23/08/16 22:24:28.98 jhvhNJs7.net
そもそもガラスっぽい窓なんかVistaでやってんのよ。8で発作のように板切れにしただけで、本来昔からもっさり半透明じゃん。
756:デフォルトの名無しさん
23/08/17 20:31:53.08 Mmj008cu.net
URLリンク(medium.com)
flutter 3.13来たね
4ヶ月おきリリースサイクルの安定感
757:mdysdev ◆XSDsAilQpD0E
23/08/18 01:54:49.98 ZBuWhXbf.net
WPFで専ブラ作ってみたので評価してもらえないだろうか
URLリンク(github.com)
githubも初めて使うので不備があったら申し訳ない。
ビルド済みzipもReleaseのところから落とせるはず
URLリンク(i.imgur.com)
簡単な外観変更も可能
URLリンク(i.imgur.com)
レス書き込みは出来るけどスレ立ては出来ない。
機能的にはJaneStyleに及ばないけど徐々に追加していきたい。
758:mdysdev ◆XSDsAilQpD0E
23/08/18 01:57:49.99 ZBuWhXbf.net
datにフリーでアクセスさせてくれる8月いっぱいまでの短命になってしまかもだけど・・
759:デフォルトの名無しさん
23/08/18 11:43:46.81 TTcuER0I.net
評価って、何の評価よ?
技術的な評価?それともアプリのできの評価?
まぁ、後者としてコンセプトは何よ?それが見えない
760:デフォルトの名無しさん
23/08/18 11:49:31.42 GXfltUMT.net
.NET7が必要な理由ってあるのかな?
.NET4.8.1じゃ動かない?
761:デフォルトの名無しさん
23/08/18 11:50:33.68 TTcuER0I.net
既存のアプリのここがすげぇ使いづらいからそこを改善したアプリを作りますとか
新しいコンセプトのアプリ思いついたので作りますとか
そういうのがないならユーザー目線で新しいアプリいらん..
762:デフォルトの名無しさん
23/08/18 11:56:48.32 ubEEPNgg.net
オプソってのはいいんでは
763:デフォルトの名無しさん
23/08/18 11:57:14.51 TTcuER0I.net
ちょっと前にもMAUI君が5chブラウザつくるといって1ヶ月で逃げ出したけど
少なくとも彼はsikiとか既存のアプリの見た目がショボいからWinUIの今時のアプリ
作るといってたが
逆にそっちが先にどういうアプリ作るのか言ってくれないと
この段階で評価なんかしようがない
764:デフォルトの名無しさん
23/08/18 12:01:25.04 zHuPFGZF.net
>>750
使ってないが画像見る限りWindowsの専ブラ特有のクソダサいUIで使う気にならない
せめてWinUI3.0でAcrylicやMicaのFluent Designを実装しろよ
俺はWin 11の自作アプリは全部WinUI 3.0でAcrylic化してるしそのためにWPFではなくWinForms使ってる
だから俺は専ブラだけはmacOSのBathyScapheをずっと使ってるわ
あとオタク特有の自己主張と承認欲求の気持ち悪いアニメ壁紙が本当に無理
この必要のないオタクアピが生理的に受け付けないからアプリを評価する気にもならない今後は気をつけろ
765:デフォルトの名無しさん
23/08/18 16:51:56.55 GXfltUMT.net
何だかんだでsikiも慣れると快適だな
もう旧い専ブラに戻れないかもw
766:デフォルトの名無しさん
23/08/18 18:15:27.63 frpqeMB+.net
>>750
直近の騒動に触発されて情報収集&開発をしたのだと推察すると、
もしコンセプトが決まっていないのなら、UIや専ブラ特有の機能は最小限にして
5chの仕様変化にいち早く追従するリファレンス実装(動くドキュメント)をめざす
と言うのはどうでしょうか?
767:デフォルトの名無しさん
23/08/18 18:49:00.48 TTcuER0I.net
この段階で評価しようがないと書いたのは、ボロクソに書くとあれかなーと思って
お茶を濁したんだけど同じ意見のボロクソに言ってる人がいるんで
俺も正直に言うけど
>>757の言うとおりで見た目がダサすぎて使う気すらおきない
で、さっき書いた通りコンセプトとロードマップもわからないので将来性についても
何も評価できん
768:デフォルトの名無しさん
23/08/18 18:53:02.10 TTcuER0I.net
ただ、一ついいとこ見つけたのは
ソースコード見る限りMAUI君チームより技術力は全然上そうなので
開発のペースは速そうw
769:デフォルトの名無しさん
23/08/18 18:57:48.56 VmqYer8d.net
>>750
GUIを頑張ったみたいだね
まずは経験を積んで次のブラウザへのモチベーションを高めるんだ
2chブラウザなり5chブラウザを作る際にいつも悩むのはLib名
数字からスタートする名前には出来ないからな
ひっくり返してhc5
770:デフォルトの名無しさん
23/08/18 19:02:18.39 VmqYer8d.net
お前らぼろくそに言ってるけどこれが初めてならかなりいい方だよ
どこもけなすところがないぐらい
771:デフォルトの名無しさん
23/08/18 19:05:54.87 zHuPFGZF.net
車輪の再発明どころか劣化コピーとか誰も使わねーって遠回しに言ってんだよ
なんでみんな5chやしたらばをiPhoneやAndroidの専ブラで見てるかというとWIndowsはフォントやUIやUXが10年以上もクソゴミのままだからなんだよ
俺も嫌気がさして5chだけサブ機のMacBook ProでBathyScaphe使ってるくらいWIndowsの専ブラはゴミ
772:デフォルトの名無しさん
23/08/18 19:08:42.52 VmqYer8d.net
個人の勉強のために作ったものに対して車輪の再発明だとかクソジジイみたいなことを言ってるんじゃないな
昭和かよ
今はそういう時代じゃない
773:デフォルトの名無しさん
23/08/18 19:16:49.20 VmqYer8d.net
さっきソースをひととおりざっと見たけどまあ基本的な仕組みをちゃんと使えてて良い作りだと思います
ビジネスロジック自体はあまり実装されていないのでGUIから興味が薄れたらそっちを実装するのも良いと思います
うんこれからこれから
この調子でガンガンコード書きましょう
774:デフォルトの名無しさん
23/08/18 19:19:47.55 DRhexSXV.net
お前ら文句しか言わないのか。
775:デフォルトの名無しさん
23/08/18 19:20:22.30 VmqYer8d.net
文字のエンコードは "Shift_JIS"じゃなくてコードページ932使ったほうがいいと思う(個人の感想です)
776:デフォルトの名無しさん
23/08/18 19:21:24.55 TTcuER0I.net
>>763,765
あのさ、技術的な評価とユーザ目線のアプリの評価を分けて考えような...
ユーザ目線のアプリの評価に初めて作ったアプリとか開発者の経歴とか関係ないから
そういう目線では現状ボロクソに言ってるだけ
技術的な話するなら、仮に初めて作ったアプリなら君のいうとおりだと思うよ
777:デフォルトの名無しさん
23/08/18 19:22:56.03 XwGGDBgg.net
>>767
ID:zHuPFGZF が口だけ番長なのはみんなわかってんねんw
778:デフォルトの名無しさん
23/08/18 19:23:49.25 TTcuER0I.net
だから、最初から>>752に書いたけど作者がどういう評価を求めてるのかわからない
っていったじゃん
それで俺は後者としてユーザ目線のアプリの評価しただけ
779:デフォルトの名無しさん
23/08/18 19:27:37.04 VmqYer8d.net
WPFスレでユーザー目線の評価求めるとは思えんが…
それはさておきコード品位や実装度見てコード書いた人間の技量はある程度判断できるだろう
相手がミシュランシェフなのか子供がケーキ作ってるのかぐらいわかる
それが出来ないで噛みついてくる奴はほおっておけばいいんだなあ
780:デフォルトの名無しさん
23/08/18 19:27:40.02 6IXOAKAq.net
クソジジイ大杉問題
しかも自慢気にWinForms使ってる宣言とかイカれてるw
781:デフォルトの名無しさん
23/08/18 19:30:47.50 TTcuER0I.net
>>772
だから、それに確信が持てなかったから俺はちゃんと後者(アプリの評価)って断って俺は話進めた
他は知らんが
782:デフォルトの名無しさん
23/08/18 19:44:10.22 zHuPFGZF.net
まーたWinUI3.0がXAMLじゃなくWin32アプリ向けのアップデートだと知らないニワカの勉強不足の低脳のアホが沸いてて草生える
まぁ低脳に物教えるのが俺の仕事じゃねーから一行もコード書いてないWinUI3.0触ってすらいないニワカのアホの煽りは完全スルーするがな
ゴミ専ブラをゴミと言われて顔真っ赤で自演してるとかさすがアニメオタクだなキモすぎる
本当に擁護がいるならお前らがコントリビューターになってプルリク送って支援してやれよ
まぁバカどもは口だけで100%やらねーだろうがな
俺はフォントもUIも美しいBathyScaphe使い続けるわ
ちなみにこれがBathyScapheなWindowsの専ブラのゴミUIとは次元が違う
URLリンク(i.imgur.com)
783:デフォルトの名無しさん
23/08/18 19:44:16.86 gKDyG49H.net
連投で多く見えるが、貶してるのは二人だな
784:デフォルトの名無しさん
23/08/18 20:21:20.96 ubEEPNgg.net
>>775
そんな違わなくね
785:デフォルトの名無しさん
23/08/18 20:31:42.39 mKYiQp9K.net
>>775
とりあえずダークモードならかっこいいって思ってるでしょ
786:mdysdev ◆XSDsAilQpD0E
23/08/18 21:57:15.17 ZBuWhXbf.net
普段はJaneStyle使ってましたが、ご推察の通り7月のゴタゴタで専ブラ作ってみようと思い立った。
事前に色々調べて、8月初めから作成に着手して昨日なんとか形になった。
確かにコンセプトって言われると困るけど、自分の中ではJaneStyleの使用をやめたいっていう単純な理由。
Windows環境でさくっと読み書きできるツールになればいいかなと。
本業はC#でWebアプリのバックエンドをやってる。WPFは数年前にちょろっとやったのを必死に思い出しながらというところ。
GUIアプリの経験があまりないので、業務にも耐えうるようなものになっているか知りたかった。
.NET7にしたのは最新のC#の勉強も兼ねてってことなのでご容赦を。
9月以降もdatアクセス手段を提供してくれるなら開発を続けたいけど、またAPI Keyとか始まったら諦めるしかないかも。
UIが野暮ったいのは時間をかければ治せるかもだけど、鯖側の仕様変更はどうしようもないです
787:デフォルトの名無しさん
23/08/18 22:03:57.97 o8PnwUuK.net
>>775
大差なくて草なんだが
788:デフォルトの名無しさん
23/08/18 22:22:27.91 VmqYer8d.net
完全にスレチなんだけどコンセプトはそんなに大げさに考えなくていいと思うよ
従来のアプリにしたいのかwebライク(YahooやBingのポータル風とか)なのか
jane styleを踏襲したいのか他のアプリを踏襲したいのか
一度の沢山スレを表示したいのか(その方式も旧tweetdeckやマルチwindowなどいろいろ)1つだけでいいのか
遊びを多く入れたいのか実用本位なのか
拡張性を充実するのか自分で全部実装したいのか
重くてもいいのか軽量をめざすのか
可能性は無限大
789:デフォルトの名無しさん
23/08/18 22:28:53.50 IBEnmxTA.net
>>775
笑うなw
790:デフォルトの名無しさん
23/08/18 22:34:16.95 IBEnmxTA.net
5chはスマホアプリのchmate位で十分だよ。
791:デフォルトの名無しさん
23/08/18 22:36:33.99 G7CpfWCv.net
chmateがwindowsで動く時代だからな
792:デフォルトの名無しさん
23/08/18 23:07:15.21 VmqYer8d.net
大体1個目はjane系のクローンになってしまう
やればやるほどクローンの完全実装はそんなに楽じゃないと気が付く
頑張って実装を進めて自作機能も充実させたところででも別にjaneでいいんじゃないかと言うことになる
そこで終わる
クローンの機能の実装のためのコーディングは非常にやりがいはあるけどそれ本当に必要な努力なのかと
こだわりがないなら一個目は適度なところで切り上げて別のコンセプトで作るのがおすすめ
793:デフォルトの名無しさん
23/08/18 23:08:53.42 i6F+l2qQ.net
>>775
え、もしかして釣りだったの?
794:デフォルトの名無しさん
23/08/18 23:14:02.82 TTcuER0I.net
何度も書いたが評価してって言って何を評価してもらいたいのかよくわからんのよ
使いやすくみんなに使ってもらいたいアプリとして評価して?
と思ったからユーザ視点でコンセプトとか求めたけど
単に技術的にコードレビューして評価してほしいなら
アプリのコンセプトなんて求めないし
君が単に「評価」してといったがみんなに何をしてもらいたっかったわけ?
795:デフォルトの名無しさん
23/08/18 23:19:42.15 i6F+l2qQ.net
> WinUI 3.0でAcrylic化してるしそのためにWPFではなくWinForms使ってる
ここでWinFormsが出てくるのが本当に分からない
796:デフォルトの名無しさん
23/08/18 23:21:02.08 qWXv9m9x.net
わからんのなら
797:黙ってろよ
798:デフォルトの名無しさん
23/08/18 23:25:04.25 TTcuER0I.net
自分がしゃべりたいようにしゃべるだけだよ
カス
799:デフォルトの名無しさん
23/08/19 00:32:40.65 GSj6RrWf.net
そもそも>>750の専ブラはThemeがLightなアクリルなんだが、彼はダークならアクリルだと思っているんだろうか?
800:デフォルトの名無しさん
23/08/19 01:56:58.32 1/hroNhs.net
WPFのスレでWPFアプリを作って公開したらWinFormsでやれと怒られる。
理不尽すぎる
801:デフォルトの名無しさん
23/08/19 02:11:07.74 C10c8hLy.net
>>791
何言語?
802:デフォルトの名無しさん
23/08/19 08:33:41.11 wdqaA6jW.net
効いてて草
803:デフォルトの名無しさん
23/08/19 08:57:39.75 +QDwvDWv.net
作りたいなら手を付ければいいのにな
モックなりプロトタイプなり、人によっては基本設計なりスケッチなり、
やりたいアイデアがあるなら端からやってみればいい
804:デフォルトの名無しさん
23/08/19 10:14:20.56 xxLsZdb0.net
>>775
フォントってモニターの解像度が高いと綺麗に見えるんだよ
そんなことも知らずにフォント叫んでるのお前だけだからな
805:デフォルトの名無しさん
23/08/19 11:39:14.41 Wl/qjPve.net
そういや、DATアクセスは8月まではフリーアクセスどうこう言ってるけど
運営は8月移行はどうなるかわからんとか言ったん?
806:デフォルトの名無しさん
23/08/19 14:14:58.58 Wl/qjPve.net
うんこWinUI 3の最新版リリースされたやん
Version 1.4 Preview 2
次がStableか
つかさ、新しいItemsViewコントロールとか
最初
ListView/GridView
で
ItemsRepeater
で
ItemsView
807:デフォルトの名無しさん
23/08/19 14:19:30.21 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:デフォルトの名無しさん
23/08/19 14:33:48.82 Wl/qjPve.net
ItemsRepeaterの問題は選択機能がなく、自前で実装(見た目とかも)しなきゃいけなく
億劫だったが
ItemsViewはそこら辺もListView/GridView見たくやってくれるようなったんだよね?
809:デフォルトの名無しさん
23/08/20 20:28:42.15 N/OxtUO+.net
ちゃんと手を動かして形にしてるだけ偉いと思うんだ
夏休みダラダラしてた俺とは天と地ほど差がある
810:デフォルトの名無しさん
23/08/20 20:43:28.47 yJmfO0+S.net
今はさすがに休もうよ
秋はコーディングの季節だ!
811:デフォルトの名無しさん
23/08/20 21:50:19.57 m38bh0Ky.net
近頃は秋なんかほとんどないけどね。
812:デフォルトの名無しさん
23/08/21 10:28:12.08 ol1P3YlW.net
>>779
UI/UXは技術じゃなくセンスだけども、頑張って欲しい
テーマを選べるだけでもいいかもしれないが
あとやっぱり機能として、スレ立ては欲しいな
813:デフォルトの名無しさん
23/08/22 22:27:09.72 gdIlDAxT.net
Vmという接頭辞がついているのにviewmodelじゃなかったり、過去の使われなくなったコードが全部残ってたり、1クラスが1万行超えてたりetcetc
おまけにそもそも設計のドキュメントは一切無い。外部向けの資料のみ。ひどい会社に来てしまった……
814:デフォルトの名無しさん
23/08/22 23:11:38.63 6gJfdiDb.net
JTCあるある
815:デフォルトの名無しさん
23/08/23 00:06:39.19 nS+GPZ+c.net
>>805
そういう愚�
816:sはマ板でやれ だからお前は駄目なんだよ
817:デフォルトの名無しさん
23/08/24 01:54:01.54 9YaJu4I5.net
>>751
datのフリーアクセスって8月いっぱいなの?
818:mdysdev ◆XSDsAilQpD0E
23/08/24 20:49:59.75 FZQDzoDX.net
>>804
スレ立てテストできる板ってどこかにありますか?
819:デフォルトの名無しさん
23/08/24 20:56:22.03 U1/Wc6cv.net
>>809
Anarchy実況
URLリンク(agree.5ch.net)
数分で消えるしdatも残らず消滅するから気楽にテストできる
820:mdysdev ◆XSDsAilQpD0E
23/08/24 21:07:04.44 FZQDzoDX.net
>>810
ありがとうございます。機能追加してみます
821:デフォルトの名無しさん
23/08/24 22:13:47.33 Tz9EhHoC.net
がんばれ!
822:デフォルトの名無しさん
23/08/24 23:13:10.10 ypVJRmCU.net
>>811
あのコードは何人で書いたんだ?
823:デフォルトの名無しさん
23/08/24 23:34:26.49 Ax2+ubkj.net
どう見ても一人だろ
824:デフォルトの名無しさん
23/08/26 11:36:32.15 UpJ7Bk8S.net
初心者じゃないんだから、5chブラウザつくるとしても
少し挑戦的な事してここの視聴者楽しませてよ
825:デフォルトの名無しさん
23/08/26 12:52:15.75 d6TpiO9T.net
ツマンネ。もっと気の利いたこと書き込めよ
826:デフォルトの名無しさん
23/08/26 14:29:43.74 QKHGYPpz.net
コード見るとわかるけど違和感しか感じない
C++?とか
827:デフォルトの名無しさん
23/08/26 14:37:18.36 QKHGYPpz.net
ともかくいろいろとちぐはぐしてる
人に見られることを前提とした普通に自分で組むには不要なコメントとか
大きなサービスとか…
828:デフォルトの名無しさん
23/08/26 15:09:41.41 hcnbZQTk.net
なんだそのふわっとした具体性のない指摘は
無理にケチ付けることないのに
829:デフォルトの名無しさん
23/08/26 15:24:12.70 QKHGYPpz.net
コードを見ればわかるよ
830:デフォルトの名無しさん
23/08/26 15:35:06.57 QKHGYPpz.net
もともとc++などを含めた他の言語で野良コードを書いてた人が
ビジネス向けの専門学校みたいなところでC#を学んでDIとか色々知識があるような印象
そして丁寧にコードを書いてるけどまだC#が血肉にはなってないので元の癖が出る
それか仲間の先生に当たる人が乱雑だったので変な癖が残っているか
誰か別の人間がところどころコードを書いたのかコピペしたのか
831:デフォルトの名無しさん
23/08/26 15:44:44.01 FILnRN1t.net
本当に具体性のない空っぽな指摘だな
こういうのが上司につくと辛い
832:デフォルトの名無しさん
23/08/26 17:09:36.31 UpJ7Bk8S.net
URLリンク(devblogs.microsoft.com)
833:デフォルトの名無しさん
23/08/26 17:15:40.72 lyifkqna.net
>>822
上司じゃなくてもキツイだろ
関わりたくねーわ
834:デフォルトの名無しさん
23/08/26 17:15:42.20 QKHGYPpz.net
>>822
いやいや指摘でもなんでもない
違和感を書いてる
そして何も気が付かないにぶーい人に自分の見解を伝えてる
835:デフォルトの名無しさん
23/08/26 17:28:24.81 QKHGYPpz.net
このスレの他の人はオリジナリティの話をしてる
昔からあるドラマや漫画で出てくるような芸術作品や演奏に対する指摘のようなもので
君の作品には情熱が感じられない教科書通りでつまらないみたいな話
いまだとばらかもんが丁度似た様な話をしてる
自分は今現在はそこまでの話をする段階にないと思う
適当なところで切り上げて色々デザインして経験してみたほうがいい気がする
その後に作ったものが自分が楽しんで使ってることに喜びを感じるレベルになれば人からもそういった面で良い評価を貰えると思う
836:デフォルトの名無しさん
23/08/26 17:41:00.84 UpJ7Bk8S.net
せっかくアプリ作って公開しましたと面白そうなネタが投下されたが
だめそうだな
837:デフォルトの名無しさん
23/08/26 17:56:06.42 hcnbZQTk.net
それっぽいこと言って偉そうにしたいだけか
どうりで中身が皆無なわけだ
838:デフォルトの名無しさん
23/08/26 18:25:05.72 W2Um6gjp.net
アクロバティックなものを所望ならBlazor Hybridもいいと思うのよ
実用性あるかは別の問題として、前例のないことをやるという点は満たしてる
839:デフォルトの名無しさん
23/08/26 22:00:12.76 16WUCkmH.net
書き方なんてどうでも良いのよ?
ゲイツはみんなと違う画期的なコードで時代を切り開いた。
840:デフォルトの名無しさん
23/08/27 00:46:17.43 W3b+7qIa.net
>>825
では俺も ID:QKHGYPpz のレスを見て指摘でなく違和感を書こうかな
誰の何の役にも立たない独り言なら、多数が集う掲示板でなくチラシの裏にでも書いて誰にも見せず捨てればいいのに
会話できず、するつもりもないと開き直るなら掲示板にくるのは無駄だし害悪ですらある
これに気が付かないにぶーいID:QKHGYPpzに自分の見解を伝えてみた
841:デフォルトの名無しさん
23/08/27 09:09:39.66 4wYaVVdN.net
お前の方こそブーメラン刺さってねw
842:デフォルトの名無しさん
23/08/27 11:36:52.09 3H5CXIUM.net
>>830
どんなの?
843:デフォルトの名無しさん
23/08/27 12:46:27.21 W3b+7qIa.net
>>832
そのとおりだよ。わざと >>825 を真似て醜悪な文面にしたのだから
>>831 のレスは ID:QKHGYPpz の鏡だよ
844:デフォルトの名無しさん
23/08/27 12:58:47.33 t0g5o5TS.net
そんなこともわからない>>832の頭の悪さときたら
ってことでしょ
845:デフォルトの名無しさん
23/08/27 13:51:55.91 vknuNgDk.net
viewmodelsって対応するviewに表示するためのデータとロジックを持ってるって認識で合ってる?
コード見てると他のviewmodelファイルでインスタンス化されたりプロパティが呼び出されてたりしててあれこういうのありなの?って
846:デフォルトの名無しさん
23/08/27 14:43:13.39 Qf4ZUzrP.net
例えばどのファイルのどこがおかしい、改善すべきと言わないと
847:デフォルトの名無しさん
23/08/27 21:19:33.66 vknuNgDk.net
機能修正の事前準備としてリファクタリングさせてください
とか言ってもひとまず機能修正優先でとか動いてるんだから余計なことするなとか言われるのがオチだよね
848:デフォルトの名無しさん
23/08/27 21:40:22.11 IUQW/AR/.net
もうその5chブラウザの事ほっとけよ
作者があまり顔出さないのに
作者不在のままここで毎回ゴタゴタが発生であほらしい
ほっとくのが吉
849:デフォルトの名無しさん
23/08/28 19:25:42.52 Ed5E1clR.net
心理的安全性の低いスレだな
850:デフォルトの名無しさん
23/08/28 19:58:34.85 BueC5+dS.net
攻撃しても何もいいことはないのになあ…
googleの本でも読めば良いのに
851:デフォルトの名無しさん
23/08/28 20:00:38.72 BueC5+dS.net
ふと思ったことや感じたことを言うと叩かれる → 心理的安全性が低い
他人の行ったことを否定する → 心理的安全性が低い
本人に自覚がないのが恐ろしい
852:デフォルトの名無しさん
23/08/28 20:44:27.43 QJ/DbKdl.net
マスゴミって批判しないで、記者が萎縮してしまいます。でも自分達は批判も攻撃もするけどね。みたいな二重基準?
853:デフォルトの名無しさん
23/08/28 21:29:09.23 6uHv/wqC.net
技術的な話とかに関して色々批判はいいと思うけど
最後は人格攻撃と不毛な事になるのが多いからなw
854:mdysdev ◆XSDsAilQpD0E
23/08/30 09:16:29.73 rmxbhQ8d.net
MVVMって例えばWPFでいうなら、VMでSystem.Windows名前空間をusingしないっていう認識で合ってる?
要はVMだけでOS非依存のdll化できるか
855:デフォルトの名無しさん
23/08/30 10:42:16.63 mm/q7vOw.net
そんな定義は聞いたことないな
856:デフォルトの名無しさん
23/08/30 11:12:09.35 FKrsdOsE.net
究極の疎結合って意味では合ってる
CommunityToolkit.mvvmもプラットフォーム非依存だし極端な話、上側がWinUI3でもVMそのまま動くってことでしょ
ただ実際問題すげーめんどくさいとは思うがw
857:デフォルトの名無しさん
23/08/30 13:38:27.33 Zjd+Qgp2.net
だね、5chブラウザのほうでViewModelでウィンドウクラス?を参照してたのは気になってた
まぁ、最初の1回だけは勉強のためMVVMガチガチにやって頑張ってもいいし
そこは本人次第
858:mdysdev ◆XSDsAilQpD0E
23/08/30 14:56:17.68 rmxbhQ8d.net
ありがとう、System.Windowsを分離してみる。
>>848
確かにWindowは分かりやすく「ん?」ってなるけど、
ClipBoardとかBitmapImageとかもみんなSystem.Windows配下なんだよね。
これらの処理を全部持ってくと、Viewにも結構ロジックが必要になりそう。
UIフレームワーク固有の機能なんだから疑問を持つのがおかしいのかもだけど
859:デフォルトの名無しさん
23/08/30 23:23:43.59 I012WzjW.net
View固有の機能じゃなければ分離しなくてもよい
860:デフォルトの名無しさん
23/08/31 00:04:15.85 tqam1yBh.net
その前にenumの機能のおさらいをしたほうが良い
861:デフォルトの名無しさん
23/08/31 01:17:12.25 UxD03clT.net
MVVMといえばうちの会社でのプロジェクトでさぁ例えばだけどmodelにcircleクラスがあるとするじゃん
んでそれをコンストラクタの引数に取るVmCircleなるクラスをわざわざ作るのよ。んでそれを各種viewmodel内部でいじるんだけど、VmCircleはCircleのviewmodelとか言ってるの
おかしいでしょそれはviewmodelでもなんでもないでしょって言ったんだけどいやviewmodelだって
これ俺がおかしいのか?
862:デフォルトの名無しさん
23/08/31 01:44:14.25 k/7LWfvb.net
>>852
サーバサイドでも使う Entity とかを .NET Standard で共有して、
クライアントサイドではそれをINotifyPropertyChanged を実装したクラス (VM) に変換する必要がある、
もしくは将来的に変更通知が必要になる可能性を見越してそうしておく、
とかならありえなくはないんじゃない?
863:デフォルトの名無しさん
23/08/31 07:06:57.56 BoGIe8nI.net
>>845
変な理解しているな。
ViewModelでBitmap加工などは普通にやる。 当然、System.Windowsをusingする。
Viewのエレメントに直接アクセスするなという事だけ。 いわゆる委譲だな。
例えば、Viewにパラメーター渡すために、IxxxViewRepositoryインターフェースをViewに継承させ、そのレポジトリをViewModelにインジェクションすればそれでOK。
ContainerのChildrenは、ViewModelにダイナミック生成バインドできないので、Add、Remove、Move操作をそういう方法でやる。
DDDなどのクリーンアーキにチャレンジしてみれば、その辺はインチュイティブに理解できるようになるよ。
864:デフォルトの名無しさん
23/08/31 07:56:35.25 UxD03clT.net
>>853
そもそもviewmodelってviewとmodelをつなぐ役割をするものじゃないんですかね
別に対応するviewなんて何も無いただデータとそのメソッドを持つだけのクラスをviewmodelと言えるんでしょうか
865:デフォルトの名無しさん
23/08/31 11:36:17.81 GMvg4a1K.net
URLリンク(learn.microsoft.com)
うんこ品質の時間です
突然1.4がリリースされやがった
9月末が予定じゃなかった?
866:デフォルトの名無しさん
23/08/31 12:07:44.06 +9swg57/.net
>>854
それ、すごい労力かかる割にはWPF専用のViewModelになっちゃうじゃない。
いまUIライブラリ移行の過渡期なんだし、再利用できるViewModelとか考えないの?
867:デフォルトの名無しさん
23/08/31 12:40:08.29 k/7LWfvb.net
>>855
俺の理解が間違ってるかもしれないけど、
その Circle クラス?が画面上の円のコントロールかなにかの DataContext になってるなら ViewModel であるといえるんじゃないだろか。
画面上のどこにもバインドしてないんなら違うと思うけど。
例えば ListBox の ItemsSource にバインドするコレクションの各要素の型は ViewModel と言えると思う。
ListBoxItem を 1つの View として見た時にその DataContext になるから。
↓これとか ItemViewModel というのを定義してる。
URLリンク(blog.okazuki.jp)
ItemViewModel
868:デフォルトの名無しさん
23/08/31 13:22:03.44 WwAx/vtc.net
viewmodelはmodel用のviewじゃなくてview用のmodel
各種viewmodelでcircleモデルのview用の変換やviewからの入力に対してモデルとの橋渡しをする場所としてvmcircleを作ってるんならまあ理解できる
869:デフォルトの名無しさん
23/08/31 14:00:23.53 +wESSzqb.net
何なら納得するんだろうか?
画面に複数のタブページがあるアプリがあって
メインVMに複数のタブページ用のVMがリストなどで持たれている(直接のモデルじゃなくて)
これでおかしいと思うのかどうか
870:デフォルトの名無しさん
23/08/31 15:36:13.08 KSwuKB63.net
XAML Islandsとか名前がよくない
絶海の孤島のイメージだ
871:デフォルトの名無しさん
23/08/31 15:53:03.73 A6umWt5F.net
Islandsで孤島?
872:デフォルトの名無しさん
23/08/31 16:07:40.97 qE8kvwKZ.net
複数形だから孤島ではないな
873:デフォルトの名無しさん
23/08/31 16:52:36.04 BoGIe8nI.net
>>857
VieModelの再利用?
再利用するのはViewの方であって、ViewがViewModelへのバイディング権がある。
それで、フレキシブルな画面構築ができる。
ロジックの再利用は、Domain層にまとめる。
874:デフォルトの名無しさん
23/08/31 17:36:52.11 +9swg57/.net
>>864
ん?例えばMAUIとかWASMに移植するときはViewModelを全部作り直すってこと?
大変じゃね?っていうかそれってMVVMじゃなくね?
MVVMって画面とロジックの分離であって、画面が変わるたびに作り直さなくちゃいけないなら
それはViewModelではなくViewの範疇では?
875:デフォルトの名無しさん
23/08/31 18:44:34.81 +wESSzqb.net
ViewModelはviewとmodelの間が互いにデコボコしてて
綺麗にくっつかない場合に間に入るつめもの
もともときれいにくっつくなら不要
Viewが変わればまた形に添ったViewModelが必要になる
876:デフォルトの名無しさん
23/08/31 19:17:40.59 0zAKJthF.net
クライアント側にあるView層にViewとViewModelがある
サーバー側にModel層があって自分の場合はREST full APIで作られたSaaS出ある場合が殆ど
業務ロジックはModel層内に全てあるので再利用可能
877:デフォルトの名無しさん
23/08/31 19:22:25.33 0zAKJthF.net
View層にはWPFを動作させるための処理しかない
View層をReactで作ってもそこにあるのはReactを動作させるための処理しかない
業務ロジックは全てサーバー側にあって全く無駄にはならない
878:デフォルトの名無しさん
23/08/31 21:51:01.50 lnQo2el+.net
>>762
今思いついたんだが「sugar dragonfly」はどう?
879:デフォルトの名無しさん
23/09/01 16:45:19.11 ba1FgNHl.net
機器の通信サンプルアプリをWPFで作るのは有り?
サンプルを参考にする相手がWPFを使ってるかわからないから、WinFormsの方が無難かな?
一番無難なCUI版は出来たからコアの通信部分は変わらなくて、通信結果を見やすくするだけなんだけども
880:デフォルトの名無しさん
23/09/01 17:16:03.23 E0s4hvcN.net
ActiveXでExcel VBA対応するのが無難だな
881:デフォルトの名無しさん
23/09/01 19:47:27.67 +613Qa0i.net
>>866
それはVMじゃない。どっちかというとMVCのCに近い。
882:デフォルトの名無しさん
23/09/01 21:56:19.74 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:デフォルトの名無しさん
23/09/01 22:06:47.51 XOi5r4E6.net
みんなめちゃくちゃだな..
884:デフォルトの名無しさん
23/09/01 22:16:55.21 +613Qa0i.net
>VMはModelを特定のView用に変換した状態を持っておくもの
なにその珍解釈
885:デフォルトの名無しさん
23/09/01 22:33:11.78 dq5C6mfu.net
一人だけ俺様理論がおるな
886:デフォルトの名無しさん
23/09/01 22:55:04.64 86UzGWyS.net
みんなVIEWを差し替え差し替えでMODELを流用することやってるの?
887:デフォルトの名無しさん
23/09/01 23:31:31.63 hl1Bipr4.net
いや全然
888:デフォルトの名無しさん
23/09/02 00:18:16.99 fOS98KnE.net
自己満ですなーー
WPFのMVVMがまさに究極の自己満
MVVMとかvue.jsとかangular、androidとかでも普通に使うし
そっちは実装コストもかからん
889:デフォルトの名無しさん
23/09/02 05:21:08.01 6VujaKd3.net
android studioはwindows formのポトベタと同じ感覚なんだが?
890:デフォルトの名無しさん
23/09/02 08:18:23.73 Fau+Wvgs.net
>>877
モニターアプリでは良くやるよ。
化学プラントの製品毎の画面やライン管理の製品毎の32~4096接点モニターとかね。
モニターと非常停止等の共通アクション画面なら流用する。
ただし、Viewのビハンイドコードトリミングは必要。
それらを再利用というには微妙だな。 VMはペアで消費するものと考えるのが普通。
再利用というのはロジックの再利用を言うのが一般的じゃね?
891:デフォルトの名無しさん
23/09/02 09:33:36.47 fwdoqn2z.net
結局VMに何らかの描画以外のロジックを書いてる人が多いんだろうなと
mvvm原理主義者じゃなければ別に好きなようにしたらいいんだが
WPFは結局どのように実装すべきなのかハッキリとしたパターンが確立されなかった
これが一番の問題だった
明確に役割分担してオブジェクトの生死を適切に管理してる人間がどれだけいるのか
892:デフォルトの名無しさん
23/09/02 09:49:03.02 fOS98KnE.net
>>875
あってるぞ
MをVに表示させる為に必要な形に変えたものだ
例えばM(Web APIのResult)をVM(Vにバインディンク可能なデータ型)に変換してVと接続する
893:デフォルトの名無しさん
23/09/02 10:06:25.37 fwdoqn2z.net
状態と言う意味が通じていないので話をしても無駄
v vm mでそれぞれ状態は持ってる
普通はmの状態のことを話すんだけど双方の話がかみ合っていない
894:デフォルトの名無しさん
23/09/02 10:12:13.25 fwdoqn2z.net
本来はMと全層から利用されるビジネスロジックが主体なんだけど
vmでガッツリロジックなり制御なりのコード書いてる人が多い
そういう人から見るとvmは状態を持っていると言う主張になる
895:デフォルトの名無しさん
23/09/02 10:21:43.71 Fau+Wvgs.net
>>882
だね。
ViewModelはインスタンスプールの場という認識が無いとそうなるね。
Bitmap加工にしても、ロジックは別の層に置くもの。
ロジックはDomain層、ドライバーはInfrastructure層でカキコしておけば再利用というスタイルの本筋が見えてくる。
896:デフォルトの名無しさん
23/09/02 10:42:05.01 ePvjWEyO.net
wikipediaだとこうだな。VMはVが表示すべき状態を保持するというのが普通の理解だと思う。
ViewModel
ViewModel(ビューモデル)はViewを描画するための状態の保持と、Viewから受け取った入力を適切な形に変換してModelに
伝達する役目を持つ。すなわちViewとModelの間の情報の伝達と、Viewのための状態保持のみを役割とする要素である。
897:デフォルトの名無しさん
23/09/02 10:53:39.97 UWvP69T4.net
という事はバリデーションもvmじゃなくてmでやるの?
898:デフォルトの名無しさん
23/09/02 11:59:17.23 +7egXD0v.net
>>887 の定義だとちょっと密に思えてしまうな
URLリンク(learn.microsoft.com)
大まかに言うと、ビューはビュー モデルを "認識" し、
ビュー モデルはモデルを "認識" しますが、
モデルはビュー モデルを認識しておらず、
ビュー モデルはビューを認識していません。
したがって、ビュー モデルではビューをモデルから分離させ、
ビューとは独立してモデルを進化させることができます。
899:デフォルトの名無しさん
23/09/02 12:40:51.82 CPf5VJuY.net
君たち一旦モデルの事はわすれろよ
めちゃくちゃすぎる
900:デフォルトの名無しさん
23/09/02 13:16:00.96 CPf5VJuY.net
>>882の言うようにハッキリとしたものがないと同意した上で言わせてもらうが
>そういう人から見るとvmは状態を持っていると言う主張になる
VMは状態をもつ
めちゃくちゃすぎる
普通に状態を持つ
901:デフォルトの名無しさん
23/09/02 13:18:09.94 fwdoqn2z.net
アプリケーションの真の実態はMなんだから忘れることじゃないな
勘違いされがちだけどMはデータ置き場でもライブラリでもないアプリケーション本体
VMは表層でしかない
メッセージの仲介所
上で書かれたインスタンスプールでもない
仕事をするにあたりただどこかにあるモデルへの参照を持っているだけ
ModelAとModelBを参照して計算してModelCに入れるのはVMの仕事ではない
VMはMに単純なメッセージ飛ばすのが仕事
902:デフォルトの名無しさん
23/09/02 13:35:29.82 CPf5VJuY.net
ロジックを単にロジックと表現したりするとこみると
ロジックをビジネスロジックとプレゼンテーションロジックに分けて
考えてないよね
ここで>>882のじゃあ明確なその区別のルールは?って問題が出てくるが
903:デフォルトの名無しさん
23/09/02 13:44:31.42 fwdoqn2z.net
どうも自分の書き込み全体じゃなくて部分的な文章しか見てもらえてない気がする
>>884とかガン無視されてる
904:デフォルトの名無しさん
23/09/02 13:46:57.02 fwdoqn2z.net
あ、vmが状態を持つのはそのように書いたからであってあまり意味はない
適切なのかどうかは知らない
905:デフォルトの名無しさん
23/09/02 14:04:49.20 CPf5VJuY.net
でも>>892の見ると、君完全にFatModelの某riga◯◯氏の主張だよね
906:デフォルトの名無しさん
23/09/02 14:09:38.75 fwdoqn2z.net
>>896
誰それ?
VMは可能な限り薄くすべきだよ
907:デフォルトの名無しさん
23/09/02 14:19:20.78 CPf5VJuY.net
>VMは可能な限り薄くすべきだよ
いやいや、ViewModelは作る画面をモデル化したものだから
それは作る画面次第だから
VM薄くするために要件にまで介入する気なの?
(もちろん、VMに限らずスパッゲッティ排除したりすることはいいことだが)
908:デフォルトの名無しさん
23/09/02 14:32:46.57 Opj29vAW.net
>>888
サーバー側でも結局必要になる処理なんで
バリデーション機能を提供するWebAPI定義してそっちでやってる
パフォーマンスもローカルでやるのと変わらん
自分設計の案件は
小計行の合計値など画面に表示されるものほぼ全てサーバー側での計算値だ
909:デフォルトの名無しさん
23/09/02 14:40:30.69 CPf5VJuY.net
>メッセージの仲介所
>デコボコしてて綺麗にくっつかない場合に間に入るつめも
これが先じゃないんだよ
例えば、学生を扱う時に「Student」クラス作ってNameとかAgeとか
状態持たせて「モデル化」するのと同じように
作る画面を同じように状態抜き出してロジック与えて名前を
付けたものがViewModel
こっちが先
910:デフォルトの名無しさん
23/09/02 14:48:44.91 CPf5VJuY.net
で、ViewModelの実装において画面が複雑なら、ビューモデルに書くプレゼンテーションロジック
が複雑になるし、Modelにドメインロジックの実行を依頼したりする
だから、
>メッセージの仲介所
とか表現が極端すぎる
ViewModelは画面をモデル化したもので、立派に独自のプレゼンテーションステート
やプレゼンテーションロジックも持つ立派な1つのエンティティです
911:デフォルトの名無しさん
23/09/02 15:38:06.62 5BMaIqoW.net
>>900
>作る画面を同じように状態抜き出してロジック与えて名前を
>付けたものがViewModel
作る画面(View)のもとになるのがModelなのでその過程をどの程度意識しているかどうか
言い換えればViewを所与のものとして受け取っているかどうかの違いでは?
それ以外の点はほぼ賛同できる
912:デフォルトの名無しさん
23/09/02 16:13:13.84 ePvjWEyO.net
>>902
>作る画面(View)のもとになるのがModelなのでその過程をどの程度意識しているかどうか
アプリケーションの実装はそう考える場合があるかもしれんがMVVMパターンとして
MとVMにそういう関係があることを求めてはいないと思うがな。
913:デフォルトの名無しさん
23/09/02 16:37:06.13 CPf5VJuY.net
>>903
いいこというね
>>890のモデルを忘れろってそういうことなんだわ
ViewModelはあくまでも作る画面をモデル化しておとしこんだのであって、
その作る画面がどのModelが元になってるか関係ないんだわ
914:デフォルトの名無しさん
23/09/02 17:02:01.28 fwdoqn2z.net
自分でロジックブーメラン投げて刺さってるし触れるだけ無駄なんだなと
ヒマつぶしにriga○○が何なのか調べてみたけどわからなかった
更に調べるとかなり前から懐かしのugayaのことをrigayaと言ってる人物がいる
多分この人なんだろう
rigayaと言うのは別人がいてNVEncの作者
915:デフォルトの名無しさん
23/09/02 17:08:17.47 CPf5VJuY.net
>>905
ごめんごめん
rigayaはNVEncの作者でugayaのほうか悪かった
916:デフォルトの名無しさん
23/09/02 17:18:55.85 fwdoqn2z.net
ロジックブーメラン
917:デフォルトの名無しさん
23/09/02 17:35:30.95 CPf5VJuY.net
何、しつこく
それも謝ってほしいのか?
すみませんでした
918:デフォルトの名無しさん
23/09/02 17:45:52.02 ePvjWEyO.net
なんの話をしているんだろうと思ったがこれか?
URLリンク(ugaya40.hateblo.jp)
919:デフォルトの名無しさん
23/09/02 17:57:45.40 CPf5VJuY.net
そうそれ
全部Modelに押し込めってことか?って事で
FatModelって勝手に呼んだけど
完全な正解はないから俺も含めてみんなおれおれMVVMを信じるだけw
920:デフォルトの名無しさん
23/09/02 18:42:57.12 ePvjWEyO.net
俺も>>909はVMの要件とは思わんな。
ただ、V→VM→Mというクリーンアーキテクチャで考えるならMからVMへの依存性逆転に使うインターフェースは
M側に含めることになるかな。それが「Modelの影」にあたるのかもしれんが。
言葉としては違和感があるな。どっちかというと「Viewの影」の方がしっくりくる。
921:デフォルトの名無しさん
23/09/02 22:11:29.82 fOS98KnE.net
「Viewの影」か...
VMにはMからの応答データ以外にも
カレントフォーカスやら
リスト系入力コントロールのカレントインデックスやら
入力コントロールの変更前値なども保持してるね
これらはMではあまり取扱かわない
922:デフォルトの名無しさん
23/09/03 18:43:28.44 PKYmB8Sw.net
>>911
Mにインジェクションはまずくね?
そもそも、EntityやModelは定義とロジックが入るクラスで、かつ、Domainに属するクラス。
ViewとViewModelはApplicationレイヤー。
Domainとは、外部参照ができない領域で、そこにPropertyインジェクションはリスクを覚悟した使い方。
何事もトリッキーが必要になる事はあるが、SOLID原則は可能な限り守るべき。
923:デフォルトの名無しさん
23/09/03 18:47:29.66 McvOhRnv.net
この5chブラウザって実行できねぇじゃねぇかよ
とりあえずWindows 11 ProのSandbox環境立ち上げて
実行してもSeach app in the store?だっけ?
とダイアログが出て実行できねぇ
.NET 7のランタイムとかいれてもだめやわ
だるっ
924:デフォルトの名無しさん
23/09/03 19:07:48.99 Zxyqi4pM.net
>>93
>Mにインジェクションはまずくね?
どこからそんな解釈が?
925:デフォルトの名無しさん
23/09/03 20:37:38.19 TWuH3asg.net
本来のMVVMだとVMがMに命令を出してその結果をVMのプロパティーに反映だが
コレクションはMに無いとどうにもならないし、それをVMがリダイレクトする
この時点で初期のVMMVは破綻しているよな
926:デフォルトの名無しさん
23/09/03 21:08:54.26 0JPdNbB1.net
デザイナーとプログラマーと別けてやるならそうだか、自分一人でやるんならマイルールで頑張れば良い。他人は他人、気にせずに行こう!
927:デフォルトの名無しさん
23/09/03 21:16:42.81 Zxyqi4pM.net
>>916
>本来のMVVMだとVMがMに命令を出してその結果をVMのプロパティーに反映だが
本来のMVVMと言うが、MとVMのやり取りにおける役割分担ってそんなに明確に定まったものはないと思うが。
928:デフォルトの名無しさん
23/09/03 22:05:14.34 Dhh2faXN.net
【クライアント側】
View (WPF)
ViewModel(WPF)
Model(c#, 業務ロジック以外のロジック、例えばUI処理に必要なロジックなど)
【サーバー側】
Model(c#, 業務ロジック)
みたいに実際はクライアント側にもModelが必要になる事が多い
929:デフォルトの名無しさん
23/09/03 22:46:24.33 TWuH3asg.net
>>918
創世記の頃はさっき書いたようなのだったが、ビジネスロジックをほぼ全てMに書く派閥ができてカオスになった
あと、ReactivePropertyでMから簡単にリダイレクト出来るようになったのも大きい
930:デフォルトの名無しさん
23/09/03 23:12:27.45 3gQjLtaF.net
今時はPropertyChanged.FodyやObservablePropertyで自動化
便利になりました
931:デフォルトの名無しさん
23/09/03 23:49:15.10 Dhh2faXN.net
クライアント側やクライアント側にもModelが存在しえるが
ここにはUI要素が殆どなく(あったとしても抽象化されている)
WPF以外からも再利用が可能だ
ViewModelは特定のView専用に実
932:装されており 異なる種類のViewの実装から再利用する事は望めないのが普通だ
933:デフォルトの名無しさん
23/09/03 23:50:04.10 Dhh2faXN.net
訂正)サーバー側やクライアント側にもModelが存在しえるが
934:デフォルトの名無しさん
23/09/04 01:14:09.52 vsxnPNVu.net
VewModelはViewの構成要素(データやコマンド)には依存するけど実装には依存しないでしょ
935:デフォルトの名無しさん
23/09/04 19:44:13.60 J0Btfpeo.net
昔SilverLightと言うのがありまして…
936:デフォルトの名無しさん
23/09/04 19:56:38.46 1eoZIF84.net
光ちゃん好き
937:デフォルトの名無しさん
23/09/04 20:00:29.56 fuW/8CV2.net
M、VMはそのままで、VをWPFでもUWPでもUnoでもMAUIでもコマンドプロンプトでもまだ存在しないビューにしても成り立つのが理想のMVVM
まあ本体のバージョンやらなんやらで制約受けるんだけども
938:デフォルトの名無しさん
23/09/04 22:51:14.61 7E+/PPwt.net
>>927
機種やOS依存しないのはMだけで、VMはWPFからWinUI3に変わるだけでも作り直し
Win32とWinRTは名前空間が別だ
939:デフォルトの名無しさん
23/09/04 23:30:01.70 J0Btfpeo.net
前からいるVMは作り直さなくてもいいと言う人は実際に使ってない気がするんだな
940:デフォルトの名無しさん
23/09/05 05:52:19.52 DX9vicfo.net
Vが変わったらVMも作り直しとかそもそもお前のはMVVMじゃないぞ
941:デフォルトの名無しさん
23/09/05 20:28:59.35 qu07bRnx.net
MVVMでは、Modelはただの定義であって、それがどこにあろうが、ローカルインスタンスはViewModelにある。
ModelインスタンスはViewにバイディングされるが、Model管理はサブスティチューターやインタラクター等の中間介在者経由で行う。
Modelにインジェクションは、中にパーサーを持たせ、ファイヤーや他にアソシエートさせるという事だろうが、それは、再利用性を損ねる事になる。
MVVMは見かけはMVVMだが、実際には、疎結合実現のために、取り巻くサービスから構成される。
942:デフォルトの名無しさん
23/09/05 21:33:41.74 s337iXA9.net
お前の中ではな
943:デフォルトの名無しさん
23/09/05 21:50:07.00 vxLs2+zd.net
ここに限らずプログラマー板は全般的に設計の話題になるとグダグダだよね