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/
86デフォルトの名無しさん
垢版 |
2022/11/02(水) 07:29:42.90ID:ZLG7n9c4
>>79
1/4の間違い。
2022/11/02(水) 11:02:57.90ID:ELmiQmoZ
>>85
ウィンドウハンドルはWindowInteropHelperクラスで取得できる
2022/11/02(水) 14:53:36.97ID:oFLEXjDH
>>86
89デフォルトの名無しさん
垢版 |
2022/11/02(水) 16:21:23.69ID:UTfJbDjM
>>82
利用者がいらいらしそうなUIだな
2022/11/02(水) 16:26:18.79ID:1kc06PSN
xamlファイルがでかくなったんだけど、その中の一部を適当にUserControlに切り出して別のファイルにするのあり?
ただし、UserControlに依存プロパティとか一切追加せず再利用性は考えない
2022/11/02(水) 16:46:46.13ID:JEUy4laV
再利用性を考えろよ
2022/11/02(水) 17:40:49.75ID:ZntxxxkH
>>90
自分はそうするよ
そうしないとメンテできない
2022/11/02(水) 18:05:13.82ID:1kc06PSN
>>92
ありがとう
ファイルがでかくなってきて放置してたけどダイエットさせます
94デフォルトの名無しさん
垢版 |
2022/11/02(水) 18:31:17.89ID:ZLG7n9c4
いつもお世話なってます。ListViewのレス主。

TABコントロールにデータグリッド張り付けてリスト表示はできるようになった。
初WPFということもあり大変の連続。さらなる問題が。

例のダブルクリックwしてID取得できたので詳細表示用のTABに切り替えようと
したら切り替わらん。
シングルクリック(データグリッドに対して)だと問題なくTABは切り替わる。
タプルクリックのイベントドリブンは実行されてる。

MyTabControl.SelectedIndex = 1; の方法のほか、

<TabItem Header="tabitemI"> にして
tabitemI.IsSelected = true; の方法も試したがダメ。

謎すぎ。
95デフォルトの名無しさん
垢版 |
2022/11/02(水) 20:30:58.96ID:UTfJbDjM
SelectedItemにそのTabItemぶち込めば?
2022/11/02(水) 22:11:15.26ID:8XXQ/ttC
>>80
https://qiita.com/hqf00342/items/40a753edd8e37286f996
パフォーマンスと省メモリだそうな。
そんなことより他がオワコンだから必然的にこれになる。
97.NET MAUI HighScool
垢版 |
2022/11/02(水) 22:48:17.83ID:v08tA7cv
>>96
おぉサンクス
2022/11/03(木) 11:11:51.07ID:G7rGbxep
>>85
>>87
ありがとうやってみます。

>>89
業務アプリなんで操作間違えられるよりいいかなーと
2022/11/03(木) 11:19:25.56ID:0QCo1mM0
マルチウィンドウじゃなくシングルウィンドウで内容を書き換えるのが最近の流行だぞ
触れないウィンドウをバックに表示する意味がないしウィンドウに触れなければ邪魔になっても移動させることすらできん
ウィンドウハンドルの使い方をわざわざ調べて手間かけて作ってレガシーな使用感でユーザーをイライラさせるくらいならルーティングの方法を調べた方が有益なんだがな
まあ今から設計し直せないなら仕方ないが
2022/11/03(木) 11:55:41.75ID:G7rGbxep
>>99
同じ意見です
趣味開発の範囲ではシングルウィンドウでしか作ってないですね
UWP触ってきてたんでWPFのマルチウィンドウでもUIスレッドが共通なところに魅力感じたのとまあ画面設計がそうだったからに尽きるかなあ
101デフォルトの名無しさん
垢版 |
2022/11/03(木) 13:22:02.66ID:/C0V73DR
MSはMDI非推奨。
2022/11/03(木) 13:26:48.39ID:irjlHMAb
MDIの話など誰もしてないが
ていうか今MDIなんて見ないだろ
2022/11/03(木) 13:45:45.53ID:j+eH91hf
MDIはMultiple Document Interfaceの略で複数のドキュメントを一つのアプリケーションで開くUI
今で言うとブラウザのタブ表示に近いがタブと違ってそれぞれ独立したウィンドウとして大きさを変えたり最大化最小化したりできる
ただし親ウィンドウというものがあってドキュメントのウィンドウはそこから出ることができない

一方今ここで話されているマルチウィンドウは複数のドキュメントのそれぞれに対応するウィンドウじゃなく一つのドキュメントのユーザー入力のそれぞれのフェーズに対応するウィンドウ
たとえば一覧ウィンドウと詳細ウィンドウなどが該当する
新しく開かれたウィンドウは親ウィンドウの外に開かれ親ウィンドウは入力を受け付けなくなる
2022/11/03(木) 13:47:30.34ID:j+eH91hf
>>102
Visual StudioがまだMDIを採用してるな
105デフォルトの名無しさん
垢版 |
2022/11/03(木) 15:03:55.39ID:myjWXqan
わかりやいのではEXCEL。
2022/11/03(木) 15:06:26.20ID:j+eH91hf
いつのExcel使ってるんだよ
2013でSDIになってるぞ
https://learn.microsoft.com/ja-jp/office/vba/excel/concepts/programming-for-the-single-document-interface-in-excel
2022/11/03(木) 16:52:21.82ID:knTa8KlP
Visual Studio のもMDIとは違うでしょ
親ウィンドウの外に出せるし
108デフォルトの名無しさん
垢版 |
2022/11/03(木) 17:21:22.30ID:HObwb99t
そもそもMSのUI設計がすべて正しいという主張は笑われる時代
2022/11/03(木) 18:09:55.86ID:YKwh7Bo0
CommunityToolKitのMVVMって、ObservablePropertyのsetterの可視性変えられないの?
問答無用でpublicになりんだが
ゴミすぎる
110デフォルトの名無しさん
垢版 |
2022/11/03(木) 18:19:45.38ID:myjWXqan
VS6.0 MFCではMDI,SDIのプロジェクトあったな〜。MDIは面倒そうだし
使い道がなかったので使わなかった。
2022/11/03(木) 18:34:20.06ID:NbsIPyEs
全て正しいとは思わないけどまあこなれている方だと思うよ
むしろ笑われてるのは昔の印象で語ってる老害かと
2022/11/03(木) 18:39:58.92ID:0QCo1mM0
Windowsアプリを作るならMSのアプリを手本にするのは当然だろ
じゃなきゃ「癖がある」って評価にしかならないんだから
独自のUIは敬遠されるだけ
2022/11/03(木) 19:57:29.23ID:biYgemCw
vs codeもウインドウを外に出せたらいいのにな
業務アプリなんてしょうもない画面沢山作るんだからタブブラウザみたいなUIがいいよ
2022/11/03(木) 20:11:01.69ID:tNReOobE
WinUIの1.1以降の新しいマルチウインドウは、シングルウィンドウで運用しているページのオブジェクトをそのまま
新しいウインドウに貼り付ける想定で組まれているんだよな
だからSDIで作ったアプリのグラフなどをマルチウインドウで比較など作れる
2022/11/03(木) 22:37:33.32ID:mR06n/1V
>>113
それはVSCよりも
ベースのElの問題かな
116デフォルトの名無しさん
垢版 |
2022/11/04(金) 19:50:08.18ID:M4OnBPBD
WINFORMSでできることは全てできると聞いてたのに、、、
this.button1.PerformClick(); とか
SendKeys.Send() などないじゃないの。
全くもって騙された!
あれこれやればSendKeys.Send()は使えるらしいが。

