WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part22
■ このスレッドは過去ログ倉庫に格納されています
Windows Presentation Frameworkについて語るスレ。 前スレ WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part21 http://mevius.2ch.net/test/read.cgi/tech/1494288553/ 関連スレ Windows 10 UWPアプリ開発 Part 2 http://mevius.2ch.net/test/read.cgi/tech/1499658092/ コードを貼る場合は以下のサイトの利用をお勧め。 run codeのチェックは外しておきましょう。 http://ideone.com/ 別にビューモデルにその静的プロパティ用のプロパティ追加すりゃいだけじゃん。 まぁ直接できるか聞いてるんだろうけどごめん俺の知識では... あれこれ試してたらx:Staticでやれることが分かったんで解決しました >>555-556 解決手段のひとつですね、貴重な意見ありがとうございます キタコレ! ARM64向けWindowsアプリの開発が正式サポート 〜「Visual Studio 2017」v15.9でビルド可能 “Microsoft Store”での受け付けも開始 https://forest.watch.impress.co.jp/docs/news/1153679.html WPFの場合、Windowに直接ではなく、Gridなどの下に各コントロールを入れることが多いと思うんですが コントロールのオブジェクトから親のWindowのオブジェクトを辿ろうと思ったら 地道にParent辿っていくしかないですかね? >>560 バインドされてるデータならViewmodel見ればいいし、コントロールがほしいならnameだかkeyだかを欲しいコントロールに与えればいいんでね? ここで便乗質問。 ApplicationクラスからMainWindowプロパティを辿り、MainWindowに作った ViewModelプロパティを設定する。 Frameに置いたPageとかは、Applicationクラス→MainWindowプロパティ→ViewModelプロパティで、親のViewModelを辿るソースを見るけど、やっぱりそういうもんか? 昔でいうMFCのCWinApp(CWinAppEx?)の派生をカスタマイズしインスタンスのtheAppから操作するってな思想でOKなん? 経路がややこしくなってきたらeventaggregatorで飛ばすという手抜き・・・ ある意味スタティックより悪質かもしれんが あーめんどくせー Windows Forms楽でいいわ dotnet/wpf: This repo contains Windows Presentation Foundation (WPF) for .NET Core https://github.com/dotnet/wpf > .NET Core (including the WPF repo) is licensed under the MIT license. レジストリとかWMIみたいなWindowsOS寄りの機能を使うがためにWPF採用したので、 結局coreに移行してLinuxで動きます言うても手直しは必要なんだろうな。 UWPみたいにプロセス間通信までお断りみたいな状況よりはましか DBサーバと通信できないんじゃ何も出来ないしな。。 >>568 >>433 >WinFormsとWPFがクロスプラットフォームになることのない点には注意が必要だ >>569 英語読めないの? >>566 読め。 読めないなら日本語記事見付けたから貼っとく。 WPF/WinFormsをオープンソース化 〜Microsoft、「.NET Core 3.0」Preview 1を発表 Windows デスクトップアプリも「.NET Framework」から「.NET Core」ベースへ https://forest.watch.impress.co.jp/docs/news/1156678.html >>570 >「WPF」や「WinForms」がMac/Linuxで利用できるようになるわけではないが、 WPFがクロスプラットフォームになると勘違いしてるやつがいるのか? MSの開発者はそれはありえない WPFのWはwindowsのWだからってわざわざ言ってるのに WebブラウザーがやっとEdgeになるのか 地味にうれしいかも GUIは環境ごとの差が大きすぎるから仕方ない だいたいmacやLinuxでリボンやらメトロやらをごり押しされても迷惑だろう >>568 DBはREST使う前提の設計だからなんとかなる しかしローカルサーバーとhttp通信できないのは割と困る あと、ファイルシステムが無茶苦茶遅いね >>577 マイクロソフトがARM版Chromeのコミットを頻繁に行っている ってとこからの妄想じゃないのかな WPF/WinFormsをオープンソース化 だってよ 碌にドキュメント整備せず、オープンソース化して、テスト、サポートを顧客に丸投げ。 完全に手抜き開発。MSの技術力低下しすぎ。 結局MSはWPFなりWinFormsなりをどうしたいんだよ 中途半端に生かされても困る だな。ほんとマイクロソフトはWPFとか今後どうしたいのか。 .NET Standard 2.0までは明確な目標あったけど、.NET Core 3.0以降の展望がわからん。 WPFとか囲い込み目的でWindowsべったりの実装にしたんだから、 レガシーとか言わず、もっと責任持ってメンテして欲しいよね WPFとか適当に扱った実績ができたからUWPも信用されなくなってる気がする フレームワークを建てては放置してで信用されてないのはその通りだが WPFが囲い込み目的でWindowsべったりってのは意味わからんw >>577 https://github.com/MicrosoftEdge/MSEdge/blob/master/README.md Chromiumベースのブラウザにシフトするというのが正解らしい 最もらしいこと言ってるけど、実体はもうEdgeに人手を掛けたくないんだろうな microsoftはどうせならblinkじゃなくてシェア低いfirefoxのエンジンの方を採用しろよ。これで更にblink1強感が強まると後々ヤバそう。 webkitは実質apple製品のみだから脇に置いといて。 MediaElementのメディアの時間て NaturalDurationに入ってくると思うのですが ミリ秒まで入りません。 末尾までスキップとか中途半端なのですが 何かいい方法はありますか? MSは同じような枠組みを違った環境向けに少しずつ異なる実装を バカバカ作りやがる MVVM方式で、ボタンを10個作ったら、それぞれに対応するCommandクラスを10個作らないと動かないの? senderとかで分岐しちゃダメなの? CommandParameterとかにユニーク値いれるとか CommandParameterを利用して検討してみます。 ありがとうございます。 つか、ICommandじゃなくてPrismやReactiveProperty使うのが一般的だよな 使えない現場もあるかも知れんが DelegateCommandとReactiveCommandってどっちが使いやすい? そんなに変わらん? >>600 new BusyNotifier().Select(x => !x).ToReactiveCommand().AddTo(Disposable);って生成すれば、何も考えずに二度押し防止出来るのがメリットで IDisposableの実装が必要なのがデメリット ReactiveProperty使っているならそっちで実装するから手間は変わらなくなるが >>601 なるほど二度押し防止はよく使いそう ReactiveProperty使い始めたんだが ReactiveCollectionのItem数によってReactiveCommandを許可するかってのをどう書いていいかわからん ReactiveCollectionのitem数によってtrue/falseに変化するReactivePropertyを作って そこからToReactiveCommand()でReactiveCommandを作ってやればいいはず。 ReactiveCollectionの変化を直接捕まえられたかは忘れた。 ダメだったらそのReactiveCollectionに変化を引き起こし得る操作のところで ReactivePropertyをメンテしてやる。 https://qiita.com/YSRKEN/items/5a36fb8071104a989fb8 ここ読むとReactiveProperty使っても INotifyPropertyChangedも合わせて使わないとメモリーリーク防げないと読めて ReactivePropertyを使うことに対するメリットがイマイチ理解できないのだけど、 やっぱり便利なの? >>603 そうそうこの直接捕まえることができるのか調べてもわからなかった 確かにitemsを操作するところでもいいんだけどね 手元のコード探してみたらそのまんまCollectionChangedAsObservable()でよかったみたい。 >>604 や、そうじゃなくてINotifyPropertyChangedインターフェースの実装がアレばいいってことだから prismなら従来VMを書くときと同じようにBindableBaseを継承すればいいということのようだ それを省略ならIDisposableを実装してしっかりDisposeすりゃいいってことだ >>606 ありがとう拡張メソッドでitemsの変更が拾えました CountをReactivePropertyにしてCommandのtrue/falseも変更できました パート22だけど去年はとうとう1スレも進まなかったのね デスクトップしか使わんから勉強するモチベ的につらい たまにこのスレ覗くくらいだわ 二年くらい前に既にピークアウトしたよ 天保山くらいのピークだったけど UserControlでマウスのクリックを <UserControl.InputBindings> <MouseBinding Gestus="LeftClick"・・・> のようにして取得できるんだけど <Grid VerticalAlignment="Bottom"> このGridはクリックを通したくない場合ってどうするのが正解なんでしょうか? >>616 正解かどうかは知らないけどPreview系のイベントでハンドリングして以降では処理しないようにするとかはどう? >>617 なるほどそういう方法があったか PreviewだとGridに置いたButtonとかが拾えなくなるので MouseLeftButtonDownでマスクしたところ うまくいきました さんきゅー >>618 あ、そうか。この場合は下に伝えたくないからPreviewじゃないほうか…。 うまくいって良かったよ。 2008年以降に始めたプログラマもWPF使わずwinform使ってんだろうな。 >>620 三年前にC#はじめたけどWPF使ってるよ もともとHTMLさわってたからUIがXMLで書けるのが好み >>623 それって結局、JavaScriptでプログラミングになるんじゃ? Desktop Bridgeってのを試しているんだが、sqlite.interop.dllってのが実行フォルダにコピーされないんだが 対策ありますか?手動でコピーすれば大丈夫のようだが(パッケージ化はこれから) Windowsアプリケーションパッケージングプロジェクトだつけ?それ使うといいよ >>628 残念ながら、そいつ使っているんだが上手く行っていません sqliteのパッケージはsqlite.interop.dllがx86とx64の切り替えをやっていて .netのbinフォルダでx64,x86のサブフォルダ上にインストールされるんだが、 そのフォルダが「Windowsアプリケーションパッケージングプロジェクト」のbinにコピーされません >>629 苦肉の策としてはWindowsアプリケーションパッケージプロジェクトのコンテンツとしてsqliteまわりのdllを入れておくとかかな プロジェクト内でのフォルダ構造そのままコピーされるからWPFプロジェクト名のフォルダを切って、その下にsqliteのdllを配置してほしいレイアウトで置く感じ ストアに出すならもう少し頑張らないといけないけどサイドローディングならそれだけで行けると思う WPFかあ、もはやそんなのあったなあ、って感じだな。 たぶんもう日本の業務アプリは、もはや21世紀中はWindows Formsが主流のままだよ。 事務ソフトでアニメーションなんかあっても、ウザいだけ。 >>631 べつにアニメーションがWPFの特徴なわけじゃないと思うが >>632 メトロUIという非常にユーザから嫌われたUIを使えるのが特徴だな。 >>632 でもWimdowsフォームとWPFの違いって、ユーザーから見たらアニメーションぐらいじゃね? >>633 ASP.NETも枯れてていい感じだね! でも俺は、ブラウザ アプリは遅いので好きじゃないんだ。 マルチ プラットフォーム環境の、不特定多数へのサービスならブラウザ最高! だけどね。 >>634 WPFとMetroは無関係だが なんでそんな程度の知識しかしない煽り虫がこのスレに棲息してんだ? >>636 横からだけど、Windows 8が出たときに、メトロUIのWindows Store アプリを作ることが WPFの目的だった時代があったような。。。それでみんな、ちょっとかじってやめていった。 もう6年前の話なので、あのわずかな期間を、どれほどの人が覚えているか知らないが。 4Kモニターユーザーとしては、WPFアプリは標準で高DPIに対応してるのが良い。 何もしなくてもSystem DPI Awareで、Per monitor DPI Awareにするのも簡単。 >>635 ユーザーから見たら同じとか言い出したら中身がC++でWINAPIベタ書きでもPythonかなんかでTcl/Tkで書いても全部一緒ってことになるだろうが 作り手にとって違うなら十分違うんだよ >>637 > 時代があったような ないです そんなわけのわからん記憶をどこでねつ造してきたの… WPF登場から13年。 Windows95発売からWindows7が発売されるまでが14年。 こんだけ経って普及してないんならもう普及は無理だわ。 メトロUIこそWPFの真骨頂なのに何言ってんだか。WPF開発者がそう言ってるだろ。 普及するとか普及しないとかいうより、新しいWindowsアプリなんてほとんど登場してないだけだろ。WPFとかWinFormsとかあんま関係ない。 マウス入力のUIの既存ので間に合ってて誰も新しく作らない。 マウス入力に最適化されたUIのアプリは既存のデスクトップアプリで間に合っててほとんど誰も新しく作らない。 だからWinFormsとかWPFとかそれ以前の問題。社内アプリとかでぼそぼそ作ってるところとかもあるかもしれんが。 タブレットと同じソースが使える筈だったザマリンを 自分達で潰したから普及する訳無いでしょうな >>630 WAPのバイナリに手動コピーするとしっかり配置してくれているようだから 当座はそれで凌げそうです sqliteかVSかどちらかのバグだろうから、そのうち解消されるまで待つことにします しかしWAPでX64選択しても店子のWPFプロジェクトはAnyCPUが選択されるため WAPのバイナリは32bitのwpfバイナリイメージになっていたのはびっくりしたわ (構成マネージャーで手動修正可能だが) >>644 MetroStyleしようと思ったらOSS入れないと駄目なくらいWPFでは組み込みサポートないよ Windows8ではWindows Runtime上で動くWindows Store Appが追加されてたけど、それと勘違いしてる? そうではなくてWPFとXAMLを勘違いしてるんではないですか??? あの不人気なフラットデザインをメトロって言うんだよ。 VSで言えば、VS2010から採用された悪評高いのっぺりデザイン。 windows95から24年も代わり映えのしないデザインより遥かにマシじゃね? ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる