WPF(.NET, WinUI) GUIプログラミング Part32
WPF(Windows Presentation Foundation)について語るスレ。
前スレ
WPF(.NET, WinUI) GUIプログラミング Part31
https://mevius.5ch.net/test/read.cgi/tech/1674334396/
関連スレ
Windows 10 UWPアプリ開発Part 3
https://mevius.5ch.net/test/read.cgi/tech/1627556967/
コードを貼る場合は以下のサイトの利用をお勧め。
https://ideone.com/ WinUI 3 ソースが公開されたぁーただしzipで 最近はネイティブアプリは下火だね
同等の機能を提供するwebサイトやwebアプリとかと比べると明かに質が落ちるし垢抜けない Windows App SDKとWinUI3って何が違うんや サンプルコードでWindows App SDKとWinUI3でタブが分かれてるのは何なんや WinUI3は新しく開発されたグラフィックAPIセット
Windows App SDKは既存のwinAPIも含めたwin API SDKの総称 カスタマイズできるのはいいんだが何でも検索ボックスつけるのやめてくだされ 「毎日出社したい」わずか3.8% リモートワーク経験者に聞いた
学研ホールディングスのグループ会社であるベンド(東京都千代田区)は、
リモートワーク経験者を対象に「リモートワークに関するアンケート」を
実施した。その結果、半数近くの人が「週5(フルリモート)」(44.4%)
をリモートワークの理想の頻度だと考えていることが分かった。
次いで「週3〜4」(30.7%)、「週1〜2」(20.1%)と続き、96.2%の人がリ
モートワークの継続を希望していることが分かった。毎日出社を希望する人は、
わずか3.8%だった。出社を希望しない理由は「通勤にかかる時間や体力が
もったいない」「子どもの都合で、リモートワークのほうが仕事と家庭の
バランスが取りやすい」「職場の人と毎日顔を合わせるのはさすがにつらい」
といった意見が寄せられた。
一方、「コミュニケーションが取りにくくなる」「出社しないとできない
業務がある」「たまには出社もいい気分転換になる」など、完全リモート
だと不都合だという声もあった。 AvaloniaさわってみてWPFとちょこちょこ違ったり
XAMLエディタのコード補完が変だったりするけどなかなかいいな
Reactive ExtensionさわってなかったからReactiveUIのあたりがなれないが続いてほしい MVVMにおいてプログレスバーの進捗表示を行いたいです
進捗はModel層においてのfor文の繰り返し回数を使いたいです
このときViewModelにパラメーターProgressを使いモデル層のfor文の中で
vm.Progress++1をやるのが一番簡単だと思うのですがこれはMVVMで分離していると言えるのでしょうか? ModelがViewModelに直接依存してるから分離できてない IProgressインターフェースってのが用意されているので
ググって使い方を調べてくださいね IProgressインターフェースは皆に覚えてもらいたい便利なつかい方です >>132
reactとか学ぶと
フログレスとか実装も糞簡単なんで
しっこ漏らすと思いますよ
それでいて実装理論も進んでますからね >>133
やっぱそうですよね
>>134-135
IProgress勉強してみます
ありがとうございます
>>136
ReactはJavaScriptですよね?
これ学んでも意味ないのでは? MaterialDesignThemesを.NET Framework4.6(Window10初期)で使いたいのですが、どのバージョンから何だろう? VSのNuGet画面で確認取れるよ
最新バージョンは4.6.2ってことだ >>139
MaterialDesignThemes v4.6.0以降は.NET Framework4.6.2以降が必要なようだ
しかし、何でまたそんなに古くてレアな環境を >>140
>>141
書き方わかりにくくてごめんなさい。
.NetFramework4.6で(最初のWindows10 1507は4.6)動作するMaterialDesignThemesを希望です。
どんなWindows10でもインストール出来ることが条件なんです。
クライアントのPCはアップデートが出来ないだめです。 >>140
NuGet画面で以前のバージョンを取得出来ますか?
初心者なんでよろしくお願いいたします。 >>142
そもそもそんな縛りのかかっている案件にオープンソースのもの入れて大丈夫なのかが気になるわ >>143
VS少し触ったら分かることなので、それくらい自力で頑張ろうや >>142
そもそもサポート切れOSなんか使うなとしか言えん。 >>142
MaterialDesignThemes v4.6.0以降はNG
→MaterialDesignThemes v4.5.0なら使える
そんな保守的な会社が最初期のOSを使うとは思えないけどなぁ
Anniversary Update (1607)以降なら.NET Framework 4.6.2以降が入ってるのに >>146
触ったらわかりました。
バージョン変えて依存関係も確認出来ることを知りました。 >>149
ありがとうございます。
MaterialDesignThemesを4.5.0で
MaterialDesignColorsを2.0.6もインストールされました。
ビルドするとApp.xamlが4.9.0のままにしてるのが駄目なようでMaterialDesignColorsのところでエラーになります。
その行を外すと実行出来るのですがモノクロになります。 >>151
App.xamlのエラーですが、
System.Windows.Markup.XamlParseException: ''プロパティ 'System.Windows.ResourceDictionary.Source' の Set で例外がスローされました。' 行番号 '11'、行位置 '18'。'
と出て11行は<ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/MaterialDesignColor.DeepPurple.xaml" />です。
例外の詳細は
FileLoadException: ファイルまたはアセンブリ 'MaterialDesignColors, Culture=neutral'、またはその依存関係の 1 つが読み込めませんでした。見つかったアセンブリのマニフェスト定義はアセンブリ参照に一致しません。 (HRESULT からの例外:0x80131040)
となっています。
どうしたらよいのでしょうか? >>149の通り、1607の2016年以前のPCは恐らく社内に無いはずと情シスに確認して、.NetFramewokは4.6.2で行きます! MaterialDesignとは別の質問です。
WPFのデザインをGridを多用しています。各区画はStackPanelで縦か横の配置となるのですが混在は出来ないのでしょうか?
例えば
[Label1] [TextBox1]
☑[Label2]
の様な配置です。
WPFやる前はAndroidアプリをやっていてconstraintlayoutを使ってWidget(コントロール)を相対的に配置していました。
上の例であれば[Label2]の開始横位置は[Label1]の右端から、開始縦位置は[TextBox1]の下と言う感じです。
AndroidでもLinearLayoutがStackPanelと同じ機能ですが、constraintlayoutが流行っているようです。 DockPanelは上下左右を指定して順番に配置していける
constraintlayout程細かなことは出来ないけど >>156
DockPanelで列の初めを揃えるとか出切ればと思ったけど、そういう時は枠を非表示にしたDataGridを埋め込めば良いのかなぁ?
でも、Labelだけなら良いけどコントロールを貼り付けるのは面倒な気がする。
TabControlもTab毎にGrid設定出来るし、
GridSplitterは魅力的です。
あれこれ考えても進まないから、勉強しながらWinformからWPFへ移行します。画面デザインだけでMVVMには関係ない使い方で趣旨には合わないですが。 Avalonia11、マルチプラットフォームで
デスクトップアプリ作るならもうこれで良いやんって感じなんだけど
ブラウザコントロールがネックだ。
msは以前WebView2はマルチプラットフォーム対応にするとか言ってなかったっけ?
あれどうなったんだろ。 >>158
ちょうどMAUI以外のフレームワーク覚えたいなって悩んでるとこだったから、俺もAvalonia触ってみようかな
MAUIと比べてどういうとこがいい? 枠がなくて背景が透明でマウスホバーで色が変わるボタンはどのように作れますでしょうか
ラベルなしのAppBarButtonのようなイメージです(AppBarButtonのラベルなしにしてもラベルのスペースが残ってしまいます)
Buttonの背景をTransparentにしてもできませんでした
HyperLinkButtonで色を黒にするとイメージ通りのものができていそうなのですが他に正攻法のようなものはありませんでしょうか >>155
WrapPanelで自作改行コントロールを使うのが楽 >>155
StackPanelの代わりにGrid入れ子にすればできそうだけど、面倒そう >>159
標準でDataGridがある、MacOS対応がCatalystじゃない(mono)、そこそこよく出来たMaterialDesign/FruentUIのポートライブラリがある(個人的オススメはFruentAvalonia)
MAUIよりはWPFに近いXAMLとか
最近VSCodeの拡張が出たので一気に生産性上がった AutoSuggestBoxの高さなんですが、高さを指定しないと上段1個目のように親要素の高さになりますが、数値を指定する以外にフリーの状態の高さ(下側のもの)にする方法はありますか?
https://i.imgur.com/XRguc77.png
https://i.imgur.com/eWwHNx3.png
```
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<Border Height="80" Width="100" Background="Blue"/>
<AutoSuggestBox Width="300" PlaceholderText="Test" Background="Red"/>
<AutoSuggestBox Width="300" Height="50" PlaceholderText="Test" Background="Red"/>
<AutoSuggestBox Width="300" Height="20" PlaceholderText="Test" Background="Red"/>
</StackPanel>
<AutoSuggestBox Width="300" PlaceholderText="Test" Background="Red"/>
</StackPanel>
``` WPFでリアルタイムの折れ線グラフを長時間更新し続ける場合、どのグラフライブラリがいいのかな?
ScottPlotでSignalPlotを使ってみたけど、時間が経つと重くなってしまいました。
更新方法は画面端で一度クリアでも、疑似スクロール(画面端で新しいポイント追加+画面外になるポイント削除)のどちらでもいいです。 そういえば昔レートをリアルタイム表示するグラフをWPFで作ってたな
懐かし issue見るとWinUI 3のx:Bindって前からメモリリークしまくってんだな WinFormsで特定のセルにボタンとかコンボボックスを設定していました。
DataGridView.Rows[row].Cells["special"] = new DataGridViewButtonCell();
行毎に特定セルの設定は異なります。
WPFではどうするのでしょうか? セルテンプレートに変化する分のアイテムを全部入りにしておいてビジビリティで見せる見せないとか?
まあきちんとしたカスタムコントロールを書いた方がいい気もする >>172
ありがとう。
セルテンプレートで出来ました。 最近、JavaでWEBアプリばっかやらされてたから浦島太郎何だが、.netってか、visual studioで業務アプリ作るなら何がオススメ?
売上の入力とかやるから明細入力が必須何だが 今は.net6がブレイクして猫も杓子もBlazorな感じだね、8でどうなるか知らんけど
donetコマンドあればVSCodeで開発できるVisualStudio要らない、という風潮はしばらく続くかな どうせWebで動かすならフロントエンドもTypescriptでええやんってなっちゃうんだわ。わしゃもう帰ってこれなくなっちゃった WinUI3ってWPFにくらべてスカスカデザインすぎね?
従来通り高密度のデザインにしたかったら使えないのか コンパクトモードってやつでしょ
ただ一部のコントロールしかコンパクトにならず
いまいち .NET 8でWPFにOpenFolderDialogが追加されたらしい 今更かよw
しゃーないからずっとFormsのフォルダダイアログ使ってたわ 1.43らしきものが来たけど、ドキュメント更新されないから詳細不明だ キターしようと思ったら先こされた
Release notesは1日ぐらいまたないと
いつもnugetが先 つか、WPFのWindows 11テーマ全然情報出てこねぇ
2年かかるのかよ
MSクソ お客様はOSに合ったUIを求めてるからな
例えば、Mac操作しててWindowsアプリの画面出てきたら発狂するわけです WPFのWin11テーマってそれWinUI3でわ?
しらけんど https://github.com/dotnet/wpf/discussions/7555
WPFのモダン化ということでここでみんなで投票したやん
で、Windows 11スタイルと>>185のFoldetDialogが決まったやん WPFのテーマは散々やらないやらないしてたのにやるのか どうせすぐに放棄される
MSのUIフレームワークは短命 短命だったUIフレームワークってSilverlightとWTLのこと? SilverlightはWPFのサブセット/軽量版だね WPFもまたブラウザー内で動作できたぞ
今は出きるのか知らんけど >>191
お客様「アプリのフォントをMacと同じヒラギノフォントにしてくれ」
俺「◯◯万円かかりますので、お見積りを出しますね」
お客様「ならいいです」 .NET8になってフォルダダイアログが追加された
要望が増えるとカラーダイアログとか増えていくのだろうか? WinSCPのGUIってなんのフレームワークですか? >>204
良くあるFluentと見た感じが違うのは独自コントロールなのかな Template Studioが.NET 8に対応してくれるのってかなり先になるのかな どうでもいいけどUIデザインころころ流行らされても開発者的には迷惑でしかないよな
FlatだのMaterialだのFluentだのどうでもええんじゃ でも使った瞬間に古さを感じるようなGUIがある
今の見にくくて使いにくいGUIの流行りが無くなればいいのにと思うけど >>212
そう?FluentUIは(慣れたので)割と直感的だけど
VSが採用したので長期政権(今から最低10年)になると期待しているよ 見た目リンクなのかタダの文字装飾なのかわからんGUIはダメだと思う
リンクにしても外部のwebへ誘導されるのかアプリ内なのかも遷移するまでわからない それってWinUI 3 Galleryアプリだと何処の事? クリック遷移する前に外部リンクか内部なのかわかるパターンを最近多分見たことがない
困ったときにアプリで何らかの対応をしてくれるのか
それとも一般的なヘルプに飛ばされるのか
オンラインヘルプは大体ヘルプになってないから死ねって思う windows10の設定だと上の方に普通の項目があって下の方にwebのヘルプ項目がある
ディスプレイだと上部に
ディスプレイの詳細
グラフィックの設定
と言うただの文字
下の方にwebのヘルプと言うタイトルの下に
プロジェクターまたはPCに接続する
複数のモニターをセットアップする
フォントサイズの調整
画面のちらつきを修正する
こちらもただの文字
にしてもこれ典型的なダメGUIだよな
オンラインヘルプと実際のやりたいことへ誘導は逆であって欲しい
ヘルプへは抽象的に、機能へは具体的に 全てのPCが常にwebに接続できると言う固定概念がアホすぎる