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

■ このスレッドは過去ログ倉庫に格納されています
2023/01/22(日) 05:53:16.97ID:oY263ilm
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/
2023/01/29(日) 12:25:46.22ID:ySFcAWnP
>>29
コードビハインドからVMのメソッド呼ぶのが楽じゃない?
2023/02/02(木) 14:29:10.09ID:3jZbdKoK
WPFでUSBの抜き差しを監視するのにスムーズな方法はありませんか?
WndProcはWinFormsみたいな使い方は出来ないし、
DeviceWatcherは抜き差しでどちらも同じdeviceInfoUpdateになってしまい、どちらか判別出来なくて微妙です。
よろしくお願いします。
2023/02/02(木) 17:14:49.61ID:Pn095JJT
DeviceWatcher使ったこと無いけどこの辺りは試したん?
https://learn.microsoft.com/ja-jp/uwp/api/windows.devices.enumeration.devicewatcher?view=winrt-22621#events
2023/02/02(木) 17:33:55.37ID:3jZbdKoK
>>32
ありがとうございます
読んで試してみましたが「Added」と「Removed」のイベントは文字通りデバイスが新規追加か削除された時に発生し、
抜き差しは両方「Updated」イベントが発生しました
2023/02/02(木) 19:09:22.21ID:EfPxyF1X
ttps://nagare-it.com/274/
ここを見る限りUpdatedと一緒にAdded/Deletedも発生するらしいけどデバイスによって挙動が変わるのかね

DeviceInformationUpdate.PropertiesにIsEnabledがあるか探して
その値をチェックして接続/切断を判定するとかどうだろうか

ttps://learn.microsoft.com/ja-jp/windows/uwp/devices-sensors/enumerate-devices#enumerate-and-watch-devices
ここの「デバイスの列挙と監視」も参考になるかも

実際に使ったことなくて気になって軽くググっただけだから的外れなこと言ってたらごめんね
2023/02/03(金) 09:30:54.14ID:4nD12Hjs
>>34
はい、その記事を見てシンプルにイベント発生が出来ると思ったのですが、Added/Deletedは発生しませんでした
DeviceInformationUpdate.PropertiesやDeviceInformationUpdate.IdにIsEnabledはありませんでした

一定間隔でデバイス情報をポーリングすれば出来なくも無いですが、それだとスマートじゃないかなと
2023/02/03(金) 10:10:52.52ID:HPBiMoRp
>>35
https://learn.microsoft.com/ja-jp/uwp/api/Windows.Devices.Enumeration.DeviceInformation?view=winrt-22621
このサンプルを見るに
あらかじめリストを収集した上で
更新されたIDを持つDeviceInformationを探してIsEnabled見るんじゃないか
2023/02/03(金) 12:19:13.85ID:5ZfEBQQZ
WMI 使えないんだっけ?
2023/02/03(金) 18:09:14.44ID:wOrSY9je
https://imgur.com/DU5dhjy

この画像のようなデジタル時計をWPFで再現したいのですが
意図したように表示できません。

具体的には以下のようにさせたいです。
・ウィンドウ中央に時分を表示
・半分のフォントサイズで時分の右側に文字の下位置をそろえるように秒を表示
・ウィンドウサイズが変更されると、追従して表示レイアウトとフォントサイズを自動調整

時分だけならViewboxを使って意図したとおりにできたのですが
秒が絡むとどうにもうまくできないのです。

WinFormsで同じようなのを作ったときは自力で計算して描画させていたのですが
WPFでも自力で描画させるしかないのでしょうか?
2023/02/03(金) 19:23:52.97ID:7HGpQsNb
>>38
手もとにPCないのでなんとも言えないけど

<VIEWBOX verticalalignment=buttom>
<textblock font-size=A>時間 分</textblock>
<textblock font-size=B>秒</textblock>
</viewbox>
みたいな感じでいかないかな?
2023/02/03(金) 19:31:42.53ID:QNSGgP05
>>38
秒の高さを時、分の高さ(ActualHeight)をバインドして設定するが、
その時にコンバーターを噛ませて高さを半分とか2/3にすればいけるんじゃね?
2023/02/03(金) 19:58:18.94ID:QNSGgP05
<Viewbox Stretch="Uniform" VerticalAlignment="Center" HorizontalAlignment="Center">
<StackPanel Orientation="Horizontal">
<TextBlock Text="12:00" FontSize="48"/>
<TextBlock Text="59" FontSize="24" VerticalAlignment="Bottom" Margin="0,0,0,6" />
</StackPanel>
</Viewbox>

フォント自体にマージンがあるからマージンを目視で調整するしか無いようだな
2023/02/03(金) 20:03:14.99ID:dPQuY1/G
画像を文字表示分の11種類用意して描画
2023/02/03(金) 20:23:19.25ID:QNSGgP05
実験結果から推測
ジフンの高488のフォントの上12と2下12が空白で、高さ24の秒の上6と下6が空白
だから下に合わせると秒が6だけ下に表示される
これを補正するためにマージンを6取れば並ぶってことじゃないかな
2023/02/03(金) 21:04:00.62ID:HPBiMoRp
TextAlignmentにBottom指定できないから自前で書くのが良いと思うよ
2023/02/04(土) 02:57:23.35ID:CT19HbYK
>>38
Grid使えばviewboxを使わなくても再現できそう
2023/02/04(土) 10:54:32.83ID:9eFPj8BD
reactでやればマジ簡単(*бωб)
2023/02/04(土) 16:34:36.36ID:WyB5KAm7
reactとか時代遅れだろ。
Angularこそ至高
2023/02/04(土) 20:39:27.54ID:yPc0HPvW
そういえば最近はもうAngular見なくなったな…
何がどうなったんだ?
2023/02/04(土) 20:58:47.44ID:Y6T/cmcC
案件ごと消滅した感じ
2023/02/04(土) 21:05:30.82ID:yPc0HPvW
いつも思うけどwebは本当に一寸先は闇
jQuerry死んだときも同じことを思った
2023/02/04(土) 21:41:43.50ID:4XV72bGn
Webのフロントエンドは自分の仕事を産み出して金を稼ぐために不必要に次から次から次へとおれおれブームを作り出すという
2023/02/04(土) 21:57:06.11ID:Y6T/cmcC
殆どが技術が進化方向にあるから
踏み台として次に移れるんだよね

XAMLからvue.jsに移行したときは
かなりの資産を失ったけど
その後vue.jsからreactへは数日もあれば移行できた
失う物は僅かな感じ
2023/02/04(土) 23:27:03.53ID:yPc0HPvW
webだけに限らず仕組みが軽いほうがいいと思うわ
あれもこれも全部できるけど独自の仕組みがあって学習時間がかかるものはどんどん淘汰されていくと思う
2023/02/04(土) 23:31:51.64ID:W3FVNzdt
React出てからもう10年経つのに一寸ってアホか
単に自分がついていけてないだけだろ
2023/02/04(土) 23:42:49.68ID:Y6T/cmcC
まあ普通の感覚だと
jQueryはjsの機能に置き換わってより普遍的なものになってるわけだし
それにSPAやるのにjQueryとかだけではキツいのでreactとかが生まれたわけだからね
ステップアップとしては楽な道だったのを踏み外したのかもね
2023/02/05(日) 19:43:14.16ID:wPslOgmh
>>50
勝手にjQueryを殺すな!
まだまだあと20年はがんばるぞ!
2023/02/10(金) 11:32:03.72ID:QF+VD1Et
KeyDownイベントが発生しない
たすけて
2023/02/10(金) 11:36:13.53ID:G4y7+DjP
キーボードの掃除をしましょう
2023/02/10(金) 12:18:07.26ID:f+gxhvWW
コーヒー飲みたい by キーボード
2023/02/10(金) 13:10:31.04ID:HfV/2vOb
キーボード「気合が足りない」
2023/02/10(金) 17:11:00.66ID:kp3AhjVG
タッチスクリーンだとかそんなところかな?
2023/02/10(金) 18:41:53.09ID:vs4Q5dAA
多分複合コントロールの中でイベントが発生しないとかだろw
ルーティングイベントを調べろ
2023/02/11(土) 12:10:48.85ID:ELrsF36t
Webのスケルトンスクリーンってダサくね?
昔のPCで描画が間に合ってないみたいな、見せちゃいけない汚い裏舞台を見せちゃっているような。
シマー効果もただちらついてるだけというか、昔のテレビの砂嵐を彷彿して格好悪いというか。
2023/02/11(土) 12:40:20.80ID:tGyiyo9Q
意図されてないものが表示されるのと意図してそれを表示するのは全く違うと感じるが
まあ情報量の多いスケルトンスクリーンは無駄ではあると思うけどね
微妙に本当のレイアウトにマッチしてなかったり
2023/02/11(土) 17:11:57.44ID:s/IAI9OO
SPAは最初のロードに時間がかかるから
2023/02/11(土) 17:48:11.11ID:ELrsF36t
開発者が実際に意図してやってるかどうかはどうでもよくて、
意図してやっているとユーザーに思わせられれば成功、ひでー作りだなと思われたら失敗。
2023/02/12(日) 16:03:17.30ID:O9dtb47z
知能が低い人に合わせるのか一般人に合わせるのか
2023/02/12(日) 16:06:46.22ID:O9dtb47z
webサイトにつないだらほぼ全画面占領して動画読み込み初めてスキップも出来ずにnowloadingとだけ出たら殺意沸くわ
2023/02/12(日) 17:09:35.54ID:N20Cmn/5
.Net6でプラグイン形式のプログラム作ってるんだけどAssemblyLoadContextってもしかしてWPFじゃ使っちゃだめなやつ?
2023/02/14(火) 15:16:44.74ID:mciNdrzE
MAUI信じていいんか?
2023/02/14(火) 15:29:36.09ID:Xga81Eab
信じる者は(足元を)すくわれる
2023/02/14(火) 16:14:11.64ID:bTgNAyEg
>>71

まさにそれ
2023/02/14(火) 16:22:18.36ID:sw931VSz
「MAUI やりたい事」でググって情報の無さに絶望した!
2023/02/14(火) 20:41:01.74ID:4KQ468uN
MAUIは人脈必須の後継だぞ
人生を無駄にするな
2023/02/15(水) 12:38:52.21ID:waHy/d2K
とにかく臭い
2023/02/22(水) 18:17:03.58ID:uetx62cD
WPFでアプリのアイコンを動的に選択する方法はありますでしょうか?
WinFormならSystem.Drawing.Iconで呼び出せば良さそうなのですが、
WPFだとSystem.Drawing.Iconは無いってVS2022に言われるのでお願いします。
2023/02/22(水) 22:08:32.86ID:jxNN8dk9
https://github.com/dotnet/wpf/blob/main/roadmap.md

https://github.com/dotnet/wpf/discussions/7555
voteでもしとけ
78デフォルトの名無しさん
垢版 |
2023/02/23(木) 09:15:32.83ID:1tjEzFEU
コントロールって全てDirect3Dで描画?
グラフ描画系だけ?
2023/02/23(木) 10:53:08.81ID:Gf1B/b41
>>76
ググったらそれらしきものはあった
https://qiita.com/sukobuto/items/a672e945103d7dda284b
これの一番最後
2023/02/23(木) 20:35:06.75ID:MOYrMHVL
Blazor Hybrid良いじゃん
XAMLもHTML+CSS+jsも使えるし
2023/02/24(金) 01:05:35.00ID:F+/0AG8v
>>80
詳しく
2023/02/24(金) 08:41:09.47ID:EkFlv8/C
>>81
このページの内容そのまま
DI必須だけどMVVMも出来るし、何よりUIにCSS使えるのが便利
SASSも導入すれば、個人的にResourceDictionaryよりスッキリしてて好き

