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/
2022/11/28(月) 10:46:08.62ID:Agm2AJo1
>>288
OneWayのみでいいなら、BindingProxyが使えるよ。 MAUIではFreezable classを自分で書くことになるけど。
DataContextをビハインド設定でBindingProxyでViewModelその他とか・・・
2022/12/01(木) 18:01:03.73ID:UaT6Ju5t
DapperのQueryでとったデータ(dynamic型)をそのまま
DataGrid(wpf)につっこむと列がダブってしまうんですが
なにか楽チンな対処法はありませんか?
2022/12/01(木) 20:09:52.70ID:MXBkvJK6
>>290
DISTINCT
2022/12/02(金) 00:12:35.02ID:Bt79K2Bt
webみたいに疑似的にモーダルダイアログを出すのってどう思う?
素直にモーダルダイアログ出しとけって感じ?
2022/12/02(金) 10:46:22.91ID:CQhUYfnN
ContentDialogのことなんだろうが、稀に発生するダイアログが画面の裏に表示されて押せなくなるということが物理的にないだけでも優秀だ
2022/12/02(金) 10:52:18.01ID:F90iWgnv
>>291
重複行ではなく列です
AutoGeneratingColumnsで作成される列が2つ表示されます
2022/12/08(木) 19:39:15.92ID:7sx7/7eA
メニューとかを付けたWindowに画面の中身を定義したユーザーコントロールを追加したいんですが、どのようにするのがスマートですかね?
無難にWindowの一番下のGridのChildrenにAddするのがいいんですかね?
2022/12/09(金) 09:42:01.65ID:6fkte2jG
ContentControl
2022/12/09(金) 16:29:47.92ID:itlB2FBH
WPFのXAMLで、部品の幅や高さを「残り画面いっぱい」にする方法ってありますか?
Androidのxmlでいうところの、fill_parentに相当する物を教えてください
298.NET MAUI HighSchool
垢版 |
2022/12/09(金) 16:50:43.95ID:gQLJ96r5
>>297
HorizontalAlignment=stretch
とかで行けます
2022/12/09(金) 17:22:28.18ID:itlB2FBH
言葉足らずですいません
Grid.RowDefinitionsやGroupBoxの中だからか、Stretchでは追従してくれませんでした
300.NET MAUI HighSchool
垢版 |
2022/12/09(金) 17:38:20.80ID:kAYpLKl/
じゃあそのグリッドやグループボックスのアラインメントをストレッチにすればいいのでは?
2022/12/09(金) 17:40:46.95ID:6wQe2Y2i
>>299
DockPanelを使って、残りいっぱいにしたいのを最後に入れる
DockPanelのLastChildFillプロパティはtrue(既定値)
2022/12/09(金) 18:22:42.76ID:itlB2FBH
>>301
DockPanel良いですね!
方向は四方向のようですが、右下(Right + Bottom)のような指定は出来るのでしょうか?
2022/12/09(金) 19:08:18.86ID:RZutnAlS
デザイナー使わずにvscodeとかで頑張ってんの?
マウスでポチポチで出来るのに
2022/12/09(金) 19:14:15.38ID:6wQe2Y2i
>>302
そういうのは出来ない
DockPanelのレイアウトはやってみれば分かると思うけどちょっとパズル的
場合によっては入れ子にする
2022/12/09(金) 20:04:42.78ID:itlB2FBH
>>304
Formsのアンカーみたいに出来るかもと思ってしまいました
右下が必要な時は、入れ子にして組み合わせます
2022/12/09(金) 20:11:51.65ID:6wQe2Y2i
>>305
Left(左)、Top(右上)って順番に配置すれば残りは右下になるけどね
2022/12/09(金) 20:35:38.71ID:0f6uraRf
>>305
クリックすればできるっしょ!

