WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part22

■ このスレッドは過去ログ倉庫に格納されています
2017/12/13(水) 23:35:47.18ID:muTUiD7C
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/
2018/10/16(火) 10:51:53.58ID:DvhiQnPF
開発スタイルが30年前に逆戻りしたWPF。骨董品を模倣した贋作とも言うべきか。
2018/10/16(火) 11:26:31.75ID:DjL9US8/
>>501
なら、最新の開発スタイルって何なん?
2018/10/16(火) 20:47:54.34ID:4qUYryqZ
30年前の開発スタイルってのも謎だな。
2018/10/16(火) 21:44:05.93ID:soy9GKs4
>>501
あー言われてみればX Windowのプログラミングに似てるかも

UI要素の汎用性がとても高くて、やれることは無限大だけど、
ちょっと便利なコンポーネント(NumericUpDownとか)がなくて
いちいち作ってかなきゃいけないとことか
2018/10/16(火) 22:18:18.06ID:ZFgHZNmT
NumericUpDown好きだなw
2018/10/16(火) 23:28:47.24ID:aJaE63SJ
業務アプリは部品貼り付けてプロパティ弄ってイベントにコード書くやり方での見積りだから、XAMLをああでもないこうでもないと時間かける暇は現場PGには無いよ。
2018/10/17(水) 00:12:54.80ID:ib1NGLuH
FormsのNumericUpDownはボタンがちっさくて使いづらい
ボタンなしならwpfでビヘイビア一回書いたら使いまわしできるだろ
2018/10/17(水) 19:35:42.05ID:QBZICbug
FormsよりWPFのほうが自作ツールでスキャフォールディングしやすい
業務系でこの差は大きい
2018/10/17(水) 20:37:50.02ID:TsE5rJty
業務系はコントロールは買うものなんですよ。
バーコードとかアナログメーターとか買ってペタペタ張るだけです。
2018/11/05(月) 02:04:01.10ID:3AzHjXAP
顧客と接するとフラットデザインの嫌われ方が異常だよな。強制しなきゃこれほど嫌われなかったのにな。

こんなものを強要したアホデザイナーは死刑で。
511デフォルトの名無しさん
垢版 |
2018/11/06(火) 15:50:22.57ID:1KwAte1P
Formsの経験はあるんだが、WPFちょこっと勉強してるがむずいな
本買わないとWEBサイトじゃ分かりやすくまとまったサイトないんかなこれ
依存関係プロパティだのルーティングイベントだの分かりにくいわ
結局何ができるんだよって感じ
2018/11/06(火) 16:42:56.68ID:Go0dGTYF
別に何とかはない。当たり前だが窓の枠を超えるモンじゃないし
2018/11/06(火) 16:59:49.18ID:Rk3/XN/Y
>>511
>依存関係プロパティだのルーティングイベントだの
判っているのに越したこと無いが、そこは最初からわからなくてもなんとかなるところですわ
xamlのGridなどのレイアウトコントロールとかprism使ったバインディング辺りから始めるといいかな
2018/11/07(水) 08:14:13.24ID:R1jebf9Z
かずきさんのblogをいちから読むのがいいと思う
515デフォルトの名無しさん
垢版 |
2018/11/08(木) 07:42:47.97ID:WYSs7UTh
WPFとUWPって何が違うの?
どっちもxamlだし
ターゲットOSが違うのは分かるが
コントロールが違うのと、WPF独特の構文や機能が使えなくなるって感じかな
2018/11/08(木) 07:43:26.95ID:bB0K2a3q
どっちも不便らしい。
517デフォルトの名無しさん
垢版 |
2018/11/08(木) 08:03:37.85ID:A+dqwsVV
どっちも死んでる
518デフォルトの名無しさん
垢版 |
2018/11/08(木) 13:04:26.52ID:+JvSilEi
>>515
まず、ブラウザ対応かどうかが違いますよね
519デフォルトの名無しさん
垢版 |
2018/11/08(木) 13:10:10.85ID:Tu3rCJEk
>>515
UWPはスマホやタブレットのバッテリー考慮したライフサイクルになってる。
自由に好きなフォルダのファイル読めない。(スマホ宜しくユーザーに許可を求める)
520デフォルトの名無しさん
垢版 |
2018/11/08(木) 13:16:48.07ID:+JvSilEi
>>511
どちらにしても、レガシーシステムを使いづづける場合のメインテナンスでなく
新たなアプリ開発となると、WinFormsのようなインターフェースは使えなくなる
ので、今後の環境に合わせたインターフェースにトライして行くしかない。

その際に、どれを選んでもWinFormsを前提にした頭があると、すべてが難しい
と感じてしまうと思う。

さらにロジックと画面の分離は、今後必須の課題。
その面では旧来のFormsで画面を含めた業務課アプリ開発の人達にとっては
乗り越えないとならない壁が幾つもあるのだと思うよ。
2018/11/08(木) 13:20:57.64ID:g1taMrfK
>>515
XAMLテクノロジーには大きく分けて2つの系統があるんだよ
一つはWPFで、これはほとんど全部C#で書かれてる
もう一つはその他(Silverlight, 昔のWindows Mobile, Windows Phone, UWP)で、C++で実装されてる
これらは共通のXAMLという言語を使っているものの、内部的には全くの別物だ
なぜ後者が生み出されて前者が見捨てられたかというと、単純にOS標準として位置付けるには重すぎたから
522デフォルトの名無しさん
垢版 |
2018/11/08(木) 13:24:31.78ID:+JvSilEi
>>511
>依存関係プロパティだのルーティングイベントだの分かりにくいわ

当初、私も悩んだ。
2018/11/08(木) 15:26:58.83ID:TTiIEwU6
UWPはMSにプッシュして貰えている
WPFはそうでもなかった
2018/11/08(木) 15:33:51.54ID:TTiIEwU6
現状Uの意味が特にないのでWPにしたらいいと思う
忌まわしいWindowsPhoneと被るけど
2018/11/08(木) 15:38:26.23ID:d71F1X2D
micorosoftが生み出したまともな技術ってdirectXとExcelVBAくらいだよなw
2018/11/08(木) 20:07:55.77ID:plYN5nix
ExcelVBAがまとも…???
2018/11/08(木) 22:12:16.48ID:LIupW5um
広く使われているからといって、マトモとイコールになる訳では無いのだ
2018/11/08(木) 22:32:11.06ID:W66WWp6O
みんなレスサンクス

WPFは重い
UWPはWindowsPhoneがこけてユニバーサルじゃない

のはわかるんだが、開発者視点でアプリ作る上で変わったことはなに?

UWPの目次見ると結構WPFと似てるんだよな

添付プロパティ、依存関係プロパティ、データバインディングにMVVMパターンと
この辺はWPFと共通か
ルーティングイベントとかリソースとかコマンドとかは軒並みなくなったのかな

俺今WPFの勉強してるんだが、WPFすっとばしてUWPの勉強した方がいいのか?
2018/11/08(木) 23:59:06.67ID:WMjLjpiF
>>528
一番助かるのがx:Bindというやつで、コンパイル時にバインドするプロパティーをチェックしてくれるからデバッグが楽になる
更にイベントハンドラーもバインド出来るからビヘビアを書く機会が格段に減った
2018/11/09(金) 00:07:09.50ID:jpBrXl2c
>>529
x:Bind、WPFでも凄く欲しい機能だけど、政治的理由で来ないだろうなぁ
2018/11/09(金) 00:12:13.49ID:Eqr6+fNZ
>>530
MSでは「レガシー」への新規投資は認められないからね
2018/11/09(金) 02:18:41.80ID:jgq67h0m
>>528
ほとんど概念的なのは共通だから好きな方からやればいい。
俺はUWPアプリ作りたかったからUWPから入ったけど。
作りたいアプリの方を先にやればいいじゃん
2018/11/09(金) 02:21:47.79ID:jgq67h0m
つか、x:bindはサンプルアプリ作って比較しても速度的なメリット全然実感できねぇw 逆にx:bindの型チェックのうるささがあれでbindingに回帰してるわ俺は。
2018/11/09(金) 02:34:21.24ID:jgq67h0m
WPF重いってきくけどWPFアプリに必要なのはむしろx:bindよりUWPみたいな.netネイティブ化?
535デフォルトの名無しさん
垢版 |
2018/11/09(金) 02:41:03.50ID:DHGOZxva
>>528
そう言うGUI的な部分はあんまり変わらない。
>>519 で書いた通り、ライフサイクルとファイルアクセスがスマホやタブレットと同じになった。
づまりアクティブアプリじゃ無くなるとスリープに入ったり、アプリ沢山立ち上げると古い順に勝手に終了する。
ファイルアクセスもユーザーに許可を求めておkされた場所しかアクセスできない。
(ストアにアップする時画像を扱いたいのに、間違えて許可取らなかったらアップし直し)
536デフォルトの名無しさん
垢版 |
2018/11/09(金) 02:45:09.60ID:DHGOZxva
>>534
.netでネイティブよりセキュリティ安全って立場だから無理。
UWPはアクセス権限が厳しいのと、ストアでバイトコードをコンパイルする事で多様なプラットフォームに対応出来るからネイティブに出来た。
(多様なプラットフォームなんて無いに等しいんだが)
537デフォルトの名無しさん
垢版 |
2018/11/09(金) 09:59:39.60ID:iAKiGud6
みんなレスサンクス

>>532
作りたいのはxamarinアプリなんだ
だからxamarin.UWPなんだが、仕事中に勉強しやすいのはWPFなんだよね
入門サイトもまとまったのが多いしサイト見てても不審がられない

>>535
デスクトップアプリでもUWPで作るとそうなっちゃうの?それってクソすぎないか?

みんなの話をまとめるとUWPってターゲットOSもwindows10のみでWPFより狭くなりブラウザでも使えなくて制限も増えて、速度だけWPFより早くなっただけのプラットフォームってこと?
538デフォルトの名無しさん
垢版 |
2018/11/09(金) 11:18:55.47ID:DHGOZxva
うい。
だから開発者もアプリも増えない。
2018/11/09(金) 11:44:32.26ID:UVm5ExGl
あのチャールズ・ペトゾルドにスルーされているぐらいの人気の高さ
2018/11/09(金) 12:12:09.53ID:BWkoEqkQ
ストアアプリ(WinRT)はペゾルトもリッチャーも本出してたべ
スルーされてたのはWPFの方
2018/11/09(金) 12:47:24.16ID:5iceHlA1
スレタイ読めんのけ?
2018/11/09(金) 16:10:12.28ID:c5V7xI9P
チャールズ・ペトゾルドって初めて知ったけど
かなり年いってるな
今も現役なんだろうか
2018/11/09(金) 19:31:20.68ID:IygeVfHs
カタカナ表記だと ペゾルド ? (アマゾン検索)
2018/11/09(金) 19:42:33.97ID:dt2W+h7o
はよCore3
2018/11/09(金) 19:50:06.02ID:b4DnLnuG
>>544
もう試した?
2018/11/10(土) 07:54:26.49ID:LCWni19a
ペゾルト本は基本
2018/11/10(土) 14:00:17.02ID:gF+s2COR
>>546
第5版ですか?
2018/11/10(土) 21:19:31.09ID:0830G2kt
>>547
Win16時代に読みました^^;
あとはSDKのサンプルくらいしか情報が無かったです。
2018/11/14(水) 20:02:14.67ID:hq2D35ya
>>537
UWPはオワコン
http://ascii.jp/elem/000/001/770/1770229/
2018/11/14(水) 21:27:35.93ID:fQ8zSnSm
WPFをDirectXからWebGLにポーティングしてBlazorでwasm化できたら最強なのにな。
2018/11/14(水) 21:34:10.25ID:RHMEiM3I
WPFはスレッド使いまくってるから無理
2018/11/14(水) 22:41:38.64ID:fQ8zSnSm
WebWorkerでいいじゃん。
2018/11/15(木) 14:35:02.50ID:NkLtui5a
Windows 10 RS5にてWPFアプリで不要なタイミングでタッチキーボードが起動してきてすぐに閉じる
https://blogs.msdn.microsoft.com/japan_platform_sdkwindows_sdk_support_team_blog/2018/11/14/touchkeyboard_doesnt_come_up_after_displaying_clipboardhistoryscreen/
2018/11/15(木) 16:35:15.67ID:LcbLzkrL
同じアセンブリ内にある自作クラスの静的プロパティを
フォームのXAMLでコントロールのプロパティにバインドするってできる?
2018/11/15(木) 21:27:25.35ID:S1LbTlOB
別にビューモデルにその静的プロパティ用のプロパティ追加すりゃいだけじゃん。
2018/11/15(木) 21:30:28.88ID:S1LbTlOB
まぁ直接できるか聞いてるんだろうけどごめん俺の知識では...
557554
垢版 |
2018/11/16(金) 09:16:15.12ID:6vbXiM/2
あれこれ試してたらx:Staticでやれることが分かったんで解決しました

>>555-556
解決手段のひとつですね、貴重な意見ありがとうございます
558114
垢版 |
2018/11/16(金) 15:40:40.78ID:00yShIqx
キタコレ!

ARM64向けWindowsアプリの開発が正式サポート 〜「Visual Studio 2017」v15.9でビルド可能
“Microsoft Store”での受け付けも開始
https://forest.watch.impress.co.jp/docs/news/1153679.html
2018/11/18(日) 06:23:13.08ID:z2PDrrQ3
いつ脱線から戻るのでしょうか。
2018/11/19(月) 13:24:55.22ID:vyUyoX80
WPFの場合、Windowに直接ではなく、Gridなどの下に各コントロールを入れることが多いと思うんですが
コントロールのオブジェクトから親のWindowのオブジェクトを辿ろうと思ったら
地道にParent辿っていくしかないですかね?
2018/11/19(月) 14:20:27.72ID:yWiDYg5q
>>560
そんなことはしない、が正解
2018/11/19(月) 14:34:27.33ID:754GRGOu
>>560
バインドされてるデータならViewmodel見ればいいし、コントロールがほしいならnameだかkeyだかを欲しいコントロールに与えればいいんでね?
2018/11/19(月) 16:44:14.52ID:qTSdAWAT
ここで便乗質問。
ApplicationクラスからMainWindowプロパティを辿り、MainWindowに作った ViewModelプロパティを設定する。
Frameに置いたPageとかは、Applicationクラス→MainWindowプロパティ→ViewModelプロパティで、親のViewModelを辿るソースを見るけど、やっぱりそういうもんか?

