ふらっと C#,C♯,C#(初心者用) Part149

■ このスレッドは過去ログ倉庫に格納されています
2020/12/16(水) 11:29:35.35ID:TSvQ057dM
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)

「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part148
https://mevius.5ch.net/test/read.cgi/tech/1590578921/
■関連スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
http://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2021/01/22(金) 01:04:05.40ID:LbFG10xGa
コードは意図した通りではなく書かれた通りにしか動かない。

文章も自分が何を伝えたいと意図したかではなく
文面に書かれていることだけが他人に伝わる。

後者を軽視する奴は100%プログラマとしても無能だ。
ポエムじゃないんだから読み手に想像力で補完してもらうことを期待するのは間違ってる
2021/01/22(金) 01:13:27.19ID:hRbCIOLy0
>>195
説明なんか不要だろ
フォームにテキストボックスとボタンでも貼って倍率変えて実行するだけで
もうリソースエディタ?で配置した画面とは似ても似つかない画面が見えるんだから
これがわからないヤツなんてそもそもwinform触ったことすらねーだろそいつ
間違いなく質問者が聞きたいのはお前にじゃねーよw

何で知らないのにクビ突っ込んでくるのか?w
2021/01/22(金) 01:24:26.14ID:OfPTadrW0
>>186
項目って何
2021/01/22(金) 01:34:58.35ID:dHC2KPFC0
>>186
項目のサイズを125%⇒100%にする
2021/01/22(金) 13:37:52.91ID:QY6O1hmh0
>>186
フォームのプロパティ AutoScaleMode を デフォルトの Font から None に変える
2021/01/22(金) 14:19:12.75ID:fukKKC/8d
wpfの唯一と言っていほどのメリットが画面scaleへの対応
winformが根強く残っていてもこの手の問題へのヘルプが今まで山のように発生している
そういった背景を知っていればあの文章だけで十分に何が問題かは予測できる上に珍しい事例でもなんでも無い
それなのに自身の無知をさらけ出し、挙げ句の果に質問者の文章が稚拙であるかのような言い訳をするのはプログラマとして無能と言えるのではないだろうか?
2021/01/22(金) 14:30:33.50ID:8p9OJtgT0
続きは>>2
2021/01/22(金) 14:31:48.32ID:36C6iaEea
>>201
本気でそう思うならくだらないこと書いてないで質問者に代わって問題の詳細を
きちんと書いてくれ。

しかし馬鹿な奴だ。
何で>>197が沈黙してるのか想像力が働かないのか。

自動スケーリングはちゃんと理解してないとトラブルの元なのは確か。
しかしちゃんと理解して使えばそんな難しい話ではないし、
「フォームが崩れる」などというあいまいな表現で問題を特定できるほど
単純な話でもない。
2021/01/22(金) 14:39:33.20ID:hRbCIOLy0
まあ、まともな解決方法持ってないからね俺らw
というわけでこの話題が出ると荒れるのです
2021/01/22(金) 18:37:43.30ID:aSTD1Cv1M
>>151
>>>145
>そうあるべきとか言われてもねぇw
>意識高い人はSystem.Collection.Generic.ListのRemove()とRemoveAll()の戻り値の型をきちんと把握してるんだろうね、俺には無理だわ
だからそれが少数派って言ってんじゃないの?
全部把握しなければいけないみたいに言ってないよね
2021/01/22(金) 18:56:51.05ID:TU/Hr8MED
初心者 分からないので>>1のテンプレ読んで質問する
中級者 答えられる範囲で回答
上級者様 気持ち良くなるのが目的なのでスレ違いも厭わない
答えられない事も知ったかぶりして馬鹿にしたりトートロジーで誤魔化す
上級者 テンプレ>>1を理解しているので無駄な議論はせず的確に回答
2021/01/22(金) 19:12:58.80ID:Pa9c7HBM0
>>205
よく使うクラスのよく使うメソッドでもそういう例があるって話
例外的なメソッドを言い出したらキリないし
208デフォルトの名無しさん (ワッチョイ 475f-8PYP)
垢版 |
2021/01/22(金) 19:13:26.61ID:BHdCo4AB0
まだWinFormsやってるやついるのか
2021/01/22(金) 19:50:27.55ID:OfPTadrW0
それしかやらんわ
2021/01/22(金) 20:16:51.12ID:buqgHbet0
WPF初心者にはきついわ
検索できないとか存在しないとかエラーが謎
2021/01/22(金) 21:43:23.06ID:3W/g7okM0
WPFの和書が皆無に近いもんな。秀和の分厚い奴も2019になってもいまだにFormsだし。
2021/01/22(金) 21:49:48.50ID:hRbCIOLy0
ガチでやろうとするとunityのが楽なんだよなぁ
こいつバックミュージック流しながら音なんねーし
2021/01/22(金) 21:51:05.66ID:/Gflmnvx0
wpf言ってる間にそのうちmaui(mvu)が来ますよ
2021/01/22(金) 21:53:42.78ID:hRbCIOLy0
色々と信用ゼロなので様子見です
2021/01/22(金) 22:06:30.38ID:alTQhRVad
stackoverflowがなければ初日でWPF投げてたと思う
2021/01/22(金) 22:25:31.06ID:1SSc6UOJ0
>>213
サンクスコ
知らなかった
「やっと」そんなのが出るのか、待ってたぜ
XAMLじゃなくてもC#コードビハインドだけでもUI描けるようだな
(WPFでも出来るけどな)