https://learn.microsoft.com/ja-jp/aspnet/core/blazor/hybrid/tutorials/wpf?view=aspnetcore-7.0
2023/02/24(金) 10:13:33.17ID:qC9AVot7
>>79
ありがとうございます
アプリ左上とタスクバーのアイコンは変える事が出来ました
ただ、実行ファイルとショートカットのアイコンは変わらないので、別設定が必要なのでしょうか?

・実行ファイルのアイコン変更でやってみた事
×:AppData/Localにあるアイコンファイルを手動で削除してWindowsの再起動
○:別のPCで起動
2023/02/24(金) 12:04:32.75ID:HbsC8klK
全部変えるならプロジェクト設定になかったっけ?
2023/02/24(金) 14:41:34.30ID:qC9AVot7
>>84
インストーラのプロジェクトを2つ作成して、
ショートカットとプログラムファイルでそれぞれ別のアイコンファイルを指定する事で何とか変えられました

インストーラじゃなく実行ファイルの方で、アイコンの指定をスマートに行う方法は無いのかな?
2023/02/24(金) 18:00:41.90ID:F+/0AG8v
>>82
やっぱWebViewでhtml cssが最強だよな
2023/02/24(金) 22:04:35.42ID:KCjnBZl8
実行ファイル自体のアイコンを動的にスマートに変える方法?
意味あるのかそれ?
何のためにとしか…

昔はwindowsにアイコンキャッシュがあってアイコン変えてもすぐに反映されなかったりしたけど
2023/02/24(金) 23:37:21.09ID:He/Mrrce
みんなはフォルダ構成どんな感じにしてる?
共通で使うようなクラスとか、適当なクラスってどんなフォルダに入れてるか気になる
2023/02/25(土) 00:01:59.17ID:5xbVML89
githubで見るのはcoreみたいなフォルダに基本モデル突っ込んであるのは見るけど

そもそもがModelみたいなフォルダは推奨されないんだよね
機能単位で普通はまとめて共通はcommanやcoreとかってイメージ
2023/02/25(土) 00:03:00.25ID:5xbVML89
commonだ…コマンタレヴー?
2023/02/25(土) 00:24:28.73ID:5xbVML89
C#の名前空間だと結構いろんなものがルートに当たるsystemに突っ込まれてる
2023/02/28(火) 19:15:49.43ID:TF3BHX6b
>>77
Windows 11テーマ対応やることに決まってもなんだかな
今さら何なのか
2023/03/01(水) 06:35:24.40ID:i7L8EuSu
いや、標準テーマが古臭いから仕方なく嫌々バグだらけのUWPやWinUI使ってる人が多いだろうから
テーマの問題が解決すればWPFが最善の選択
2023/03/01(水) 12:16:16.07ID:a+p+VK9T
>>93
UWPがバグだらけって聞かないけど、何処情報?
それとWinUIも流石に1年半だからバグも減っているように見えるが
2023/03/01(水) 12:20:07.56ID:tWOScmTl
アプリの配布方法が制限されてる時点でもはやバグ
2023/03/01(水) 14:21:19.72ID:qZJesg35
>>94
GitHubでのバグレポートが700個、Openが2800個
バグじゃなくてQ&Aがいっぱい混じっていて本当のバグを追跡できない
2023/03/01(水) 16:45:40.86ID:1KuvZnq5
NumericUpDownをそろそろ公式で実装してくれ
2023/03/01(水) 19:30:05.42ID:SBtTwWje
上下キーで数値が変わるのはマジヤバいので無効に出来るようにしてくれ
2023/03/01(水) 19:52:03.14ID:tXmlO50M
さすがに、テーマが古臭いからといってUWPに移行する奴はレアだろう。
2023/03/02(木) 00:17:26.91ID:YJ+cBd/3
有償のコンポーネント使えばテーマなんていくらでも変えられるのに
2023/03/02(木) 09:22:58.33ID:pwr4e0eZ
857デフォルトの名無しさん (ワッチョイ aa9f-ZYAP)2023/03/02(木) 01:06:05.40ID:pwr4e0eZ0>>858
ModernWPF UIのコンテントダイアログでプログレスダイアログをいい感じにMVVMで実装する方法ないかな?

