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/ >>343
もちろんステップ数が多ければいいって訳じゃないけども、
変化があったら何か理由があって修正したはずってのを管理したいだけなのです >>355
今どきはそういうのはgitとかでやるもんじゃないの? >>351
CommunityToolkit.Mvvm(旧Microsoft.Toolkit.Mvvm)がもっと早く出ていればな
Prismは必要以上に肥大化して複雑になり過ぎた 何がしたいのかいまいちわからないけどワークスペースのライン数数えたいなら今はcloc一択じゃないかな 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歩頑張ってほしいな