WPF使ってるけど、バインディングが本当にクソだわ
今までいろんなプログラミングしてきたけど、
ここまで行き詰まったことはなかった
今回こそは俺が非力ってことは認めるわ

それにしても、UWPが完全にスルーされてるのが笑えるw
217デフォルトの名無しさん (ワッチョイ 8701-V1vN)
垢版 |
2021/01/22(金) 23:18:39.28ID:OGZfgpwn0
どうせ流行らずに勉強しても無駄になるんだろ!騙されないぞ!
2021/01/22(金) 23:44:20.14ID:q6hHO30kr
>>216
理想を追い求めて
糞になったパターンだね。

wpfは普通にMVVMでなくても書けるよ。
大半のライブラリーはMVVM使ってないしね。
WPFのメリットはいろいろ間口が広いってことだよ。
2021/01/23(土) 00:04:09.60ID:jLrLNaiV0
>>212
こいつってのは何を指すの?
2021/01/23(土) 00:19:08.32ID:Ea1gaSpb0
WinUI 3 って、WinForms と WPF を過去のものにして主流になると思う?
2021/01/23(土) 00:39:31.93ID:MyEcyelN0
>>218
MVVMってあれだけいろいろゴタゴタやって、恩恵は少ないよな(と俺は感じる)。
周りの人には受けが良くて褒められるけど、俺本人はギリギリでやってる、実は。

一つのクラスの内容を表示する時には何の問題も無い。
だが、二つのクラスの内容を表示しようとした途端に
それらをまとめるクラス作ったりせんといかんだろ?
毎回クソ面倒臭い。
あと、PropertyChangedとかNotifyとか、面倒臭い。
一応できるが俺の性に合ってない。
2021/01/23(土) 00:49:51.79ID:ic//P4AFM
>>220
今はデスクトップアプリもWebベースで作るのが主流
もはや奪うパイがないんだよ
223デフォルトの名無しさん (ワッチョイ 8701-V1vN)
垢版 |
2021/01/23(土) 01:13:07.19ID:9AM+ezO50
ってことはBlazorの時代がくるですか!?
2021/01/23(土) 01:46:14.57ID:oQsbCK+Ka
>>205
たぶん言っても無駄。
その人の目的は「他人に食って掛かる」ことなのは一目瞭然だから。
本人は自覚してないと思うけどね。

とにかく他人が言ってることを否定することだけを目的としているから
全体として何が言いたいのかさっぱり分からない。
2021/01/23(土) 08:46:17.73ID:4VL29Q1J0
>>218
> WPFのメリットはいろいろ間口が広いってことだよ。
俺はデメリットだと思ってる
同じ事をやるのに複数の方法があるために余計わかりにくくなってる気がする
2021/01/23(土) 08:48:30.10ID:4VL29Q1J0
>>224
> その人の目的は「他人に食って掛かる」ことなのは一目瞭然だから。
お前が言うなよ ⇒ >>195,203

> 本人は自覚してないと思うけどね。
ブーメラン過ぎるw
2021/01/23(土) 10:01:09.88ID:hIt2ZLZ60
>>222
electronもまだまだデスクトップを置き換えられるところまでいってないと思うが
どういう環境のことを言っている?
それともOffice365のようにデスクトップアプリの代わりにWebベースで置き換えることを言っている?
2021/01/23(土) 10:54:35.36ID:kPZ46AZtM
>>227
VSCode、Slack、Teams、Skype
もうとっくに置き換わってるよ
2021/01/23(土) 11:08:23.02ID:RBvwbRsVa
自分の製品置き換えないでユーザーにそれ使えは言えないだろ
2021/01/23(土) 11:15:07.48ID:BdQtbmnfM
ちなみにOutlookもWeb版に統一する計画だそうで
https://www.windowscentral.com/project-monarch-outlook-web-universal-email-client-microsoft?amp
2021/01/23(土) 11:15:50.54ID:0Lxv01Qk0
VSCode以外はバックエンドはクラウドだな
2021/01/23(土) 11:26:24.50ID:+GqnBbRoM
今時完全にスタンドアロンなアプリなんて絶滅危惧種でしょ
そもそもそれ言い出したらWinRTから始まりWinUI含め近年迷走を続けているWindowsのモダンUIって、
どうせ今時のネイティブアプリなんてバックエンドのWebサービスに対する薄い皮にすぎないんだからシンプルな必要最低限の機能があればいいよね、
という思想が根底にあるのだし
2021/01/23(土) 11:53:22.54ID:3u/wIwRAa
reactive extensionってまだ存命なの?
async awaitだけやっとけばいい感じ?
2021/01/23(土) 12:06:47.52ID:hIt2ZLZ60
>>228
じゃあやっぱりelectronのことを言っているのか。
デスクトップアプリをこれから開発しようという時にFormsやWPFと同列に
electronが選択肢に挙がる?

前にやったことがあるけど、クロスプラットフォームにしたいとかどうしても
使いたいjsフレームワークがあるとかの理由でもなけりゃ、面倒くさすぎて
今のままじゃわざわざ使いたいとは思わなかったが。
2021/01/23(土) 12:11:41.19ID:2Kl/0dQh0
普通にレイアウト強化したwinform2でも出してくれたら良かったのにな
webは別でやればいいのになんでくっつけようとするんだろう
2021/01/23(土) 13:18:57.65ID:LnVZ1o8ia
>>226
ね、言った通りでしょ。

こういう人、本人はまったく自覚がない。
どちらの言い分に分があるかは>>189からのやり取りを見れば一目瞭然。
2021/01/23(土) 13:38:17.35ID:A5DB0QkA0
>>234
electron選択肢に上がるけどな。
C#アプリでも、もうすぐWebView2が出るから楽しみに待ってるぞ。
なんだかんだでだんだんリッチなUIが求められるようになってるし、ブラウザコンポーネントでやるのは合理的だと思ってる。
枯れてきて安定もしてるし充分速いしな。

最近UIをブラウザで作ること多いけどなかなか便利よ。
embedIOでサーバ起こして、Process.startで開くとかやったり。
Xamarinに持ってったときも一切変更せずにAndroid側でWebView貼り付けて終わりにできたし。
2021/01/23(土) 13:58:24.89ID:4VL29Q1J0
>>236
自覚がないやつの戯言乙w
具体的な反論できないから一目瞭然とかで誤魔化すしかないのが哀れ
2021/01/23(土) 15:17:23.23ID:2XdYRaxf0
Electronって.NET Coreの自前完結みたいにちょっとしたGUIアプリでも100MBくらいになるのは避けられないの?
2021/01/23(土) 15:23:50.73ID:A5DB0QkA0
>>239
これ辛いよね。
2021/01/23(土) 15:32:23.82ID:M9OdZ2iK0
Electron用にパッチをあてたchromiumを含んでるから仕方ないね
node.js系はflockすら標準機能に無いのがもにょる
2021/01/23(土) 15:38:16.51ID:A4wCeRTc0
edgeがchromium採用しているからそれを流用することって出来ないのかね
2021/01/23(土) 15:54:08.79ID:rSxKixC+0
msの人がwebview2使ったelectronもどき作ってた記憶あるけど忘れた
2021/01/23(土) 16:18:50.61ID:XGqYtf2f0
何のスレだよここ
2021/01/23(土) 16:25:03.06ID:kfSEiVWz0
>100MB
○avaみたいにランタイム別インスコよりは1つのEXEになってた方がマシ
2021/01/23(土) 16:50:48.24ID:MyEcyelN0
>>225
そうそう、一つだけどんな場面でも使えるかっちりした方法を用意してくれればいいのに、
〇〇の場合は方法1、△△の場合は方法2、みたいに場合分けがあるから分かりにくい