ホンマWPF は疲れる。
2022/11/04(金) 20:18:07.73ID:Lq/sATuq
ボタンクリックメソッド呼べばいいじゃん
2022/11/04(金) 20:19:58.46ID:RBTLkTQo
誰に聞いたんだか知らんがまあ自分で作ればできるっちゃできる
そもそも違うものなのになぜ同じだと思ったんだろ
119デフォルトの名無しさん
垢版 |
2022/11/05(土) 08:10:09.51ID:eN0ov2nj
Winformsの後発なんだから今まであった便利なものは継承するのが普通。
2022/11/05(土) 08:35:10.98ID:zg6rbg9v
便利ではないからな
UI Automationというもっと便利なものが使えるからそれを使え
2022/11/05(土) 14:13:04.79ID:SYLf/HEa
>>119
あるよ
違うフレームワークなんだからそれぞれのやり方を覚えような
2022/11/05(土) 14:23:18.30ID:kGw8yk2y
そもそもViewとロジックが疎結合だから、SendKeysみたいな姑息なことをやる必要がないだろ
設計を見直すいい機会だから頑張れというほかない
2022/11/05(土) 15:21:55.89ID:cOfvjAsq
viewとviewModelを素結合にようという
発想そのものが諸悪の根元
124デフォルトの名無しさん
垢版 |
2022/11/05(土) 18:32:23.25ID:eN0ov2nj
業務アプリってのは姑息なやり方も必要なんだな。
2022/11/05(土) 19:00:07.74ID:FvU7hIRr
仕様がレガシーだとそういうこともあるけど、
そんなもん蹴って作り直した方が色々捗るぞ
2022/11/05(土) 20:06:45.45ID:yxkEcNx6
それが簡単に出来るならみんなそうしてるわけで...
作った人がいるならまだしももう退職しました~なんてコードを調べて手直しなんてやる工数も期間もないのがほとんどだし
2022/11/05(土) 20:18:37.08ID:kGw8yk2y
それでもWinFormsからWPFに乗り換えるタイミングなら少しは手間かけてもいいんじゃないかな?
COBOL時代のロジックが残っていたりすると殺意を覚える
2022/11/05(土) 22:39:53.01ID:mkdD7RbX
ユーザー子会社にいた事あったけど、基本的にみんな勉強とかしないから指示されたコードしか書けなかったな
下手に最新のフレームワークとかデザインパターン導入したら理解できなくて適当に書かれて終わる
2022/11/05(土) 22:46:11.02ID:zg6rbg9v
勝手に導入したらそらそうなるわ
導入する前にみんなで勉強会するんだぞ
2022/11/05(土) 23:07:41.83ID:WaJWpX/F
その会社には勉強会という文化はなかったな
ちょっと気になったけど、勉強会って業務時間中にやるの?
2022/11/05(土) 23:17:26.78ID:yxkEcNx6
>>130
そりゃ業務のための勉強だから業務の一部だよ
2022/11/05(土) 23:51:37.49ID:E55KL9NL
勉強会とそのための準備の時間って貰えるもんなんだな
みんないい会社に勤めてそうだわ
2022/11/06(日) 06:55:15.36ID:R9xNZ21A
>>130
いや、定時過ぎてからだぞ。
残業代はつかない。
参加したかどうかは把握されてるから評価の判断材料にはされる。
134デフォルトの名無しさん
垢版 |
2022/11/06(日) 09:20:15.40ID:Rn36JAlA
勝手に開催するやつは文化に組み込まれてないと難しいとは思うけど、
そうじゃなくてもフレームワーク変更にメリットがあって、ちょっと勉強が必要というなら、
説明資料つくれば業務時間内にやる許可取れると思うで。
2022/11/06(日) 21:59:47.93ID:SHLZopS4
>>133
ブラック臭いけど、以外と一部上場とかでそういうセコいところあるよな
2022/11/06(日) 23:10:33.70ID:L+smrKSs
サービス残業ってことになると本当にやる気のある人がいないと、なかなか難しそう
そういう人ってその会社見切って転職するイメージあるな
2022/11/07(月) 15:33:20.29ID:QCbpxt0g
TabControlの名前をXAMLでResources.resxで変えたいのですが、以下のエラーが出ます。
エラーコードでググっても解決策が見当たらなかったのですが、Headerに直接Resources.resxを指定しているのが間違っているのでしょうか?

<Grid>
<TabControl x:Name="MainTab">
<TabItem x:Name="tab1st" Header="{x:Static lang:Resources.Tab1}">

