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/ 1.5は大型アップデートのようだな 開発体制変更でだいぶ変わったんだろうか >>360 WindowsAppRuntimeのインストール権限の仕組みが良く分からん 管理者権限は要らない、が正解で良いんだよね? .net frameworkと.net なんでこんな紛らわしい名前つけるのか .net coreでよかったじゃん 実際5.0になり、4.8を数字的に越えたからCoreと付けるのやめたんやしなぁ。 .NET Core 3.1の次だから本来4.0になるところを紛らわしいからスキップして5にしただけで 当初は超えてなかった 1.4のランタイムがMSStoreの更新してくれるアプリの扱いになってるから管理者権限なんていらないんじゃないの WPFの11テーマの対応って簡単に試せないのか? .net 9まで待てと? 儲かるのが、VB6の改造仕事しかない。 たまに、WPF仕事もやりたい。 未だにVB6のメンテってあるよな 濫造されたからね 俺もVB6のシリアル通信コントロール使ったアプリをWpfのC#でリメイクしたよ。 企業の設備がWndowsXPでVB6というのが膨大にある。 さすがにN88BASICは少なくなったが、その手の案件は、中抜き業者が手を出さない。 となると企業とダイレクト契約になり、利益率が高い。 契約してしまえば、WPFでもWINUI3案件でも、小規模は見積り有利な方に注文が来る。 ただ、VB6に比較して利益率低いので、普通はVB6案件しかとらない。 .NET Frameworkも4.8で終わらずに4.8.1とか出てるからな そのうちジワリと4.8.2とかなりそうよな。 4.9までいくとはおもわんが、4.8.4くらいまではいくと思う フレームワークのバージョンにコケるもクソもないと思うけど 親Windowから子Windowを開くのってMVVM的にはどう書くのが標準的なの? 普通にViewのイベント拾ってコードビハインドで子Window開いてやればええの? 子Windowを開くというUI自体がWPF的でないという印象がある どちらかというと、スマホUIのような画面遷移でどうにかするUIな印象 デスクトップアプリなんだから子Window開きたいというのも分かるけど リストビューのアイテムに隙間空いてんのかよ クリックしても反応しねー時あるからおかしーとおもったわ 責任者出てこい Apple musicアプリ快適すぎワロタ WinUI3だぜ?なんでAppleの方が作り方うまいんだよw MDIが作れないって意味なんだろうか? SDIで十分だけども MVVMの宗教上の問題だよ 親Windowのハンドルが必要だからVMでは開けない コードビハインドは使用禁止なのでViewでも作れない >コードビハインドは使用禁止なのでViewでも作れない それは誤解。viewにあっていいものはコードビハインドに書けばいい。 別にコードビハインドで良いじゃん、使う側わ知ったもんじゃないよ。 このスレの連中がいつまで経ってもコードビハインド論争してる時点でmicrosoftのmvvm推しが大失敗なのは言うまでも無い ビヘービアなりトリガーアクションなりのアドバイスすら誰も出来ねえんだもん 終わってるよ まあ結局コードビハインドにガッツリイベントハンドラ書くのがベストって結論出てるわな どうせビジネスロジックは別クラスなんだし MVVMは結局コードが爆発的に増えて本末転倒 >>コードビハインドは使用禁止 諸悪の根元 誰が言ったか 全てはこれから始まった むしろViewがViewを開く話なんてVMがまったく預かり知らなくていいことだし、むしろ知ってはいけないことでは? WinUIですが ViewModelのプロパティの値によって表示する コントロールを切り替えるのはどうすればいいでしょうか 例えば、そのプロパティの型は列挙型とします まぁbool型でもいいですが とりあえず必要なコントロールをcollapsedで非表示にして BoolToVisibilityConverterで1つ制御? WinUI は DataTrigger ないんだっけか。 ↓こんな感じのコンバーター作るとか? public abstract class EqualsConverter<T> : IValueConverter { public EqualsConverter(T trueValue, T falseValue) { TrueThen = trueValue; FalseThen = falseValue; } public T TrueThen { get; set; } public T FalseThen { get; set; } public object Convert(object value, Type targetType, object parameter, CultureInfo culture) => object.Equals(value, parameter) ? TrueThen : FalseThen; public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => throw new NotImplementedException(); } public sealed class EqualsToVisibilityConverter : EqualsConverter<Visibility> { public EqualsToVisibilityConverter() : base(Visibility.Visible, Visibility.Collapsed) { } public EqualsToVisibilityConverter(Visibility trueValue, Visibility falseValue) : base(trueValue, falseValue) { } } 使い方: <Page.Resources> <conv:EqualsToVisibilityConverter x:Key="EqualsThenVisible" /> <conv:EqualsToVisibilityConverter x:Key="EqualsThenCollapsed" TrueThen="Collapsed" FalseThen="Visible" /> </Page.Resources> <TextBox Visibility="{Binding ControlType, Converter={StaticResource EqualsThenVisible}, ConverterParameter={x:Bind namespace:ControlType.Text}}" /> <ComboBox Visibility="{Binding ControlType, Converter={StaticResource EqualsThenVisible}, ConverterParameter={x:Bind namespace:ControlType.Select}}" /> >>399 ありがとございます ただ、単純なコントロールならいいんですが切り替えたいのが複雑なコントロールツリーなんです 要するに画面レイアウトごと切り替えるイメージです その場合はCollapsedで見えないけどメモリ上にはある?のでよくない? >>400 x:Bindだとコンバーターわざわざ作らなくていいんですね ただ、onewayとかにするとめんどくさいんですかね 後x:Bindは検証してませんがメモリリークどうこうとかあってうーん https://github.com/microsoft/microsoft-ui-xaml/issues/7282 エクスプローラみたいのを作りたいんか? ざっくりアイコンビューみたいのと詳細ビューを切り替えとか それとも違うのか? v7.0.0で、WinUICommunity Templatesがようやく使えるしろものになったかな? フレームコンテンツ作成で System.Runtime.InteropServices.COMException (0x8000FFFF): 致命的なエラーです。 (HRESULT からの例外:0x8000FFFF (E_UNEXPECTED)) が出るが、とりあえずは動かせるので進歩したようだ。 ダイアログのようにVMからVを操作したければサービスを作ってVからVMにインジェクションすれば良い 知らずにイキっている彼が惨めだ >>407 その手間が阿呆らしいと言われてる事に気づきたいものである VMとVとか中途半端な概念つくって実装破綻する阿呆 VMをなくした場合テストコードってどうするの? 書かない? 自動テストやってるプロジェクト見た事ないな。 SIerはどこもExcelでケース書いて手動でテストしてエビデンスでスクショ取ってた。 >>408 サービスは使いまわしできるから大した手間じゃない >>412 それって修正の度に過去のも含めて毎回やるの?形骸化しない? テストコードを書くことで DI や MVVM の利点が理解できたし、 テストコードを書くことでミスに気づいたりより良い実装にできたりって経験が何度もあるから、 個人的にはテスト書かないのはあり得ないな。 >>415 修正に関係した箇所しかテストしないところが殆どだよ。 個人的には自動化したほうがいいと思うけど、 低レベルなエンジニアだとテストコード自体にバグがある事も多いし、SIerのレビュアーはコードが読めない人が多いからスクショを欲しがるんだよ。 SIerのレビュアーは 受け入れテストだろうから 単体テストは受け取らないのでは? 基本UIテストが基本だろ 理屈でねじ伏せて単体テストで押し切れないかぎりは UIテストはやるっちゃやるけどわざわざスクショは取ってないな やりましたよー嘘はついてないんで信じてください、で 納品の単位がクラスや関数でない限り テストはUIテストやで 無論納品物はテストデータとUIキャプチャーみたいな このあたりもReact界隈では自動テストがちらほら見られる >>408 たしかに Dependency Inversion は一手間かかるがそれを阿呆らしいとしか感じられないのであれば残念 silverLightがポシャった時代から まじでなにも代わってない... MVVMで開発 hyperlinkをクリックしたらpopupが表示される というのはviewだけで完結するから、popupのisopenは hyperlinkのclickイベントをコードビハインドで書くべき?popupの状態を保持してなにかを動かすなどの処理はない 変な日本語だった popup.isopenは hyperlinkのclickイベント(コードビハインド)で書くべき? そんなんで悩むくらいならmvvmで書けばいいんじゃね コードビハインドにしたくなったらいつでも変えられるでしょ clickoneceで公開できないあたりがもうゴミだわなぁ https://github.com/dotnet/wpf/pull/8870 To be honest it looks like the code from WPFUI was copied without much quality control. WPFのwindows 11themeの方も大丈夫なのかね >>430 >How can it be possible that MS is investing 20 times more effort into MAUI than into WinUI3 20倍! MAUI始まったーーー! 言語能力が足りないので意味が分からない MSがMAUIをWinUI3の20倍開発してるなんてありえるんでしょうか?って意味に取れる WinUI3の開発が停滞してて開発の進まないMAUIにすら負けてるように思えると言うこと? >>434 それであってるよ WinUI3からは開発メンバー引き上げて撤退中っぽいという話 あげられてる証拠を見るとほぼ間違いなさそう 後、avalonia はItemsRepeaterが手におえなさすぎて ItemsControlに戻るってあった ItemsRepeaterはwinuiの方を参考に実装してんだろ? upstream(winuiの事?)とavalonia自身の問題で ItemsRepeaterが手におえないってよ リンク張りたいけどソースが見つからん 昨日見つけたけど見つからん MSの中でもとくに無能がUIフレームワークに関わってるんじゃないかってレベルで ずーっとgdgdなのはもはやお家芸の域だなw MS自体が出してるアプリはどのツールキットで書いてるの? VSCodeはElectron、teamsはElectron→Reactじゃなかったっけ? MS自身が主要アプリに自社フレームワーク使ってない時点でお察し MAUIも沈みゆく船かもな Azure(モバイル) - MAUI Office 365 Admin(モバイル) - MAUI Windows Terminal(Win) - Windows App SDK PowerToys(Win) - Windows App SDK Microsoftストア(Win) - UWP Visual Studio - WPF + ネイティブ?(2010年頃。最近のバージョンは不明) VSCode - Electron Office(Web) - React Office(PC・モバイル) - ReactNative Outlook(Web) - React Outlook(PC・モバイル) - ReactNative Teams(PC) - ReactNative (旧バージョンはElectron) Teams(モバイル) - ReactNative Skype(モバイル) - ReactNative Xboxアプリ(PC/Xbox) - ReactNative OneDrive(PC/Mac) - Qt ※2022年サービス終了 適当に検索して出てきたのまとめるとこんな感じ React系のガワは全部FluentUIっぽい >>442 PC版でReactNativeとしているソースを一つずつ挙げてください >MAUIも沈みゆく船かもな MAUIは最初から沈んでるやろ ちょっとずれた質問だけどFlutterよりReactNativeのほうが生き残ってるってこと? そっち方面全然知らなくて どっかで見かけたりするシェアはreact nativeよりflutterのほうが上でしょ 瞬間風速でなくてGoogleにとってflutterの戦略的メリットが無いと言う基本構造が続く限りは コスト削減の煽りでEOLのリスクがあるのです 簡単に簡素なアプリを作りたいのならばflutterみたいのは向いてないと思う 視覚的に開発中に階層が深くなる系は厳しい 階層深くなるのはプログラマの責任 ReactでもFlutterでもXAMLでも変わらん 分割考えず1ファイルに詰め込むアホの所業 ここ3,4年Flutterばっかやってるけど Flutterはもう1歩頑張ってほしいな Xamarinおばさんって誰のことかと思ったらあの人か 個人的にはFlutterが一番マルチプラットフォームとしては使いやすいが、 Android専用ならJava/Kotlinで書いた方が楽というジレンマ Java製のマルチプラットフォームソフトはどのOSでもアウェイ感が強かったよね 何故かFlutterならアウェイ感が無いと思いたい人が一部にいるw Flutterはカクカクするけど標準で部品が充実してるからモバイルのみのマルチプラットフォームですばやく仕上げたい場合に適してる MSのようにウェブもデスクトップも考慮する必要があれば断然ReactNative read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる