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

■ このスレッドは過去ログ倉庫に格納されています
2022/10/29(土) 11:34:34.12ID:OGteGRtm
WPF(Windows Presentation Foundation)について語るスレ。

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

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

コードを貼る場合は以下のサイトの利用をお勧め。
https://ideone.com/
2023/01/11(水) 16:04:54.15ID:RkgqFtZy
デザインを日本語で言うと設計
これ豆な
773デフォルトの名無しさん
垢版 |
2023/01/11(水) 17:17:18.80ID:PPK0N9jw
>>707
まだマシ?

<Button Content="hello" Click="Button_Click"/>
<x:Code>
<![CDATA[
private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("ハロワルンルン");
}
]]>
</x:Code>
774デフォルトの名無しさん
垢版 |
2023/01/11(水) 18:23:30.26ID:kD3O0Rsm
だな
775デフォルトの名無しさん
垢版 |
2023/01/12(木) 06:10:51.95ID:xb3y3Wfj
>>770
スマホのUIは全てiPhoneの真似だぞ
WindowsのUIもどんどんスマホに寄ってきてる
2023/01/12(木) 06:24:45.04ID:B5KXsPsr
そういや昔のUNIXのマウスはボタンが3つあったよな
今となってはどう使っていたのさえ思い出せん
2023/01/12(木) 06:49:15.71ID:0r19Noi5
>>776
確かにsun3は3ボタンだったな。
俺も使い方忘れたわ。
778デフォルトの名無しさん
垢版 |
2023/01/12(木) 08:41:52.11ID:ZxE2kU+/
AppleがUIガイドラインというものを打ち出す前は各ソフトが
めいめい勝手に使ってた。右ボタンでペーストとか。
2023/01/12(木) 11:59:50.99ID:M2KY39SH
>>775
WindowsのそういうUIは普及せずに頓挫している。
2023/01/12(木) 12:23:43.66ID:UTQyE6Is
UIUXド素人たちがUIUXを語ってる笑えるスレですね
2023/01/12(木) 12:25:28.24ID:7JixUSWh
ド素人じゃないやつは他の所で語るからな
5chを何だと思ってるんだ
2023/01/12(木) 12:29:18.64ID:h0zvYCQw
>>780
UIUXって何ですか?
783デフォルトの名無しさん
垢版 |
2023/01/12(木) 12:55:41.00ID:SnvMD7y3
だよなぁ
UIとUXを一緒にしちゃうド素人がド素人認定とか笑える
2023/01/12(木) 13:01:25.69ID:7JixUSWh
そこは別に良いだろw
文脈からUIとUXのことってわかるじゃん
2023/01/12(木) 14:01:49.57ID:fwsJy5qr
最近のアプリは設定の保存ボタンや確認が無いのに戸惑う
いや画面遷移で保存しちゃっていいなら作る分には楽だが
2023/01/12(木) 14:15:02.92ID:1FkHDGjl
みんなは.Net coreで作ってるの?
それともFramework?
2023/01/12(木) 15:16:58.84ID:wWVXJd6B
.NET6のASP.NET Core 6でEntity Framework Coreを組み込んで使ってます
2023/01/12(木) 19:39:18.21ID:cNnl+hUD
スーパークラスの添付プロパティを作って、そこにサブクラスをバインドしようとすると出力ウィンドウにエラーがでるんだけど、なにか良い方法ないですか?
動作的には特に問題はないです。
たぶん型が一致しないから親切心でエラー出してると思うんだけど
2023/01/12(木) 20:59:50.76ID:q3/VlEPV
何を言ってるかわからん
うまくいかない理由をこれだけで察しろというのか
790デフォルトの名無しさん
垢版 |
2023/01/13(金) 06:09:44.64ID:mQNERrLn
>>786
FrameWork。
.net との違いって何だ。
791デフォルトの名無しさん
垢版 |
2023/01/13(金) 10:56:29.91ID:+TkXA4uq
そのまま動いてるならエラーじゃなくて警告だろ
気にすんな
ほっとけばいい
2023/01/13(金) 12:33:36.51ID:W9pzgIob
>>791
バインド失敗した場合は何もなかったようにそのまま動くからそうとは限らんぞ
失敗したというメッセージだけデバッグコンソールに出る
2023/01/13(金) 12:40:06.09ID:UAyZZ6f0
>>790
coreはsjisのエンコーダがオプションやね
2023/01/13(金) 17:19:12.45ID:3LygieHj
>>790
.NET Framework 4.xはWindows標準で入っているけど、
.NET Coreは入ってないって言いたいんじゃないかな?
2023/01/13(金) 17:49:42.47ID:uV0o6CeP
.NET Core はもうサポート切れたやろ
796デフォルトの名無しさん
垢版 |
2023/01/13(金) 18:28:28.24ID:+TkXA4uq
2023年1月10日まで
2023/01/13(金) 18:41:40.04ID:rxo0B7o9
>>785
これ怖いよね
変更前や既定値が何だったのか補足して欲しいわ
798デフォルトの名無しさん
垢版 |
2023/01/13(金) 19:40:36.49ID:BnRGKs35
>>642
添付プロパティのデフォルト値がそうなんじゃないの?
2023/01/13(金) 20:07:13.24ID:E6bZwtxo
>>785
自作のプログラムではOK,Cancelボタン付けてるけど正直面倒なので無くしてしまいたい。
無くすとバインディングでめちゃくちゃ楽に書ける。
2023/01/13(金) 20:14:11.07ID:qebtsQhY
自作なら好きにすればいいのでは?
801デフォルトの名無しさん
垢版 |
2023/01/14(土) 08:01:19.58ID:tek4DozE
設定の保存を無くすと、今度はundoとかデフォルトに戻すとかの要求が増えて余計に面倒になる
2023/01/14(土) 12:37:56.23ID:8OIvGIoM
一番いい対策は、設定値をできるだけ減らして
もとの値が把握できる程度に絞ることだな

一部の例外を除いて、設定の大半は誰も使わない
2023/01/14(土) 13:01:08.33ID:kfvyLkG3
即反映は背景色と文字色が一緒になって見えないとか面白い状態があるからw
でもすぐに直せる
GUIがまともなら
804デフォルトの名無しさん
垢版 |
2023/01/14(土) 13:51:45.82ID:LNJCQ4v3
即反映するかワンクッション挟むのがいいかは設定値の特質による
2023/01/14(土) 15:30:38.94ID:8OIvGIoM
即反映は当然だが、OKを押せばその値で保存、キャンセルなら元に戻すってのが一番だけど可也めんどくさいよな
806デフォルトの名無しさん
垢版 |
2023/01/14(土) 15:44:24.62ID:Bkbcxef6
OK/キャンセルボタンがあるのに即反映するのはかなり微妙やで
UIUXデザイナーw召喚されるぞ
807デフォルトの名無しさん
垢版 |
2023/01/14(土) 22:12:24.97ID:8AsSb9hh
DataGridの編集は難しそうなんでまたインチキしてみた。

新規入力の場合、ダブルクリックするとその行の全てのカラム位置にテキストボックスとか
コンボボックスを配置して入力が終わるとそれぞれ該当するカラムに転記。
通常使用できないラジオボタンも可。
(セルにデータが入ってた場合はセルのデータを最初にテキストボックスに転記)

コントロールの配置は計算で求めた。
例えば3カラム目の横位置は1カラムと2カラムの幅を合計した値が3カラム目の横位置。
縦方向はマウスのデータグリッド上のローカル座標から何行目か算出。
カラム幅の変更があるとその幅に応じて別スレッドでリサイズと再配置。(Task.Run使用)

入力はテキストボックスなんで数値のみの入力規制とかロストフォーカスで自動的に計算させる
なんて簡単にできちゃう!。

XAMLの方でコンボボックスの値によって行全体の色を変えたり入力した値が100以上だと
そのセルだけ色変えたり。(サイト参考にした)

いろんなコントロールがある中でWinFromsのDataGridViewとかWPFのDataGridなんかの
EXCELみたいな入力が一番難しいんだよな。
金額のセルは数値のみの入力にしてくれ等あれこれ要望されたり。
DataGridの編集モードより使い勝手良さそう。

インチキコードビハインド、サイコー!w
2023/01/14(土) 22:33:58.71ID:YVgT972+
標準のDataGridだとIME制御できないに等しいよね
Editboxになってから変更しても遅いっちゅーねん
2023/01/15(日) 00:52:43.66ID:cAxzhPBU
WinUI3とかDataGridが標準で入ってなくて正気かよと思ったもんだ
2023/01/15(日) 01:02:00.82ID:R4vpna1L
>>807
DataTemplateも知らねえのかよこいつ
仕事でwinforms以外触るなよ迷惑だから
チームでそんなゴミコード書かれたら速攻外すわ
811デフォルトの名無しさん
垢版 |
2023/01/15(日) 02:56:42.79ID:CnKOeOE3
>>809
CommunityToolKitにはあるからそれ使ってる
812デフォルトの名無しさん
垢版 |
2023/01/15(日) 08:46:46.24ID:xA8RWlPa
>>810
まぁ、50歳過ぎでWPF始めた新参者ですから!。
データテンプレートは聞いたことはあるが知りません。
始めて二か月目だし。

コントロールの配置とかモニタ解像度(dpi)、マルチスレッドの
勉強にはなったな。
813デフォルトの名無しさん
垢版 |
2023/01/15(日) 08:50:48.04ID:xA8RWlPa
>>808
そうなんだ。

新規行追加したときにそのままフォーカス
もっててマウス操作しなくても入力できるの?
814デフォルトの名無しさん
垢版 |
2023/01/15(日) 10:13:17.25ID:CnKOeOE3
>>812
がんばれ!
2023/01/15(日) 11:16:15.80ID:kNedhIGT
>>812
仲間だ!
インチキでもなんでもできるだけすごいよ。
2023/01/15(日) 12:50:06.43ID:pBiKKGen
好きなようにしたらいいよ
MVVMだと普通にダイアログすら出せないからな

どうやってダイアログを出すべきか10年ぐらい揉めててこいつら馬鹿なんじゃないかと思ってた
それ以前にWPF自体に各種ダイアログがなくてwinformsのものを使ってた
2023/01/15(日) 15:11:49.98ID:I8mw9xxt
WinUI3でメディアトランスポートコントロールをカスタマイズしようと
Win10SDKからgeneral.xaml引っ張り出してコピーすると
何故か形状が昔のデザインに先祖返りする
サッパリ分からんわ
818デフォルトの名無しさん
垢版 |
2023/01/15(日) 16:01:31.95ID:cKux9meR
>>816
笑いのプロフェッショナルなのでは
2023/01/15(日) 16:24:10.91ID:nTjQWEPz
MVVMなんてやらないほうがいいぞ
開発効率下がるだけでメリットはほぼ無いし
2023/01/15(日) 16:24:55.81ID:2daho8Vx
MVVMでViewModelからダイアログ出すのはDIを使うんだぞ
好きにしたらMVVMを使う意味がなくなるだろ
そのDIに複数の種類があってどれを使うかは派閥があったが今はサービスでほぼ決まりだ
場合によってはメッセンジャーが便利なこともある
2023/01/15(日) 16:26:59.58ID:2daho8Vx
>>819
テストしないやつはそういうこと言うんだよw
お前は本当に効率の良い開発をまだ知らんから自分の稚拙な技術で判断してるだけだ
幼稚園児が「箸よりスプーンの方が食べやすい」とボロボロこぼしながら食うようなもんだな
822デフォルトの名無しさん
垢版 |
2023/01/15(日) 16:35:29.91ID:xA8RWlPa
>>819
それはよく聞く。
かなりの大規模システムなら有効らしいけどな。
2023/01/15(日) 17:05:39.05ID:pBiKKGen
WPFが長年ダイアログを用意しなかったのは何か深い意味があるのか?
2023/01/15(日) 17:06:41.17ID:pBiKKGen
>>820
それって10年以上揉める必要はあったのか?
2023/01/15(日) 17:09:16.28ID:pBiKKGen
>>822
定説としてMVVMは大規模開発には向かない

