X



WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part22
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
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/
0534デフォルトの名無しさん
垢版 |
2018/11/09(金) 02:34:21.24ID:jgq67h0m
WPF重いってきくけどWPFアプリに必要なのはむしろx:bindよりUWPみたいな.netネイティブ化?
0535デフォルトの名無しさん
垢版 |
2018/11/09(金) 02:41:03.50ID:DHGOZxva
>>528
そう言うGUI的な部分はあんまり変わらない。
>>519 で書いた通り、ライフサイクルとファイルアクセスがスマホやタブレットと同じになった。
づまりアクティブアプリじゃ無くなるとスリープに入ったり、アプリ沢山立ち上げると古い順に勝手に終了する。
ファイルアクセスもユーザーに許可を求めておkされた場所しかアクセスできない。
(ストアにアップする時画像を扱いたいのに、間違えて許可取らなかったらアップし直し)
0536デフォルトの名無しさん
垢版 |
2018/11/09(金) 02:45:09.60ID:DHGOZxva
>>534
.netでネイティブよりセキュリティ安全って立場だから無理。
UWPはアクセス権限が厳しいのと、ストアでバイトコードをコンパイルする事で多様なプラットフォームに対応出来るからネイティブに出来た。
(多様なプラットフォームなんて無いに等しいんだが)
0537デフォルトの名無しさん
垢版 |
2018/11/09(金) 09:59:39.60ID:iAKiGud6
みんなレスサンクス

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

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

みんなの話をまとめるとUWPってターゲットOSもwindows10のみでWPFより狭くなりブラウザでも使えなくて制限も増えて、速度だけWPFより早くなっただけのプラットフォームってこと?
0538デフォルトの名無しさん
垢版 |
2018/11/09(金) 11:18:55.47ID:DHGOZxva
うい。
だから開発者もアプリも増えない。
0540デフォルトの名無しさん
垢版 |
2018/11/09(金) 12:12:09.53ID:BWkoEqkQ
ストアアプリ(WinRT)はペゾルトもリッチャーも本出してたべ
スルーされてたのはWPFの方
0542デフォルトの名無しさん
垢版 |
2018/11/09(金) 16:10:12.28ID:c5V7xI9P
チャールズ・ペトゾルドって初めて知ったけど
かなり年いってるな
今も現役なんだろうか
0554デフォルトの名無しさん
垢版 |
2018/11/15(木) 16:35:15.67ID:LcbLzkrL
同じアセンブリ内にある自作クラスの静的プロパティを
フォームのXAMLでコントロールのプロパティにバインドするってできる?
0555デフォルトの名無しさん
垢版 |
2018/11/15(木) 21:27:25.35ID:S1LbTlOB
別にビューモデルにその静的プロパティ用のプロパティ追加すりゃいだけじゃん。
0557554
垢版 |
2018/11/16(金) 09:16:15.12ID:6vbXiM/2
あれこれ試してたらx:Staticでやれることが分かったんで解決しました

>>555-556
解決手段のひとつですね、貴重な意見ありがとうございます
0560デフォルトの名無しさん
垢版 |
2018/11/19(月) 13:24:55.22ID:vyUyoX80
WPFの場合、Windowに直接ではなく、Gridなどの下に各コントロールを入れることが多いと思うんですが
コントロールのオブジェクトから親のWindowのオブジェクトを辿ろうと思ったら
地道にParent辿っていくしかないですかね?
0562デフォルトの名無しさん
垢版 |
2018/11/19(月) 14:34:27.33ID:754GRGOu
>>560
バインドされてるデータならViewmodel見ればいいし、コントロールがほしいならnameだかkeyだかを欲しいコントロールに与えればいいんでね?
0563デフォルトの名無しさん
垢版 |
2018/11/19(月) 16:44:14.52ID:qTSdAWAT
ここで便乗質問。
ApplicationクラスからMainWindowプロパティを辿り、MainWindowに作った ViewModelプロパティを設定する。
Frameに置いたPageとかは、Applicationクラス→MainWindowプロパティ→ViewModelプロパティで、親のViewModelを辿るソースを見るけど、やっぱりそういうもんか?

昔でいうMFCのCWinApp(CWinAppEx?)の派生をカスタマイズしインスタンスのtheAppから操作するってな思想でOKなん?
0564デフォルトの名無しさん
垢版 |
2018/11/19(月) 18:56:38.90ID:mx1/TXEo
経路がややこしくなってきたらeventaggregatorで飛ばすという手抜き・・・
ある意味スタティックより悪質かもしれんが
0568デフォルトの名無しさん
垢版 |
2018/12/05(水) 12:30:21.92ID:OqU85fsX
レジストリとかWMIみたいなWindowsOS寄りの機能を使うがためにWPF採用したので、
結局coreに移行してLinuxで動きます言うても手直しは必要なんだろうな。

UWPみたいにプロセス間通信までお断りみたいな状況よりはましか
DBサーバと通信できないんじゃ何も出来ないしな。。
0570デフォルトの名無しさん
垢版 |
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
0573デフォルトの名無しさん
垢版 |
2018/12/05(水) 17:51:52.32ID:VydWWrQG
WPFがクロスプラットフォームになると勘違いしてるやつがいるのか?

MSの開発者はそれはありえない
WPFのWはwindowsのWだからってわざわざ言ってるのに
0578デフォルトの名無しさん
垢版 |
2018/12/05(水) 21:04:33.29ID:1v6b0DHw
GUIは環境ごとの差が大きすぎるから仕方ない
だいたいmacやLinuxでリボンやらメトロやらをごり押しされても迷惑だろう
0579デフォルトの名無しさん
垢版 |
2018/12/05(水) 21:21:47.57ID:9TXdxV+e
>>568
DBはREST使う前提の設計だからなんとかなる
しかしローカルサーバーとhttp通信できないのは割と困る
あと、ファイルシステムが無茶苦茶遅いね
0580デフォルトの名無しさん
垢版 |
2018/12/05(水) 23:24:30.53ID:4GYg5LKI
>>577
マイクロソフトがARM版Chromeのコミットを頻繁に行っている
ってとこからの妄想じゃないのかな
0585デフォルトの名無しさん
垢版 |
2018/12/06(木) 12:15:16.30ID:vZuYzNC2
碌にドキュメント整備せず、オープンソース化して、テスト、サポートを顧客に丸投げ。
完全に手抜き開発。MSの技術力低下しすぎ。
0589デフォルトの名無しさん
垢版 |
2018/12/06(木) 22:49:03.02ID:rpquktT2
だな。ほんとマイクロソフトはWPFとか今後どうしたいのか。
.NET Standard 2.0までは明確な目標あったけど、.NET Core 3.0以降の展望がわからん。
0590デフォルトの名無しさん
垢版 |
2018/12/06(木) 23:14:44.26ID:3H6i+/kK
WPFとか囲い込み目的でWindowsべったりの実装にしたんだから、
レガシーとか言わず、もっと責任持ってメンテして欲しいよね

WPFとか適当に扱った実績ができたからUWPも信用されなくなってる気がする
0591デフォルトの名無しさん
垢版 |
2018/12/07(金) 07:29:28.09ID:Ze/OE/M2
フレームワークを建てては放置してで信用されてないのはその通りだが
WPFが囲い込み目的でWindowsべったりってのは意味わからんw
0593デフォルトの名無しさん
垢版 |
2018/12/07(金) 15:44:02.77ID:tfro4nft
microsoftはどうせならblinkじゃなくてシェア低いfirefoxのエンジンの方を採用しろよ。これで更にblink1強感が強まると後々ヤバそう。
webkitは実質apple製品のみだから脇に置いといて。
0594デフォルトの名無しさん
垢版 |
2018/12/08(土) 12:18:26.34ID:IbZe6xPZ
MediaElementのメディアの時間て
NaturalDurationに入ってくると思うのですが
ミリ秒まで入りません。

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

ReactiveProperty使っているならそっちで実装するから手間は変わらなくなるが
0602デフォルトの名無しさん
垢版 |
2018/12/16(日) 12:07:17.78ID:xCeFdrTE
>>601
なるほど二度押し防止はよく使いそう

ReactiveProperty使い始めたんだが
ReactiveCollectionのItem数によってReactiveCommandを許可するかってのをどう書いていいかわからん
0603デフォルトの名無しさん
垢版 |
2018/12/16(日) 12:42:18.26ID:OmvADhcW
ReactiveCollectionのitem数によってtrue/falseに変化するReactivePropertyを作って
そこからToReactiveCommand()でReactiveCommandを作ってやればいいはず。

ReactiveCollectionの変化を直接捕まえられたかは忘れた。
ダメだったらそのReactiveCollectionに変化を引き起こし得る操作のところで
ReactivePropertyをメンテしてやる。
0605デフォルトの名無しさん
垢版 |
2018/12/16(日) 15:13:18.99ID:xCeFdrTE
>>603
そうそうこの直接捕まえることができるのか調べてもわからなかった
確かにitemsを操作するところでもいいんだけどね
0606デフォルトの名無しさん
垢版 |
2018/12/16(日) 15:27:32.73ID:OmvADhcW
手元のコード探してみたらそのまんまCollectionChangedAsObservable()でよかったみたい。
0607デフォルトの名無しさん
垢版 |
2018/12/16(日) 15:28:37.57ID:XLS84Otw
>>604
や、そうじゃなくてINotifyPropertyChangedインターフェースの実装がアレばいいってことだから
prismなら従来VMを書くときと同じようにBindableBaseを継承すればいいということのようだ
それを省略ならIDisposableを実装してしっかりDisposeすりゃいいってことだ
0608デフォルトの名無しさん
垢版 |
2018/12/16(日) 16:14:49.96ID:xCeFdrTE
>>606
ありがとう拡張メソッドでitemsの変更が拾えました
CountをReactivePropertyにしてCommandのtrue/falseも変更できました
0611デフォルトの名無しさん
垢版 |
2019/01/05(土) 21:58:36.66ID:EkbWdI3+
デスクトップしか使わんから勉強するモチベ的につらい
たまにこのスレ覗くくらいだわ
0616デフォルトの名無しさん
垢版 |
2019/01/07(月) 13:59:13.14ID:bF8HGRsU
UserControlでマウスのクリックを
<UserControl.InputBindings>
 <MouseBinding Gestus="LeftClick"・・・>
のようにして取得できるんだけど

<Grid VerticalAlignment="Bottom">
このGridはクリックを通したくない場合ってどうするのが正解なんでしょうか?
0617デフォルトの名無しさん
垢版 |
2019/01/07(月) 18:20:56.74ID:lPW7YYFc
>>616
正解かどうかは知らないけどPreview系のイベントでハンドリングして以降では処理しないようにするとかはどう?
0618デフォルトの名無しさん
垢版 |
2019/01/07(月) 19:56:36.23ID:IJfA8DXD
>>617
なるほどそういう方法があったか
PreviewだとGridに置いたButtonとかが拾えなくなるので
MouseLeftButtonDownでマスクしたところ
うまくいきました

さんきゅー
0619デフォルトの名無しさん
垢版 |
2019/01/09(水) 09:58:52.62ID:g2Kn1lba
>>618
あ、そうか。この場合は下に伝えたくないからPreviewじゃないほうか…。

うまくいって良かったよ。
0627デフォルトの名無しさん
垢版 |
2019/01/17(木) 11:09:09.99ID:HtR/KJjt
Desktop Bridgeってのを試しているんだが、sqlite.interop.dllってのが実行フォルダにコピーされないんだが
対策ありますか?手動でコピーすれば大丈夫のようだが(パッケージ化はこれから)
0628デフォルトの名無しさん
垢版 |
2019/01/18(金) 02:59:01.71ID:422ZEWaz
Windowsアプリケーションパッケージングプロジェクトだつけ?それ使うといいよ
0629デフォルトの名無しさん
垢版 |
2019/01/18(金) 09:11:09.95ID:kIKV+V7n
>>628
残念ながら、そいつ使っているんだが上手く行っていません
sqliteのパッケージはsqlite.interop.dllがx86とx64の切り替えをやっていて
.netのbinフォルダでx64,x86のサブフォルダ上にインストールされるんだが、
そのフォルダが「Windowsアプリケーションパッケージングプロジェクト」のbinにコピーされません
0630デフォルトの名無しさん
垢版 |
2019/01/18(金) 18:55:54.77ID:IdrVS7nW
>>629
苦肉の策としてはWindowsアプリケーションパッケージプロジェクトのコンテンツとしてsqliteまわりのdllを入れておくとかかな
プロジェクト内でのフォルダ構造そのままコピーされるからWPFプロジェクト名のフォルダを切って、その下にsqliteのdllを配置してほしいレイアウトで置く感じ

ストアに出すならもう少し頑張らないといけないけどサイドローディングならそれだけで行けると思う
0631デフォルトの名無しさん
垢版 |
2019/01/18(金) 22:18:19.67ID:V6j1airp
WPFかあ、もはやそんなのあったなあ、って感じだな。

たぶんもう日本の業務アプリは、もはや21世紀中はWindows Formsが主流のままだよ。

事務ソフトでアニメーションなんかあっても、ウザいだけ。
■ このスレッドは過去ログ倉庫に格納されています

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