幅なしでマージンのみ指定
2022/12/10(土) 06:52:30.14ID:q9TRgP4i
DockPanelはタブ順がいまいちになるからあんまり使わない。
Gridをマウスでポチポチして区切ってその中にStackPanel入れるのが基本。
309デフォルトの名無しさん
垢版 |
2022/12/10(土) 16:32:37.30ID:HHTsRwyh
>>299
Grid.RowDefinitionsのhieghtを”*”にすれば残り画面いっぱいになるよ
2022/12/10(土) 16:41:54.02ID:a9Jjv71r
height
2022/12/10(土) 18:44:18.88ID:vevfscj1
残り幅いっぱいってどれもこれもめんどくさいよね

WPFは統一的な仕組みがなくコントロールの挙動はその都度ググって正解を探すしかない
使い慣れてないコントロールを使うたびにあれってなってググったり過去のプロジェクトを開いて確認したりさせられる
itemtempleteとかもそう…
312デフォルトの名無しさん
垢版 |
2022/12/11(日) 13:43:41.76ID:yD7729s9
gridオンリーでやれば統一的なのかもしれない
2022/12/11(日) 15:05:49.80ID:T84lMB8C
Gridってよくわからなくならない?
XAMLだけで編集すると特に
2022/12/11(日) 18:13:03.40ID:oV6VCzHt
Gridシャワーでわからなくなる人はBootstrapやFoundationでのCSSデザインは無理だな。
2022/12/11(日) 18:57:16.27ID:TMAZCbUc
glidにしたところでitemは最大幅にはならないよ
316デフォルトの名無しさん
垢版 |
2022/12/11(日) 19:03:59.04ID:Z4+YwDcF
適当にgridでくぎってコントロール張り付け。これでOK。
317.NET MAUI HighSchool
垢版 |
2022/12/11(日) 19:26:41.83ID:ih39IcFX
>>314
わかる
HTMLとCSSってマジでむずいよな
バグり方半端ないし
XAMLが安定安心だわ
318.NET MAUI HighSchool
垢版 |
2022/12/11(日) 19:27:53.02ID:ih39IcFX
Blazorやっててロジック部分のC#いじるときめっちゃ面白いし楽しいのにHTMLやCSSいじるときが一番しんどかったわ…
2022/12/11(日) 19:33:10.67ID:3KSDf1Hc
デザイナーの方がITスキル高いからね
2022/12/11(日) 19:37:24.32ID:HcYuyEaD
デザイナーきたな
2022/12/11(日) 20:32:46.67ID:GglWfKZ4
Ruby on Rails 7 のデフォルトのCSSフレームワークは、
Bootstrap, Bulma, Tailwind, PostCSS, Dart Sass の5つ

Bootstrapが多いが、Tailwindも増えてきた

CSSが分からない香具師は、これらのフレームワークを使えばよい
2022/12/11(日) 20:38:13.88ID:cxoRZ6Df
cssわからないならcssフレームワーク使えないだろ
323.NET MAUI HighSchool
垢版 |
2022/12/11(日) 21:02:37.38ID:hiewkTHT
>>322
これ
2022/12/11(日) 21:05:28.43ID:3KSDf1Hc
そこは解っとんのかい!
2022/12/12(月) 14:54:46.15ID:HJTn4+p0
>>317
HTMLデザインという視点でやってればな。 ベタポトWinFormみたいなもの。
HTMLはレイアウトのアクターを並べるだけであって、デザインはCSSでやる。
だからCSSデザイン。
2022/12/12(月) 15:07:28.77ID:wywn97Kl
外観や視覚的な要素のことだけを指して「デザイン」と呼ぶおじさんが多すぎる
2022/12/12(月) 17:09:05.62ID:H8Pyj0AO
はい!