エラー XDG0062 'WpfSample.Properties.Resources.Tab1' StaticExtension 値は、列挙値、静的フィールド、または静的プロパティに解決できません。
138137
垢版 |
2022/11/07(月) 16:17:17.03ID:QCbpxt0g
すいません、自己解決しました。
Resources.resxを「Public」にしていませんでした。
139デフォルトの名無しさん
垢版 |
2022/11/07(月) 23:14:03.87ID:K4lMrp/9
WPFってx:Uid使えないんだっけ
140デフォルトの名無しさん
垢版 |
2022/11/09(水) 02:45:19.03ID:fw9ZhIfn
WPFのXAMLでコントロールの一括設定をしたいと思い、以下のような形で設定しても設定されないのですが、なぜでしょうか。

<Window.Resources>
<Style TargetType="Window">
<Setter Property="FontSize" Value="12" />
<Setter Property="HorizontalAlignment" Value="Left" />
<Setter Property="VerticalAlignment" Value="Top" />
<Setter Property="Padding" Value="0,0,0,0" />

TargetType="local:MainWindow"にしてもダメでした。
141デフォルトの名無しさん
垢版 |
2022/11/09(水) 02:53:12.62ID:fw9ZhIfn
もう一点、リソースファイルからSystem.Stringを読み込んでフォントを変更しようとすると、stringからfontfamilyにはキャストできないとエラーになります。
解決策はありますか。

<Setter Property="FontFamily" Value="{StaticResource Window_FontFamily}" />

リソース.xaml
<ResourceDictionary>
<sys:String x:Key="Window_FontFamily">Arial</sys:String>
142デフォルトの名無しさん
垢版 |
2022/11/09(水) 04:14:47.46ID:fw9ZhIfn
2点目は自己解決しました。sys:StringではなくてFontFamilyタグを使えばOKでした。
2022/11/09(水) 06:55:52.00ID:IPlnqMco
Windowのスタイルを自分に置いてもだめ
Appに置いときな
144デフォルトの名無しさん
垢版 |
2022/11/09(水) 10:05:18.20ID:V6k46r68
Win11 22H2で標準の印刷ダイアログが変わったわけだけど、
このダイアログではプレビューが右に表示されるっぽいけど、
WPFアプリはどうやったらそこにプレビューを表示できるんだろう…。
アプリのユーザーから見ると、プレビュー枠あるのに、そこに出てないのは不具合に見えちゃうよ。
145デフォルトの名無しさん
垢版 |
2022/11/09(水) 13:28:39.76ID:fw9ZhIfn
>>143
ありがとうございます。FontFamily/FontSizeはApp.xamlの下記一括設定でできたようなのですが、HorizontalAlignment、VerticalAlignment、Paddingは各コントロールで効いていないようでした。
何か、設定方法を間違えているのか、そもそも一括設定できないものなのか、それとも各コントロールで何か他のプロパティを設定してしまうと別の設定になってしまうもののか、どう理解すればよろしいでしょうか。