>>235
大賛成
WinFormの弱点を多少改善した版が欲しい
2021/01/23(土) 16:56:04.81ID:XHKedqhC0
>>246
最近思うんだけどそういうのって恐らくわざとやってない?
いいライブラリを作りたいんじゃなくて新しい仕様を出さないと入門書も売れないよねっていう
2021/01/23(土) 17:08:24.40ID:hIt2ZLZ60
周りの部署や付き合いのある外注はみんな「ふつーWPF」って感じなんだが、
2chでだけいまだにこんなにFormsにこだわってる人を見かけるのがすごく不思議な感覚。
2021/01/23(土) 17:30:20.73ID:RC6F3sECM
>>248
WPFも十分レガシーだよ
2021/01/23(土) 17:30:28.90ID:MyEcyelN0
>>247
わざとやってるのかもね
MS社員が今年の目標として「新規に○○の機能を実装する!」とか掲げて、
クソ機能を実装して今年のノルマ達成、とかね
俺らからしたら大きなお世話なんだけどな
XAMLが絡むGUIの部分はそんな気がする

C#の言語仕様自体は良い具合に他言語の良いとこ取りしてて結構好きなんだけどな
2021/01/23(土) 17:54:40.45ID:LhKkB5Axa
MSも子供の遊びじゃないんだからそんな幼稚な動機があるはずがないw

Silverlightは別物としてもWPF, Metro UI, UWPがコケた理由は単純に人、時間、金の投入量をケチって
周到さが足りなかったからだと思うよ。

Win32を作った時ぐらい気合を入れてたらもう少しマシなものが出来てたはず。

.NETやC#にも多少そういうところがあったよね。
頑張ればC#3(VS2008)を最初のバージョンにすることも出来たんじゃないか

どうでもいいけど「スレの趣旨と違う話をするな!」って人が現れないのは
きっとその人も話題に参加してるからだろうねw
言っても無駄だと思うけどそういうご都合主義を反省して欲しいよね
2021/01/23(土) 17:58:02.93ID:LhKkB5Axa
思えば、Vistaの時にWinFSなるものがとん挫する事件があったけど
あのあたりからMSはちょっとおかしくなってる気がするね。
2021/01/23(土) 18:06:49.31ID:hIt2ZLZ60
>>249
その「レガシー」ってどういう意味で言ってるんだろうか。
今デスクトップアプリ開発するのにWPFに替わるものが他にあるということかねぇ。
上で誰かが言っていたElectronもうちの周りじゃあ1プロジェクトくらいしか採用していないが。
2021/01/23(土) 18:12:08.90ID:4VL29Q1J0
>>246,250
> 〇〇の場合は方法1、△△の場合は方法2、みたいに場合分けがあるから分かりにくい
違う、〇〇は方法1でもできるし方法2でもできる、△△は方法3と方法4でできる
って言うのがまずいって思ってる
具体的には個人的にはWPFはデータ・バインディングとコマンドでやるべきだと思うけど、WinFormからの移行のためかボタンに名前付けてコードから参照するとかコードのイベントハンドラをxamlで指定するとかもできる
できるのはいいんだけどWeb上の解説も両方が説明されてたり下手すると混在して使用されてたりしてわかりにくくなってるような気がする
2021/01/23(土) 18:46:38.00ID:NjLwKFuQ0
>>254
その割には外部フレームワークを入れないといろいろ不便なのがね..。
例えばBindableBase程度のものはMSで準備して欲しかった。
ViewModelは通常このクラスをベースにして...という基本的なスタンスだったらもっと分かりやすかったと思う。
2021/01/23(土) 19:41:56.19ID:J/sR9Yyb0
>>255
Microsoft.Toolkit.MvvmってのがWindowsCommunityToolkitの一部としてもう直ぐ出るらしい
2021/01/23(土) 20:54:43.81ID:4VL29Q1J0
>>255
ああ、それは言えるな
ハードで言うリファレンス設計を示してほしいね
2021/01/23(土) 21:19:01.64ID:88Ok/30EM
>>255
だよな。
WPF当たりから雑に作って、使いにくいのが多すぎる。Delphiの方がましかも。
2021/01/23(土) 21:26:16.24ID:XHKedqhC0
データバインディング使わないほうがうまくいくことが多いよな
2021/01/23(土) 22:15:59.95ID:4VL29Q1J0
>>259
データバインディング使わない方が簡単なのは認めるけどうまく行かないのはお前さんの能力かと…
2021/01/23(土) 22:17:01.87ID:MyEcyelN0
>>254
いや、あるでしょ
例えば、CLRプロパティと依存関係プロパティはどう?

それと、

>〇〇は方法1でもできるし方法2でもできる、△△は方法3と方法4でできる
>って言うのがまずいって思ってる

それって、
△△は方法1と方法2じゃ出来ないんだよな?
〇〇は方法3と方法4じゃ出来ないんだよな?
俺はそれがまずいと思ってる

〇〇が方法1でも方法2でも最終的に可能になるなら別に構わないんじゃないか?何が問題?
逆に、〇〇を解決しようと思って方法3で始めたが、後々になって方法1か方法2でしか出来ないことが判明した方が痛い
2021/01/23(土) 22:27:19.36ID:H8XCArTD0
asp.netでデスクトップソフト開発ってどうなんだろうか
2021/01/23(土) 22:37:04.28ID:XHKedqhC0
>>260
開始日と終了日の最大期間が3ヶ月で
開始日のデフォルト値が2000年のときの2021年1月23日〜2月10日の設定方法に付いて悩みたいのか?
2021/01/23(土) 23:15:35.62ID:J/sR9Yyb0
WinUI3というかUWPではバインディングが改良されて
コンパイル時に厳密な方チェックやってくれてバグに悩まずに済む
2021/01/23(土) 23:30:17.78ID:4VL29Q1J0
>>261
> 〇〇が方法1でも方法2でも最終的に可能になるなら別に構わないんじゃないか?何が問題?
うん、問題ないと思うならそれはそれでいいと思うよ

>>263
何を言いたいのかさっぱりわからんけど、個別の不具合の話じゃないなら説明してみて
2021/01/23(土) 23:31:10.83ID:4VL29Q1J0
>>264
そう言うのもWPFに還元して欲しいね
2021/01/24(日) 00:29:30.39ID:H0Ke+o4H0
>>265
あったまわりぃなお前
データバインディングしてる変数に間違ったデータが入るようにしちゃって大丈夫か?

開始日と終了日に2000年1月1日が入ってるときに
開始日に2021年を入力したとき最大期間に反応してエラー出すだろ?
ここでエラーを出さなかったらバインドしてるGUIがおかしくなる
したらどうやって開始日と終了日に2021年を設定するんだよ
2021/01/24(日) 02:30:17.53ID:W8Ofgakl0
>>267
InotifyDataErrorInfoなどを使う場合、実装方法にもよるけど、間違った値や無効な値を保持する設計もおかしくないと思う。保持はするがエラーが発生しているという状態で、そのエラー内容を素直にViewが表示する設計。
逆にViewModelには正しい値しか保持しないとした場合、一時的にViewとViewModelで不整合が生じている状態になりますが、皆さんどのようにされてますか?
2021/01/24(日) 08:01:29.17ID:H0Ke+o4H0
>>268
それはバインドやめるって言ってるよね
GUIはそんなもん表現できないし
エラー値が入ってくるならそもそもバインドって仕組み使わないほうが楽だよね
2021/01/24(日) 08:34:20.11ID:G9QcBvFS0
>>267
想像以上にレベルが低かったw
なんでvalidateの仕組みがないと思った?
https://docs.microsoft.com/ja-jp/archive/msdn-magazine/2010/june/msdn-magazine-input-validation-enforcing-complex-business-data-rules-with-wpf
まあ、validateは色々なやり方あるし相互依存とかむっちゃ面倒になったりするからWPFも結構難しくて>>267あたりだと理解できないかもな
2021/01/24(日) 08:39:49.42ID:H0Ke+o4H0
>>270
エアプ乙
2021/01/24(日) 08:58:35.15ID:OUhuYnVtM
>>268
自前でエラー内容を保持するしかないように思う
http://sourcechord.はてなブログ.com/entry/2014/06/08/123738
個人的にはViewModelに不正な値を入れるのは気持ち悪い