デザインおじさん登場!
328デフォルトの名無しさん
垢版 |
2022/12/12(月) 17:20:21.22ID:4QdRWR13
おじさんというか、ジャップな。
欧米はちゃんと設計部門=Design departmentだから。
「Design」と聞いてAesthetic designのみに捉えてしまうバカはジャップだけ
2022/12/12(月) 17:25:04.44ID:qdPeVaaE
あなたはジャップではないんですか
2022/12/12(月) 17:37:55.36ID:83va22zf
「デザイン」って日本語で書いてるのに何で欧米の事情もってくるんだよ
馬鹿か?
331デフォルトの名無しさん
垢版 |
2022/12/12(月) 18:14:39.43ID:gfalYFvl
やっぱ「UIデザイン」を見た目だけのものと捉えてる人もいるのかな
何十年経ってんだって話だけど
2022/12/12(月) 18:18:39.68ID:5wAqak8D
元の語と若干意味が違ってくる。借用語というのはそういうものだ
>>328 はプログラミング以外も学んだほうがいい。恥をかくぞ
333デフォルトの名無しさん
垢版 |
2022/12/12(月) 18:31:46.35ID:LkLBJ8+F
WPFのデザイン機能とかコントロールの配置ぐらいしかないから
CSSデザインとか全く想像すら出来ないんじゃないの?

WPFレベルでCSSにあたると大概がこの人(>>318)のように玉砕するから
334.NET MAUI HighSchool
垢版 |
2022/12/12(月) 20:17:28.18ID:I9CBk1cW
>>333
いややったってば
すぐバグるしゴミだった
2022/12/12(月) 20:49:57.65ID:IxHqEtzn
バグってるのはブラウザじゃなくてあなたの書いたHTMLとCSSでしょ
仕様が複雑怪奇で正しく使うのが難しいのは同意するけど、現に正しく使えるエンジニアは世の中にいくらでも存在しており、よ良い代替が存在しない以上、
それをゴミだの何だのと喚いても結局あなたのスキル不足でしかないのよ
336.NET MAUI HighSchool
垢版 |
2022/12/12(月) 20:51:10.86ID:I9CBk1cW
>>335
いやオレの中でゴミだったから今後使わないだろうねってことだよ
2022/12/12(月) 20:51:17.56ID:Av/AuTTr
バグるのはブラウザの性です!で通せばいい
338.NET MAUI HighSchool
垢版 |
2022/12/12(月) 20:56:37.36ID:I9CBk1cW
>>337
いやブラウザのせいでは無いけど仕様的に頭おかしい言語だと思うわ
一回style=""でhtmlに記述したらそのスタイル削除しても後ろのCSSに一生渡せない
styleで上書きするしかなくなる
2022/12/12(月) 21:01:32.45ID:wiWaIgjz
お前ここでもバグとか言ってんのか
自分が無能なだけだろ
340デフォルトの名無しさん
垢版 |
2022/12/12(月) 21:31:30.02ID:H8Pyj0AO
>>338
えらい低見を越えられてない事は判った
2022/12/12(月) 22:34:54.54ID:7pScB9/8
CSS で書くのは無理。
仕様が膨大だろ

Bootstrap でも、SASS で書く

他の部分に、影響を及ぼしてはならない。
各パーツは、疎結合で作るべき
342.NET MAUI HighSchool
垢版 |
2022/12/12(月) 22:56:15.90ID:I9CBk1cW
膨大なくせに体系的に纏められてないんだよな
343デフォルトの名無しさん
垢版 |
2022/12/12(月) 23:04:51.21ID:H8Pyj0AO
>>341
Scoped CSS
2022/12/13(火) 20:42:43.55ID:krvBGeJn
UserControlクラスってなんか特殊なの?
UserControlを継承したクラスのコレクションをListBoxのItemSourceに設定したんだけど、全然バインドしてくれない
UserControlの継承をやめてただのクラスにするとバインドされるようになる
345デフォルトの名無しさん
垢版 |
2022/12/14(水) 01:25:17.43ID:22KidZsA
XamlにUserControl書いておいてそこに他のコントロールをコード側で代入するような使い方はしたことあるな
2022/12/14(水) 02:01:01.05ID:oM3zst/N
なんか困った記憶があるな
なんかバインドのタイミングが遅かったかViewModelの構造だったか
347デフォルトの名無しさん
垢版 |
2022/12/14(水) 06:34:22.03ID:7m/OWdKG
WINFORMのpanelコントロールはWPFあるの?
348デフォルトの名無しさん
垢版 |
2022/12/14(水) 12:03:59.99ID:s1eOj5IL
>>347
用途によって細分化されてる
コントロールを並べたいならWrapPanelやDockPanelなど
スクロールバーを使いたいならScrollViewer
349デフォルトの名無しさん
垢版 |
2022/12/14(水) 20:03:29.32ID:lgfHKaNI
Win11だと、OneDriveの設定画面がWinUI化してた。超見やすい!
ただWinUI 三なのかはわからず...
350デフォルトの名無しさん
垢版 |
2022/12/14(水) 21:00:14.50ID:XhtdH9iq
MAUIはゴミだと良く判る展開ω
351.NET MAUI HighSchool
垢版 |
2022/12/14(水) 22:33:40.69ID:IUJ3tLdU
>>350
どこが?
普通に使えるけど?
352.NET MAUI HighSchool
垢版 |
2022/12/14(水) 22:35:12.86ID:IUJ3tLdU
>>349
いいね
こっちもWinUI3なのかわからんけどOfficeの最新版はWinUI3っぽい
2022/12/14(水) 22:52:25.60ID:SeJwPry4
そもそもマルチプラットフォームって需要あるの?
354.NET MAUI HighSchool
垢版 |
2022/12/14(水) 23:01:08.16ID:IUJ3tLdU
>>353
あるだろそりゃ
2022/12/15(木) 20:00:02.02ID:4+o9r+AK
簡単なマルチアプリならFlutter辺りでササっと作って、
それなりのアプリならネイティブ環境でそれぞれ作った方が楽だと思う
356デフォルトの名無しさん
垢版 |
2022/12/15(木) 20:34:55.93ID:tmBA8a+G
Windows 10の電卓が新しいUIになっていた
357.NET MAUI HighSchool
垢版 |
2022/12/15(木) 21:17:01.89ID:2R9Yeg7n
>>355
いや普通にMAUIのほうが楽だろ
Blazor Web ViewでHTML,CSS使えるようになったし
https://youtu.be/2dllz4NZC0I
このアプリなんか3ヶ月だとさ
https://dev.to/fx/ditching-net-and-finding-faith-again-after-10-years-4d7b
358.NET MAUI HighSchool
垢版 |
2022/12/15(木) 21:18:40.15ID:2R9Yeg7n
Flutterってそんな簡単にアプリ作れるイメージないんだが
Dartで全部UI書くんだぜ?
馬鹿だろ
しかもMVUだから普通のプログラミングとは一癖も二癖も違う
変数は一回全部Stateに入れる必要あり
359.NET MAUI HighSchool
垢版 |
2022/12/15(木) 21:19:22.89ID:2R9Yeg7n
まさかC#とXAMLでGUIアプリ作ってるやつがFlutterなんか勧めるとはね
360.NET MAUI HighSchool
垢版 |
2022/12/15(木) 21:20:59.13ID:2R9Yeg7n
とりあえず俺の作ったアドベントカレンダー見れば別にMAUIでもいいやってなるよ
特にC#普段使ってるのであれば
https://qiita.com/advent-calendar/2022/dotnetmaui
2022/12/15(木) 21:22:35.62ID:+bb6kkB4
なんか大変なんだな。
android studioでやってるけどiOS版はあきらめろんだな。
362.NET MAUI HighSchool
垢版 |
2022/12/15(木) 21:24:43.25ID:2R9Yeg7n
>>361
AndroidStudioとVisualStudioどっちが使いやすいとかある?
VisualStudioしか使ったことないわ
2022/12/15(木) 21:25:28.65ID:fvxr8nGQ
デスクトップアプリ何で作る?
最低要件(最低限これくらいは満たしてね)チェックシート2022
============================================================================