やりたいこと:
したのコンポーネントをProgressDialog.xamlで定義して、ProgressDialogModelView.cs内でEventAggregatorでイベントを受け取ってプログレスバーとテキストを更新
https://github.com/Kinnara/ModernWpf/wiki/ContentDialog

なんだか、UIが更新されない。(Vueで言うところのnextTick()みたいな処理がいる?)
2023/03/02(木) 22:37:03.49ID:eF43jwvI
>>100
有償のコンポーネントやデファクトスタンダードではないライブラリを使うのは論外
ReactivePropertyも当然NG
2023/03/02(木) 22:54:13.96ID:YeVHKr55
んじゃ自作で
2023/03/02(木) 23:06:32.04ID:uNNfNIJk
WPFでモダンなUIをということでModernWPFそしてwpfuiが生まれ
そしたら突然Win11テーマ対応やるかもと
xamarinの方もやる気なさそうだからとUnoPlatformを生み出したら突然のmauiで梯子を外される

ろくな事にならん
2023/03/02(木) 23:08:39.88ID:uNNfNIJk
Cross Platform WPF
Avalonia XPF登場
ただし有料製品
2023/03/02(木) 23:11:13.45ID:uNNfNIJk
maui,unoplatform,avalonia まじで開発リソース分散しまくりで、どれもユーザーが少ないからバグだらけのゴミ製品
2023/03/03(金) 01:43:34.53ID:3lr6AMu6
質問です!
WPFのListBoxで要素数に応じて高さを変えたいのですがどうすればいいでしょうか?
1要素の高さが分かれば計算出来るのですが取る方法が分かりません。
ご教示下さいませ。
2023/03/03(金) 04:30:16.06ID:aKi2/xU4
wpf listbox 行 高さ
でググったら出てきたよ

WPF ListBoxの高さを指定したアイテム数に変更したいです
https://teratail.com/questions/264300


できるかどうかは知らんが
2023/03/04(土) 16:03:39.59ID:iCcXQ8Nl
>108
有難う!ググってそこも見てたんだけど取得時にnullになるので諦めてました。
根本的な事が理解出来てなかったようで、コンストラクターでActiveにしたら取得できると思ってたんだけど、これが駄目だったようです。
コンストラクター以外では正常に取得できました!
勉強になりました、有難う!
2023/03/06(月) 21:34:08.94ID:PqF8zrVp
WinUI3はバグいし
もうちょっとしたアプリはflutterで作った方がいいってこと?
Fluent UIはもちろん
https://pub.dev/packages/fluent_ui
MacOS UIもあるし
https://pub.dev/packages/macos_ui

OS APIをゴリゴリ叩くアプリはやめた方がいいが
2023/03/07(火) 05:31:06.06ID:ZeF7gxYd
正解
でもWindows限定ならWPFがベスト
2023/03/07(火) 08:55:53.14ID:aJu8E32p
ちょっとしたアプリ作るならWinFormsが最強すぎて話にならん
2023/03/07(火) 09:02:57.32ID:oCilbHp7
WPFはWindows 11テーマ待ちかな?

デスクトップアプリ作るとなると、ウィンドウ位置合わせぐらいはやるだろうが
https://pub.dev/packages/window_manager
ちゃんとメンテナンスされてるっぽいし
2023/03/07(火) 19:26:50.19ID:awlf9dGM
さすがに公式はもう対応はしないでしょ
C#界の著名人???たちがなんちゃってアクリルとか作ってたけどそこから進展はないし使われてる感もない

以前アクリル使うとパフォーマンスが落ちて消費電力が上がりますってMSが注意してたんだけど一体なんなのか
何がしたいのか?
2023/03/07(火) 20:54:38.37ID:oCilbHp7
>>114
>>77で今さらWindows 11テーマ対応を投票してやるかもしれないからびっくりなのよ
WinUI 3がグダグダになってるから今さらやろうとしてるんじゃねぇかな
2023/03/07(火) 21:14:57.23ID:jgeYqRwK
マウイの方で聞くべきか迷うんだけどマウイじゃなくてわざわざWinUI3選ぶメリットって何?
バグだらけなの抜きにしても理由思い浮かばん
2023/03/07(火) 21:53:56.24ID:oCilbHp7
MAUI使った事ないけど
MAUIは基本クロスプラットフォームでコントロールはネイティブのラッパーだから、標準で用意されてるUIが各OSの最大公約数的なものになるからUI自由度低いと思う(自分で頑張らない限り)

WinUIとMAUIの標準のコントロール数比較
2023/03/08(水) 18:32:14.17ID:mcdKv02z
>>116
多分誤解があるんだろうけど

Mauiはクロスプラットフォームの仕組みでxamarinの後継
WinUI3は単なるwindowsのUIライブラリで比べるのは変だよ

xamarinとWPFを比べてxamarinじゃなくてWPFを選ぶメリットって何と言うのと同じレベル

windowsでしかUI必要としないならxamarinやMauiを選ぶメリットは多分ない
2023/03/08(水) 18:42:09.48ID:mcdKv02z
Mauiに興味を持つ人間は確実に何かを勘違いしてる
どのレベルでも確実に勘違いがある
使ってみて気が付くまで勘違いしたまま
2023/03/08(水) 19:39:39.70ID:wXZtzhRA
テキストボックス、コンボボックス、チェックボックス、ラジオボタンにグリッドが使えればそれだけでいいんだけどそれでもMAUIってダメなん?
2023/03/08(水) 20:15:21.62ID:mcdKv02z
さっきも書いたけどwindowsでしか使わないのにMAUIを選ぶ理由は基本的にない

個人個人が好きに使えばいいよ
2023/03/08(水) 21:26:16.11ID:xUp/Im5G
>>118
んな当たり前のことが聞きたいんじゃなくてね
最初からMAUIにしとけばどんなアホでもプラットフォーム固有処理と共通処理を分けて設計することになるから少なくとも移植性と将来性の面で有利じゃん
勝手にWindows限定で話されても困るんだけど
>>121
現状xamlの機能はMAUIの方が進んでる訳だがメリット無いとか本気で言ってんならお前の知識の浅さが知れるわ…w
具体的にWinUI3にだけ出来ることとか性能面での優位性とかを書けよ
2023/03/08(水) 21:33:03.96ID:0/PwQdwj
中途半端な将来性やな
2023/03/08(水) 21:41:01.82ID:UYleOs8I
マウイ君は相変わらずアホだな
一つ教えてやると今度はその付け焼き刃の知識でマウント取ろうと暴れたからめんどいわ
2023/03/08(水) 21:51:03.42ID:0kF8prTi
マウイ君は心折れたっぽいね
知識多少はあったからもうちょとできるのかと思ったが5chBrowserの進捗見てたけどあんなにコード書けないのにびっくりしたわ
2023/03/08(水) 22:38:55.94ID:StEoNHA3
>>112
xamlじゃない時点で論外
画面1個だけの使い捨てアプリでもwinFormなんて使う気にもならん
2023/03/08(水) 23:49:30.35ID:mcdKv02z
>>122
まあ君がmauiとWinUIが比較対象じゃないと言うことを知らなかったと言うことだけ理解した
2023/03/08(水) 23:51:38.20ID:mcdKv02z
>>122
一番目の主張と二番目の主張が矛盾してる

1番目は汎用性を持たせろ!
2番目は進んでるほうを使え!

君は何が言いたいんだ
ただ単に馬鹿をさらして終わるのか?
2023/03/08(水) 23:57:16.67ID:mcdKv02z
>>122
プラットフォーム固有処理と共通処理を分けて設計したくないからだろう
わざわざそんなことをしたくない
過去にPLC(ポータブル クラス ライブラリ)とか使って地獄を見てたから汎用性なんてなくていいと思うわ

単一のGUIフレームワークを選択して書いて終わりじゃないか
なんで必要もないのに苦行をするんだか
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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