昔でいうMFCのCWinApp(CWinAppEx?)の派生をカスタマイズしインスタンスのtheAppから操作するってな思想でOKなん?
2018/11/19(月) 18:56:38.90ID:mx1/TXEo
経路がややこしくなってきたらeventaggregatorで飛ばすという手抜き・・・
ある意味スタティックより悪質かもしれんが
2018/11/20(火) 07:38:07.63ID:3+OLkVMn
あーめんどくせー
Windows Forms楽でいいわ
2018/12/05(水) 08:41:03.27ID:xDB6n5us
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.
2018/12/05(水) 10:00:39.21ID:jWFcc5b0
ふーん(鼻ホジ
2018/12/05(水) 12:30:21.92ID:OqU85fsX
レジストリとかWMIみたいなWindowsOS寄りの機能を使うがためにWPF採用したので、
結局coreに移行してLinuxで動きます言うても手直しは必要なんだろうな。

UWPみたいにプロセス間通信までお断りみたいな状況よりはましか
DBサーバと通信できないんじゃ何も出来ないしな。。
2018/12/05(水) 15:13:22.64ID:CqFdhYUo
>>568

>>433
>WinFormsとWPFがクロスプラットフォームになることのない点には注意が必要だ
570デフォルトの名無しさん
垢版 |
2018/12/05(水) 16:46:30.83ID:ifntcr/4
>>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
2018/12/05(水) 17:05:18.34ID:n/OP7tah
>>570
>「WPF」や「WinForms」がMac/Linuxで利用できるようになるわけではないが、
2018/12/05(水) 17:20:52.27ID:+y1T1RtZ
MSが右往左往してて笑えるw
2018/12/05(水) 17:51:52.32ID:VydWWrQG
WPFがクロスプラットフォームになると勘違いしてるやつがいるのか?

MSの開発者はそれはありえない
WPFのWはwindowsのWだからってわざわざ言ってるのに
2018/12/05(水) 17:57:35.91ID:UtUESojw
これは夢か
2018/12/05(水) 18:28:01.59ID:jDuSrQOq
WebブラウザーがやっとEdgeになるのか
地味にうれしいかも
2018/12/05(水) 18:32:24.22ID:Q3tW+xxV
>>572
どこが?
2018/12/05(水) 19:04:08.75ID:jWFcc5b0
MSはEdgeを捨てると噂を流したのは誰だ
2018/12/05(水) 21:04:33.29ID:1v6b0DHw
GUIは環境ごとの差が大きすぎるから仕方ない
だいたいmacやLinuxでリボンやらメトロやらをごり押しされても迷惑だろう
2018/12/05(水) 21:21:47.57ID:9TXdxV+e
>>568
DBはREST使う前提の設計だからなんとかなる
しかしローカルサーバーとhttp通信できないのは割と困る
あと、ファイルシステムが無茶苦茶遅いね
2018/12/05(水) 23:24:30.53ID:4GYg5LKI
>>577
マイクロソフトがARM版Chromeのコミットを頻繁に行っている
ってとこからの妄想じゃないのかな
2018/12/06(木) 08:50:55.44ID:+EVqeMBI
WPF/WinFormsをオープンソース化
だってよ
2018/12/06(木) 08:54:29.51ID:fzWl4QKW
>>581
>>566
2018/12/06(木) 09:42:32.88ID:l1gC1tkf
一日前の世界から書き込んだのかな?
2018/12/06(木) 10:11:29.42ID:ijJePQDk
一昨日から来ました
2018/12/06(木) 12:15:16.30ID:vZuYzNC2
碌にドキュメント整備せず、オープンソース化して、テスト、サポートを顧客に丸投げ。
完全に手抜き開発。MSの技術力低下しすぎ。
2018/12/06(木) 21:10:38.54ID:281fuTVP
>>581
オープンソースというゴミ箱
2018/12/06(木) 21:18:43.45ID:35IfL06C
結局MSはWPFなりWinFormsなりをどうしたいんだよ
中途半端に生かされても困る
2018/12/06(木) 21:24:18.83ID:Ub5WIo0W
Oracleとどっちがいい?
2018/12/06(木) 22:49:03.02ID:rpquktT2
だな。ほんとマイクロソフトはWPFとか今後どうしたいのか。
.NET Standard 2.0までは明確な目標あったけど、.NET Core 3.0以降の展望がわからん。
2018/12/06(木) 23:14:44.26ID:3H6i+/kK
WPFとか囲い込み目的でWindowsべったりの実装にしたんだから、
レガシーとか言わず、もっと責任持ってメンテして欲しいよね

WPFとか適当に扱った実績ができたからUWPも信用されなくなってる気がする
2018/12/07(金) 07:29:28.09ID:Ze/OE/M2
フレームワークを建てては放置してで信用されてないのはその通りだが
WPFが囲い込み目的でWindowsべったりってのは意味わからんw
2018/12/07(金) 08:20:18.82ID:6Hs26rkM
>>577
https://github.com/MicrosoftEdge/MSEdge/blob/master/README.md
Chromiumベースのブラウザにシフトするというのが正解らしい
最もらしいこと言ってるけど、実体はもうEdgeに人手を掛けたくないんだろうな
2018/12/07(金) 15:44:02.77ID:tfro4nft
microsoftはどうせならblinkじゃなくてシェア低いfirefoxのエンジンの方を採用しろよ。これで更にblink1強感が強まると後々ヤバそう。
webkitは実質apple製品のみだから脇に置いといて。
2018/12/08(土) 12:18:26.34ID:IbZe6xPZ
MediaElementのメディアの時間て
NaturalDurationに入ってくると思うのですが
ミリ秒まで入りません。

末尾までスキップとか中途半端なのですが
何かいい方法はありますか?
2018/12/11(火) 22:11:15.17ID:vQ1RsVVG
MSは同じような枠組みを違った環境向けに少しずつ異なる実装を
バカバカ作りやがる
2018/12/15(土) 14:46:30.32ID:vyzZ2t25
MVVM方式で、ボタンを10個作ったら、それぞれに対応するCommandクラスを10個作らないと動かないの?
2018/12/15(土) 17:01:22.09ID:ThUBPWMc
senderとかで分岐しちゃダメなの?
CommandParameterとかにユニーク値いれるとか
598596
垢版 |
2018/12/15(土) 17:07:04.75ID:vyzZ2t25
CommandParameterを利用して検討してみます。
ありがとうございます。
2018/12/15(土) 21:38:12.64ID:8fI0Hhzw
つか、ICommandじゃなくてPrismやReactiveProperty使うのが一般的だよな
使えない現場もあるかも知れんが
2018/12/16(日) 06:24:25.91ID:xCeFdrTE
DelegateCommandとReactiveCommandってどっちが使いやすい?
そんなに変わらん?
2018/12/16(日) 08:41:30.30ID:XLS84Otw
>>600
new BusyNotifier().Select(x => !x).ToReactiveCommand().AddTo(Disposable);って生成すれば、何も考えずに二度押し防止出来るのがメリットで
IDisposableの実装が必要なのがデメリット

ReactiveProperty使っているならそっちで実装するから手間は変わらなくなるが
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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