App.xaml
<Application.Resources>
<ResourceDictionary>
<Style TargetType="Window">
<Setter Property="FontFamily" Value="Arial" />
<Setter Property="FontSize" Value="12" />
<Setter Property="HorizontalAlignment" Value="Center" />
<Setter Property="VerticalAlignment" Value="Top" />
<Setter Property="Padding" Value="0,0,0,0" />
146デフォルトの名無しさん
垢版 |
2022/11/09(水) 15:26:49.23ID:c1WXf99g
各コントロールのスタイル書くしか無いんじゃないのかな
何でもかんでもWindowから引っ張ってきてるわけないと思うし
textblockみたいなのは影響が広範囲に及ぶが
2022/11/09(水) 15:28:34.87ID:oSagnmD6
WindowのHorisontalAlighmentにCenterなんか入れても何もならんだろ
148sage
垢版 |
2022/11/09(水) 17:09:37.46ID:h/3W+SIE
プロパティのFrameworkPropertyMetadataでInheritsが指定されてるかどうかで挙動が違う
フォント関係のは指定されてるから親コントロールの値を継承する
指定されてないプロパティは継承しないから個別に指定する
どのプロパティでInheritsが指定されてて、どれが指定されてないかはドキュメントには書いていない(なぜ?)
経験的に覚えるか、リファレンスソースを見るしかない
149デフォルトの名無しさん
垢版 |
2022/11/09(水) 17:26:32.44ID:fw9ZhIfn
みなさんありがとうございます。理解しました。
2022/11/09(水) 17:35:26.54ID:kfauSW+k
ModernWPFの作者動き出したのか
2022/11/09(水) 20:47:51.10ID:ctHFIT47
>>145
Windowのスタイルは定義にキー名つけてあげて、適用する側もキー指定してみて
152デフォルトの名無しさん
垢版 |
2022/11/09(水) 21:00:18.11ID:UR8GXC6A
うまく動かない時はXAML側の問題なのかソースリスト側の問題なのか
それすらわからんから余計解決までに時間かかる。
どちらにも問題がある場合もあるし。
禄でもない設計だよな。
153デフォルトの名無しさん
垢版 |
2022/11/09(水) 22:19:32.72ID:fw9ZhIfn
>>151
こういうことですかね?これをやってもやらなくても挙動は変わりませんでした

MainWindow.xaml
<Window Style="{StaticResource WindowStyle}"
・・・