中規模か小規模の開発向き
個人開発レベルでは不要

フェイスブックなどがmvvm投げたのは大規模開発に向かないからだと
ある日勝手に通知が立つバグがでて全部コード追って修正しても次の日にはまた間違って通知が出るって
これは状態がおえないし担保出来ないから無理ってことでmvvm捨てた
2023/01/15(日) 17:14:43.62ID:9TmZgkVb
>>821
お前はカレーを箸で食べるのかよ
WPFはMVVMであるべきって思い込んでるだけ
2023/01/15(日) 17:19:33.28ID:R4vpna1L
このスレはほんと脳みそが20世紀で止まってるwinformsおじさんだらけだな
隙あらばMVVMいらないなんでもコードビハインドでいいとか言いだす救いようの無い馬鹿
新しいことが覚えられず時代についていけないだけの無能
一生winforms触ってろw
828デフォルトの名無しさん
垢版 |
2023/01/15(日) 17:24:07.21ID:xA8RWlPa
インチキデータグリッドはこんな感じ。
https://i.imgur.com/dDsAiTo.jpg

ゴミコードって言われたけど、
・行追加ボタンでマウス操作なしで必須カラムに入力フォーカス持たせてマウス操作
 なしで即時入力可。
(普通、編集開始する際はマウスクリックが必要なんだよな。面倒なんでマウス操作なしで
 よろしく、って大抵言われる)

・カラム毎のIME制御。
・個数を変えた時点でリアルタイムで合計金額を可変。(keydown,keypressイベント)
・ラジオボタンも使用可。 (普通はコンボボックスで事足りるが)
・数字 3桁毎に , を自動的に入れる。(keydown,keypressイベント)
・コンボボックスの値によって色可変。
・例えば3桁目に - が入っていない場合は自動的に補完または警告出す。

なんて事が出来るようになってます。

正当な作りで使い勝手が悪いとか、お客の要望が実装できないより、
ゴミコードでも要望通りで使いやすい方が選ばれるのは自明ですよ。
2023/01/15(日) 17:24:30.16ID:pBiKKGen
>>827
MVVM自体が遅れてるとフェイスブックなどが言ってるんだけどwwwwww

mvvmはピタゴラスイッチみたいなもの
予測できない副作用が起こってもそれが分かりづらい
間でてこが動きすぎて関係ないスイッチを押しちゃって気が付かない

ロジックが小さい間は全てを追い切れる
それがどんどん規模が大きくなるとコードが追いきれない

手続きを書くほうは問題の箇所をいじってる場所が大体集約されてるからデバッグしやすい
通知をいじってるのはここでここへ作用してる場所はと追いやすい
830デフォルトの名無しさん
垢版 |
2023/01/15(日) 17:28:23.37ID:xA8RWlPa
>>827
言ってることは納得できない所があるけど
アンタはMVVM活用してんだ。
それはすごいと思う。
尊敬に値するわ。
2023/01/15(日) 17:30:34.23ID:pBiKKGen
どこかの誰ががピタゴラスイッチの間のコードを書き換えたら急に次の日から動かなくなりました
そのどこかの誰かが書いたコードは問題なくテストを通ります
でも副作用が連鎖して全体の状態が変わってしまいます
それがとても追いづらいんです

これでMVVM使う理由って何?
2023/01/15(日) 17:36:41.86ID:pBiKKGen
ちなみにwinformsが出たのも21世紀です
2023/01/15(日) 17:44:46.51ID:I8mw9xxt
mっvmは疎結合だから、ちゃんと設計すればピタゴラスイッチになりにくいはずなんだけどな
偶々そのプロジェクトの設計に欠陥があったんじゃね?
2023/01/15(日) 17:45:45.82ID:pBiKKGen
フェイスブックに言ってやれw
2023/01/15(日) 17:46:44.44ID:cAxzhPBU
開発環境がMVVMに追いついてないんだよな
分離しすぎてるから注入経路を推測して追跡ぐらいしてくれないと人間が把握できない
2023/01/15(日) 17:50:16.62ID:pBiKKGen
フェイスブックは当初はWPFを絶賛してクライアントアプリ作ってたけど確か完成前にWPFを投げ捨てたはず
確かc++でクライアントは開発された
WPFは非常に生産性が悪いんだってさ
837デフォルトの名無しさん
垢版 |
2023/01/15(日) 17:57:05.77ID:xA8RWlPa
>>836
フェイスブックってwebアプリのみじゃないの?。
デスクトップ用のフェイスブッククライアントなんてあるんか。

MFC使いだけどWPFの方がまだマシ。
C言語は色変えるだけども一苦労。
プロパティで色々簡単に変えられるのはイイ!
2023/01/15(日) 17:57:52.01ID:azr6O1Cn
MVVMのメリットってなんなんやろ
すべての機能でテストコードなんて書かないし、複雑で修正がよく入りそうなとこだけ疎結合にしとくのが効率いいよ
2023/01/15(日) 17:59:41.07ID:pBiKKGen
フェイスブックは確かc+++MFCでクライアント開発しなおしてリリースしたはず
2023/01/15(日) 18:02:46.63ID:uT3GlkL2
マウイ君はほんと頭悪いな
2023/01/15(日) 18:05:20.65ID:pBiKKGen
ファイスブックがWPF捨てたあたりから完全に潮目が変わった
当初は著名人もWPFに興味津々で本書いて出してたけどそいつらみんなwebの方に行ってしまった
2023/01/15(日) 18:08:19.79ID:I8mw9xxt
>>839
MVVMが問題なら。WPF使ったって問題ない
CLRのパフォーマンスの問題と考えるのが普通だな
2023/01/15(日) 18:08:49.17ID:y+EPo4wc
>>838
一番のポイントは依存性がV→VMの一方向に限定されていること。
それによってVM-Mだけでロジックのテストを完結できる。
2023/01/15(日) 18:10:26.97ID:R4vpna1L
>>830
脳死でいつまでも昔のやり方に固執してる奴はマジで終わってるしチームにいたら普通に迷惑って話
最初から最後まで一人で作って後任もいないか趣味なら好きにしろ

>正当な作りで使い勝手が悪いとか、お客の要望が実装できないより、
>ゴミコードでも要望通りで使いやすい方が選ばれるのは自明
正当な作りで使い勝手が悪くなるのはそいつがただ無知なだけであって
古いやり方のほうが優れてるみたいな年寄り特有の独りよがりは恥ずいからやめとけ
素直に勉強しろ
2023/01/15(日) 18:12:48.53ID:0/uPn3/5
素人にもメンテ出来る作りにしてくれたらどうでもいいよ
開発者のオナニーで複雑に作られたらメンテする人が可哀相
2023/01/15(日) 18:15:03.08ID:pBiKKGen
WPF+mvvmって全然流行ってないよね?
そんなに優れてるならなんで採用例がほぼないの?
2023/01/15(日) 18:18:38.80ID:pBiKKGen
WPFが正式リリースされる前から注目度は高かった
自分はムック買って付属のCDのWPFプレビュー版をインストールして使ってた
付属ソフトで3D表示をいじったりしてた

でも実際リリースされたらXAMLの書式ががらっと変わってて使えなくなってた
2023/01/15(日) 18:23:03.51ID:THKmoAep
速度は.NET6や7でかなり速くなったらしいけどどうなの?
2023/01/15(日) 18:26:18.24ID:pBiKKGen
WPFと言えば3D風カルテかなあ
あれって実際動かした覚えがないなあ
850デフォルトの名無しさん
垢版 |
2023/01/15(日) 18:29:05.84ID:xA8RWlPa
>>848
.NET6などは知らんけどやたら早い。