チェック用アプリ仕様:
 アプリ上の"はろー"ボタンをマウスでクリックしたらメッセージボックスで"わーるど"を表示する

(1)配布要件1:動作させるのに必要なファイル一式を任意の場所に配置して動作する
(2)配布要件2:管理者権限不要で配置できる
(3)配布要件3:動作させるのに必要なファイル数が10以内 ※1

(4)起動要件1:エントリファイルをダブルクリックして起動可
(5)起動要件2:エントリファイルをPowerShellから起動可
(6)起動要件3:管理者権限不要で起動可
(7)起動要件4:ネットワーク切断状態(スタンドアロン)で動作する

(8)メモリ要件:
 A:起動時の消費メモリが20MiB以内
 B:起動時の消費メモリが40MiB以内

(9)ストレージ要件:
 A:動作させるのに必要なファイルサイズ合計が200KiB以内 ※1
 B:動作させるのに必要なファイルサイズ合計が1MiB以内 ※1

※1. OSにプリインストールされているランタイムは除く

============================================================================
(1)~(7)はYesの場合+10, Noの場合は-100
(8)~(9)はAの場合+10, Bの場合+5, その他は-100

合計点80以上が合格ライン(当然点数は高ければ高いほど優秀)
364.NET MAUI HighSchool
垢版 |
2022/12/15(木) 21:27:02.28ID:2R9Yeg7n
モバイルSuicaとかXamarinだからC#だぞ?
ReactiveUI使ってた
2022/12/15(木) 21:35:14.51ID:+bb6kkB4
>>362
android studio の方が使いやすいな。
変数名とかのリファクタは便利過ぎる。
UIなxmlも書き換えてくれる。
Windows アプリはVisual Studio でc#のwinformsだけどね。
2019の方が良かったな2022はちょっとうっとおしい、設定調べなきゃ。
366.NET MAUI HighSchool
垢版 |
2022/12/15(木) 21:39:52.50ID:2R9Yeg7n
>>365
そうなんだ…
2022/12/15(木) 22:28:59.48ID:uzUQknvL
>>358
めちゃくちゃ楽だよ。
UI書くのに便利なように言語仕様変えたレベルだからあれ。
368.NET MAUI HighSchool
垢版 |
2022/12/15(木) 22:32:02.22ID:2R9Yeg7n
>>367
どこが楽なんだよ
369.NET MAUI HighSchool
垢版 |
2022/12/15(木) 22:33:44.51ID:2R9Yeg7n
どっちもやったことないのまるわかりなんだがw
2022/12/15(木) 22:46:33.30ID:uzUQknvL
>>368
XAMLと比べて、だと、まずリファクタリングと言うか思いつきで作ったあと部品に分けたりするのがめちゃくちゃ楽。

言ってしまえばただの定数宣言と関数の返値なので、普通にIDEでポチポチできる。
ファクトリ関数的な物でUI部品作ったり、あとはReactで言うHOCみたいなものも作りやすいね。

XAMLのテンプレートは黎明期からずっとクソを引きずってるので本当にクソ。MauiでもコードでUI作る奴の方に期待してる。

というか、今時UIにバインドする物はぜんぶState入れるだろ。
コードビハインドからゴリゴリするとか行儀悪すぎでは?
371.NET MAUI HighSchool
垢版 |
2022/12/16(金) 04:34:35.28ID:3qj0lL1U
>>370
全く値変わらないWidthやHeight,FontSize,FontAttributeについてもわざわざState入れてんの?
くそめんどすぎるわw
しかもわざわざChildだのChldrenだの書いてさw
372.NET MAUI HighSchool
垢版 |
2022/12/16(金) 04:38:14.59ID:3qj0lL1U
保守や維持管理についてもXAMLの方が圧倒的に上
Dartはこいつがなんのコントロールなのかすらわからん
373.NET MAUI HighSchool
垢版 |
2022/12/16(金) 04:39:02.72ID:3qj0lL1U
まずプロパティでいいところをウェジットにしてる時点で設計が間違ってることに気づこう
これでクリーンアーキテクチャとかよく言えたもんだわw
2022/12/16(金) 08:28:18.07ID:y/cTcjAQ
>>371
入れないよ。全く変わらないんでしょ。
それは定数で書くし、なんならその値が設定された専用のウィジェットとかウィジェットを返す関数を作る。