>>269,271
そろそろ黙った方がいいと思うよ
顔真っ赤すぎだろw
2021/01/24(日) 09:06:53.70ID:H0Ke+o4H0
データバインディング使うのやめろやw
2021/01/24(日) 09:20:23.60ID:EJajcfhwd
わざと新しい難解な方法を作ってるって発想はすげえな。
新しい方法使ってみたらわかるけど、なるほど、一部の課題は解決したな、みたいな感じになるだろうに。
2021/01/24(日) 09:22:49.58ID:EJajcfhwd
ViewModelはModelではないんだから、別にエラーが入ろうが何でも良いだろ。
ViewModelからModelにするときにまとめてValidationしてるけど。
そうじゃないとそれこそ依存項目のチェックが出来んじゃん。

ViewModelとしてModelを使おうとするから変な話になるんじゃないの?
2021/01/24(日) 09:33:19.71ID:H0Ke+o4H0
>>274
でもさ1つの値でうまくいってても他と絡みだすとそれじゃうまくいかんのよ
開始日と終了日は一例ね
ベース値と複数の差分値で表現してるものもうまく行かない
将来的になにかの値と関連する可能性があるならこの仕組みは入れないほうがいいかも?

データバインドっていう複数の値が連動するときにこそ役に立つ仕組みと思いきや実は鬼門とかいうおマヌケなお話(笑)
2021/01/24(日) 11:17:06.24ID:9PCPJHwQ0
>>276
終了日のMaximunとMinimumバインドすりゃいいだけじゃね
開始日設定したらそこで変更すりゃ良い
2021/01/24(日) 11:20:17.45ID:+fPfkl180
>データバインディングしてる変数に間違ったデータが入るようにしちゃって大丈夫か?
大丈夫だろ
ビューモデルはあくまでビューの状態を表すんだから、ビュー(UI)の方で一時的に開始日と終了日が
ずれてもOKで別途最終確定ボタンみたいなUIを作るなら、
開始日と終了日の関係がずれた値(状態)になってもそれは

ビューモデル的には正しい値だぞ
モデル的には間違った値だけど

ちゃんと区別しよう
279デフォルトの名無しさん (ワッチョイ 275f-rvE3)
垢版 |
2021/01/24(日) 11:25:48.71ID:wSlEv8S70
>>251
>WPF, Metro UI, UWPがコケた理由は単純に人、時間、金の投入量をケチって周到さが足りなかったからだと思うよ

いや
センスが無いだけだよ
どれだけリソース有っても創れない
あいつらの限界
2021/01/24(日) 11:33:52.77ID:+fPfkl180
ビューモデルはあくまでビューの状態を表すように設計するんだぞ

最終的なモデルの状態に不整合があったらまずいが、

ビューモデルはあくまでもビューの状態を表すんだから、一時的に不整合を許すUIを
設計するなら、ビューモデルもそういう状態になるだけだし
ビューモデルからしたら別に間違った状態じゃない