App.xaml
<Application.Resources>
<ResourceDictionary>
<Style x:Key="WindowStyle" TargetType="Window">
・・・
2022/11/09(水) 23:14:57.13ID:kfauSW+k
https://devblogs.microsoft.com/dotnet/winforms-enhancements-in-dotnet-7/
WPFの見捨てられっぷり
155デフォルトの名無しさん
垢版 |
2022/11/09(水) 23:53:08.17ID:fw9ZhIfn
>>151
すみません。デザイナー上は変わらなかったのですが、動かしてみたら結果変わりました。キー指定しないと効かないですね
156デフォルトの名無しさん
垢版 |
2022/11/10(木) 02:53:43.49ID:UhRwOzaE
>>154
出てきて10年以上経つのにな。
衰退するのは間違いないらしい。
157.NET MAUI HighSchool
垢版 |
2022/11/10(木) 06:17:51.76ID:oMPYiM7T
WinUI3に移行したいんでしょきっと
WinFormおじいちゃんのための受け皿は残してるってだけで
158.NET MAUI HighSchool
垢版 |
2022/11/10(木) 06:25:29.77ID:oMPYiM7T
Office365(これからMicrosoft365になるんだっけ?)はWinUIを彷彿とさせるUIになって来たな
単純にWindows11で動いてるだけでそう見えるだけなのかもしれんけど
まぁUIをWinUIで書いて機能面は元々のC++ってのもやろうと思えばできると思うからそうやってるのかもしれん
159デフォルトの名無しさん
垢版 |
2022/11/10(木) 16:43:51.22ID:xTUswBzX
WinUIはWindows 10でもmicaだなウィンドウの隅が丸くないだけで
160.NET MAUI HighSchool
垢版 |
2022/11/10(木) 18:31:35.13ID:oMPYiM7T
へーこれマイカっていうんだ知らんかった
おしゃれだよな
161.NET MAUI HighSchool
垢版 |
2022/11/10(木) 18:33:35.32ID:oMPYiM7T
まだ色々バグとかコンポーネントが無いとか色々あるかもだがWinUI3めっちゃおしゃれだからこれ使えるならこれ使いたいよな
2022/11/10(木) 18:38:48.66ID:2oSFP+Yc
コンポーネント作るのってそんなに時間かかるものなのかね?
163.NET MAUI HighSchool
垢版 |
2022/11/10(木) 19:07:13.91ID:oMPYiM7T
>>162
ドッキングウィンドウとかむずそう
2022/11/10(木) 19:20:13.33ID:2oSFP+Yc
>>163
そんなのMSのエンジニアたくさんいるんだからさっさと作ればいいのに
2022/11/10(木) 20:04:24.20ID:cGTLeOhK
今時ドッキングウィンドウなんか流行らないでしょ
そんなものが必要になるような高度なUIを必要とするアプリなら、
どうせドッキングウィンドウに対する要件も高度に特殊化されてるから標準で用意する意味はない
2022/11/10(木) 20:39:56.38ID:lDQmNpkM
な事はない。要るだろ。
因みに俺が良く使ってるのはこれ↓
https://github.com/react-grid-layout/react-grid-layout
167.NET MAUI HighSchool
垢版 |
2022/11/10(木) 21:28:41.67ID:oMPYiM7T
>>164
だよなぁ
168.NET MAUI HighSchool
垢版 |
2022/11/10(木) 21:29:41.07ID:oMPYiM7T
>>166
Reactかよ…
2022/11/10(木) 21:32:58.24ID:EsPKnpGb
>>154
WindowsフォームでもMVVMパターンについて言及されてるw
MVVMが怖くてWPFから逃げてた4流PGカワイソw
2022/11/10(木) 22:01:06.12ID:zhxwh4fX
> どうせドッキングウィンドウに対する要件も高度に特殊化されてるから標準で用意する意味はない
要件なんてたいてい一緒だろ
適当な事言いすぎ
2022/11/10(木) 22:23:19.35ID:zhxwh4fX
AvaloniaUI
https://github.com/wieslawsoltes/Dock
WPF
AvalonDock
まぁ、商用ならたくさんあるが
WinUIは3年前くらいのロードマップにもResearchかなんだかでDockingの言及あったが消えた
まぁ、WinUIもそうだが人的リソースさかないでやる気ないだけ
2022/11/10(木) 23:00:05.70ID:yMTwAnCT
Project Reunionとかつけてたくせにやる気ないのか
173.NET MAUI HighSchool
垢版 |
2022/11/10(木) 23:20:44.15ID:oMPYiM7T
>>171
アヴァロンドックは有名だよな
VisualStudioっぽいUI
2022/11/10(木) 23:51:31.93ID:lDQmNpkM
>>169
MVVMはWPFのが酷すぎてというのがまともな感性ですな
2022/11/11(金) 07:38:09.36ID:VNOGdawE
WinFormsで新しいバインドとかやるのか…WPFも弄れよ…
2022/11/11(金) 11:34:14.50ID:9kenv454
>>166
しゅごい…!
2022/11/11(金) 11:45:21.38ID:Uq5PXeTC
https://devblogs.microsoft.com/dotnet/wpf-on-dotnet-7/
一方WPFはコミュニティによる簡単な性能改善とバグ修正のみか
WinFormsがHDPI対応強化とMVVM対応って、もうこのスレでよく言われてたWPFを使う理由が無くなっちゃったな
ボタンを回転させたりするくらいか
178.NET MAUI HighSchool
垢版 |
2022/11/11(金) 12:27:03.46ID:kw0okeTL
>>176
それReactだよ…
179.NET MAUI HighSchool
垢版 |
2022/11/11(金) 12:27:30.55ID:kw0okeTL
>>177
デザインも古臭くなっちゃったしな
2022/11/11(金) 12:27:47.44ID:8WOXnYS7
メタが倒産したらReact死んでしまうん?
2022/11/11(金) 12:49:47.05ID:9kenv454
>>178
React万歳!!

>>180
そのときはVercelが引き継ぎそう
2022/11/11(金) 13:51:03.30ID:q6l5EPJl
WinFormsのダークモードの可能性にも言及されてるよな
一方のWPFは..
183デフォルトの名無しさん
垢版 |
2022/11/11(金) 14:16:04.72ID:LozOvKy/
WASDK 1.2出てた
184デフォルトの名無しさん
垢版 |
2022/11/11(金) 18:21:02.46ID:WyiGvx4p
難解なWPFを制した君たちは新しいプラットフォームになっても
平気平気w
2022/11/11(金) 18:41:31.37ID:q6l5EPJl
WinAppSDK バグフィックスしてるのか?
クラッシュしないと直してくれない?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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