プロパティで良いところはプロパティなんだけどな。それに、今時そこまでStatefulWidget使わずに、StatelessWidget使ってバインドするだけでは?

もしかしてあんまりAndroid Studioとかまともな環境で書いたこと無い…?
2022/12/16(金) 08:29:10.14ID:y/cTcjAQ
プロパティですむところをウィジェットにする、の意味がイマイチ伝わってきてないんだけど、どういうことなの?
376.NET MAUI HighSchool
垢版 |
2022/12/16(金) 09:17:06.20ID:3qj0lL1U
>>374
だからMVUだからその定数が入れられねぇんだろ
377.NET MAUI HighSchool
垢版 |
2022/12/16(金) 09:18:03.15ID:3qj0lL1U
>>375
テキスト、フォントサイズ、幅、高さ
すべてがウェジットだろ
キチガイプラットフォームじゃん
378.NET MAUI HighSchool
垢版 |
2022/12/16(金) 09:18:22.93ID:3qj0lL1U
すまんウィジェットな
379.NET MAUI HighSchool
垢版 |
2022/12/16(金) 09:19:57.66ID:3qj0lL1U
もしかしてこいつMVUで書いたことないのにFlutterはMVUだからぁとか言ってる感じ?
2022/12/16(金) 09:30:27.68ID:9RcwZzV9
ウィジットの意味わかってないただの馬鹿で草
381.NET MAUI HighSchool
垢版 |
2022/12/16(金) 10:32:52.36ID:3qj0lL1U
>>380
どこが?
すべてがウィジェットだろFlutterは
382.NET MAUI HighSchool
垢版 |
2022/12/16(金) 10:33:26.47ID:3qj0lL1U
だからチルドレンだのチャイルドが多くなってわけわからんようになるんよ
383.NET MAUI HighSchool
垢版 |
2022/12/16(金) 10:35:07.38ID:3qj0lL1U
普通に考えてXAML+C#のが直感的だわな
得意なことをやらせましょーねーだもん
逆に不得意なところでもまぁまぁできるようにしたよが宣言的UIと呼ばれるやつ
2022/12/16(金) 10:53:55.23ID:9RcwZzV9
xamlも宣言的UIと言うんだが
ウィジットといいこいつ言葉の意味理解してなくて会話が成り立たねぇw
2022/12/16(金) 11:10:21.55ID:9RcwZzV9
つか、最新の宣言的UIのjetpack compose使ってみれば?
お前の大嫌いなchildやchildrenなくなってるから(笑)
2022/12/16(金) 11:12:10.46ID:9NyHvpgk
>>376
えっ…?

例えば、これはScaffoldといって、XAMLで言うとPage系の親玉みたいなウィジェットなんだが、
https://api.flutter.dev/flutter/material/Scaffold-class.html

どれが定数を使えず、ウィジェットになってるの?
というか、ウィジェットが定数になっていて実行時にはノーコストと言うことがわかってない?

ちなみにChildrenはXAMLでも存在してるよ。タグの中身の事よ。
複数の要素がとれるものがchildren。一個しかおけないものがchildになってるだけで。
2022/12/16(金) 11:13:15.44ID:9NyHvpgk
>>383
DartがUI作るの不得意なんじゃなくて、おまえがDartでUI作るの下手なんじゃないかな…。

俺はMAUIの記事も読んでるし、MAUIは好きなので、もう少しフラットにやって欲しいと思ってる。
388.NET MAUI HighSchool
垢版 |
2022/12/16(金) 12:19:17.66ID:3qj0lL1U
>>384
何いってんだこいつ?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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