だから、
>逆にViewModelには正しい値しか保持しないとした場合、一時的にViewとViewModelで不整合が生じている状態になりますが、皆さんどのようにされてますか?
とか、前提がおかしいやろ。ビューの状態を表すようにViewModelつくるのに不整合を生じるようにつくるとか意味がわからん
2021/01/24(日) 11:47:47.30ID:H0Ke+o4H0
>>278
それデータバインドいらないよねって言ってるよね?
2021/01/24(日) 12:13:40.42ID:+fPfkl180
ビューモデルに他にもテストしやすいとか利点あるだろ?
つか、数学じゃないから誰がもが納得する100%の
答えなんてないから君がそう思うならそう思えばいいと思う
2021/01/24(日) 12:18:43.65ID:H0Ke+o4H0
データバインド捨てちゃえよ
楽になるぞw
284デフォルトの名無しさん (ワッチョイ 7fbb-NoAX)
垢版 |
2021/01/24(日) 12:28:41.42ID:Mt48K89t0
MVVMがどうのって、今話題のMVUの話題絡みで出てきたのかと思いきや・・・・・なんも関係なかったぜ
2021/01/24(日) 13:48:48.78ID:3jwmj/rb0
>>276
うまく行かないか?
全部の値でやればいいだろ。
終了日と開始日、どっちにエラーメッセージ出す気なんだ?
俺は両方だと思ってるが。

>>281
要るだろ。
試験するときにUI生成しなくてもモックModelとのUnitTest通せるし楽じゃん。
2021/01/24(日) 14:24:10.62ID:H0Ke+o4H0
>>285
そうやってエアプでできるできる言いたいなら言ってろ
2021/01/24(日) 14:40:58.72ID:3jwmj/rb0
>>286
エアプというか…普段使ってるから自信を持って出来ると言えるんだけど。
別にWPFだけではなくて、他のプラットフォームでもViewModel使ってるぞ。
自分に出来ないからといって、みんな出来ないのに出来るってフカしてると思い込むのは良くないんじゃないか?
複数の値が連動するときにこそ役立ってると思うんだが。違うのか?
鬼門だと一切思わん。
将来的に何か他の値と関連する可能性があるなら尚更じゃん。

なんでViewModelでエラーを表示してる状態が不整合なのか俺には全然わからん。
2021/01/24(日) 14:50:18.37ID:H0Ke+o4H0
>>287
じゃあ、>>263>>267をどうやって実装してんの?

開始日と終了日なんて普通にアプリ組んでて出てこないわけないよね?
やったことあるんでしょ?
2021/01/24(日) 15:02:34.21ID:3jwmj/rb0
>>288
普通に入力可能にして、エラーメッセージの表示条件が、開始日>終了日であること。
保存チェックはエラーメッセージが一切表示されていない事。Modelには一切波及せずViewModelで完結する。
仮保存のみOK。仮保存はViewModelのうちシリアライズしてはいけない項目を殺して保存。

入力中に一時的に入れ替わるなんてよくある事なんだから、いちいち選択不可にしてたらユーザビリティ悪すぎでしょ。
開始日がデフォルトで今日〜空白の時に、一昨日から昨日までの値を入れるのに、いちいち開始日から入力させんの?アホらしいじゃん。
入れ替わった時点でエラーメッセージに「開始日と終了日が入れ替わっています」と出しておけば一発でしょ。ついでに保存ボタンのEnabledも変えとくと親切だな。

エラーメッセージも、保存ボタンのEnabledも、両方ともプロパティにバインドしとけば、値を変えるだけで制御も変わる。便利よね。
2021/01/24(日) 15:03:44.94ID:3jwmj/rb0
まさか今どきエラー項目をダイアログ表示するとかいう発想じゃ無いだろうな…。
2021/01/24(日) 15:04:38.53ID:F+2F2LGq0
>>289
それがVMの役割だよなぁ
VMはViewの値をバインドしてるんだから、どんな値だろうと関係ない。
VMにバインドされた値が範囲外なら赤枠などで注意を促し、保存ボタンを押せなくする。
モデルに渡すときに仕様の範囲内であればいい
2021/01/24(日) 15:05:11.26ID:H0Ke+o4H0
え?できたん?
ちょっとよくわからなかったけど
2021/01/24(日) 15:06:12.10ID:3jwmj/rb0
>>291
まさにそう。
ボタン一発でデフォルト日にしたい、なんて要件が生まれたら、Commandをバインド。
わかりやすいと思うよ、俺は。
2021/01/24(日) 15:07:13.99ID:3jwmj/rb0
>>292
何がわからんかった?
2021/01/24(日) 15:08:16.18ID:H0Ke+o4H0
>>294
え?値が範囲外で保存できちゃう?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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