WPF + DataGrid 職員データ7000件の表示で1.2Sec位。
WinFoms + DataGridView で3-4Sec。
段違い。
851デフォルトの名無しさん
垢版 |
2023/01/15(日) 18:29:57.04ID:CnKOeOE3
>>833
これ
852デフォルトの名無しさん
垢版 |
2023/01/15(日) 18:30:42.51ID:CnKOeOE3
MVVMでピタゴラスイッチになるか???
2023/01/15(日) 18:36:34.62ID:I8mw9xxt
初期のWpfでMVVMやると結構辛いところもあったが
ReactivePropertyでmのプロパティーを簡単にVMでリレーできるようになって
イージーモードになったよな
2023/01/15(日) 18:37:19.59ID:IdI6Yaqd
個人でMVVMやる理由がない
仕事でもMVVMやるほど分業してるところなんて少ない
855デフォルトの名無しさん
垢版 |
2023/01/15(日) 18:43:15.65ID:xA8RWlPa
MVVMが良いとか悪いとか喧々諤々してる時点で失敗作。
2023/01/15(日) 18:52:49.51ID:pBiKKGen
WPFに出会ってから18年ぐらいたってるけどいまだにこんな感じ
2023/01/15(日) 18:59:03.25ID:pBiKKGen
思い出したけど3D風カルテは確かデフォの状態でコード動かしても起動時にエラー吐いて死ぬんだったなあ

おまかんなのかもしれないが
2023/01/15(日) 19:04:57.75ID:IdI6Yaqd
MVVMが手段ではなく目的になってる奴が多いからな
MVVMやってることに優越感を覚えてるだけ
これ言うとキレて反論してくる奴いるけどw
2023/01/15(日) 19:18:00.08ID:ssAeiLbk
>>858
ここの住人はほぼそうですが何か?
860デフォルトの名無しさん
垢版 |
2023/01/15(日) 19:18:56.66ID:CnKOeOE3
MVVM楽だけどな
x:Nameわざわざつけんでいいし
2023/01/15(日) 19:19:17.24ID:FZ6iEp1r
まーた始まったよMVVM初心者の馴れ合い
2023/01/15(日) 19:19:33.21ID:pBiKKGen
ボタンクリックでコードビハインドでダイアログ出して結果をVMに送っても何も問題ない
2023/01/15(日) 19:29:07.15ID:0/uPn3/5
>>861
初心者を蔑ろにした結果が今なんだが
2023/01/15(日) 19:47:53.03ID:y+EPo4wc
>>854>>858
この10年の間、このスレにやってきてWPFに文句つける人の主張をきれいに濃縮したようなレス
2023/01/15(日) 19:51:26.41ID:IdI6Yaqd
なに意味不明なこと言ってんだ
MVVMの話をしてるんであってWPFの批判なんぞ一言もしとらんぞ
2023/01/15(日) 21:15:02.27ID:iltDDRsm
MVVMにまでする必要はないけどBinding使うとすっきりするよね
コントロールのイベント拾ってハンドラ書いてとかあんまり楽しい作業じゃないしな
867デフォルトの名無しさん
垢版 |
2023/01/15(日) 21:21:21.69ID:CnKOeOE3
MVVMToolkit神だわ
とりあえずVMのプロパティに[ObservableProperty]
コマンドに[RelayCommand]って書くだけで簡単にバインディングしやすいもの作ってくれる
2023/01/15(日) 21:37:15.33ID:3VNVbvO3
毎度のことながら、MAUI君がMVVMわからんだけでしょ
2023/01/15(日) 22:03:49.49ID:pBiKKGen
どこにMAUI君がいるんだ?
2023/01/15(日) 22:10:14.58ID:pBiKKGen
MVVMのボイラープレートの克服までほぼ18年
長かったな
871デフォルトの名無しさん
垢版 |
2023/01/16(月) 01:05:57.79ID:Iz2auSAp
>>870
ソースジェネレーター様々やね
2023/01/16(月) 01:31:56.05ID:jbRKb4Hw
いや、こんなおもちゃレベル役にたたねぇわ
ReactivePropertyに戻ったわ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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