Windows Presentation Frameworkについて語るスレ。
前スレ
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part22
https://mevius.5ch.net/test/read.cgi/tech/1513175747/
関連スレ
Windows 10 UWPアプリ開発 Part 2
http://mevius.2ch.net/test/read.cgi/tech/1499658092/
コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/
探検
WPF(.NET4.x, .NET Core) GUIプログラミング Part23
■ このスレッドは過去ログ倉庫に格納されています
2019/05/16(木) 07:52:32.39ID:8fOYIMEO
570デフォルトの名無しさん
2019/08/24(土) 01:01:56.33ID:XU4s8+HQ Javaで構築するの止めてC#にする場合が増えてるらしい
571デフォルトの名無しさん
2019/08/24(土) 01:32:43.24ID:owWGC5JM >>570
ソースは?
ソースは?
572デフォルトの名無しさん
2019/08/24(土) 07:26:16.85ID:+PLwcW2w .cs
573デフォルトの名無しさん
2019/08/24(土) 10:39:20.73ID:hVEgod3x >>572
座布団2枚あげましょう
座布団2枚あげましょう
574デフォルトの名無しさん
2019/08/24(土) 12:01:56.85ID:2Z6Elg7N そりゃ拡張子じゃないかーい
って言うボケかと思ったのに…
って言うボケかと思ったのに…
575デフォルトの名無しさん
2019/08/24(土) 12:52:53.99ID:hVEgod3x >>574
あんたセンス無いね
あんたセンス無いね
576デフォルトの名無しさん
2019/08/24(土) 14:13:27.89ID:ppiGm2HF トンキン人さむ〜
577デフォルトの名無しさん
2019/08/24(土) 17:40:03.15ID:+T5zNNSA ぐぬぬ
578デフォルトの名無しさん
2019/08/26(月) 07:18:34.37ID:CVu8g0Lv 関西人の理想的なボケ↓
579デフォルトの名無しさん
2019/08/26(月) 08:57:33.58ID:4t0YYyeR WPFはオワコン。
580デフォルトの名無しさん
2019/08/26(月) 17:45:31.71ID:dI1F1hPt 普及させたいなら
Forms廃止して社内開発リソースをWPFに集中させるから
頑張って移行してね!
ってやればいいのに。
んでForms無くすならVB.NETも切っていいし
Forms廃止して社内開発リソースをWPFに集中させるから
頑張って移行してね!
ってやればいいのに。
んでForms無くすならVB.NETも切っていいし
581デフォルトの名無しさん
2019/08/26(月) 18:00:49.98ID:/h3P8awM >>580
それに近いことをやろうとしたのがUWP
それに近いことをやろうとしたのがUWP
582デフォルトの名無しさん
2019/08/26(月) 19:05:57.08ID:Ucxa8lVF で、その開発予算は天から降って来るのか?
583デフォルトの名無しさん
2019/08/26(月) 20:46:52.41ID:5hrkIwVX WPFは既存の技術すべて置き換えるために作られたはずだけど
実際はそこまでのスケールじゃなかった
HTML VB6 winforms MFC
全部生き残ってしまった
実際はそこまでのスケールじゃなかった
HTML VB6 winforms MFC
全部生き残ってしまった
584デフォルトの名無しさん
2019/08/26(月) 20:49:41.98ID:01TaglzE XAMLがわかりにくいから置き換わるわけがない
585デフォルトの名無しさん
2019/08/26(月) 21:12:48.53ID:FQM1aXM6 XAMLそのものはそこまでわかりにくくないだろ
ややこしいのはMVVM
ややこしいのはMVVM
586デフォルトの名無しさん
2019/08/26(月) 21:25:24.89ID:wSbsYOJ/ WPFはライブラリの出来は良かったのにGUI周りの出来が悪かったのが痛かったな。
あまりに貧相であれじゃ客が納得しない。
あまりに貧相であれじゃ客が納得しない。
587デフォルトの名無しさん
2019/08/26(月) 21:26:09.78ID:01TaglzE あなたのような優秀な方には簡単かもしれませんが、
わたしのような底辺にはわかりにくいのです
つまり広まりません
わたしのような底辺にはわかりにくいのです
つまり広まりません
588デフォルトの名無しさん
2019/08/26(月) 21:33:06.34ID:5hrkIwVX589デフォルトの名無しさん
2019/08/26(月) 22:10:15.41ID:/h3P8awM >>586
WPFのコアな部分はレガシーなウィンドウシステムを捨てて再設計するんだってそれなりに気合い入れて作られてると思う。
だけど色々出来る分複雑になってるのに、それをラップしてユーザーがお仕着せで良いから楽に使えるようにする支援ライブラリ的なものが足りな過ぎたね。
標準のコントロールもFormにあるのは一通り押さえておけば、MVVM抜きならそれなりに簡単に使えるのに。
WPFのコアな部分はレガシーなウィンドウシステムを捨てて再設計するんだってそれなりに気合い入れて作られてると思う。
だけど色々出来る分複雑になってるのに、それをラップしてユーザーがお仕着せで良いから楽に使えるようにする支援ライブラリ的なものが足りな過ぎたね。
標準のコントロールもFormにあるのは一通り押さえておけば、MVVM抜きならそれなりに簡単に使えるのに。
590デフォルトの名無しさん
2019/08/26(月) 22:12:50.23ID:ij5Jd0yF XAMLでわかりにくいならhtml&cssのデザインは地獄だろうな
XAMLがいかに親切か実感できるぞ
タグで囲むデザインはもう飽きたからもっとシンプルにしてほしいけど
JsonかYAMLで
XAMLがいかに親切か実感できるぞ
タグで囲むデザインはもう飽きたからもっとシンプルにしてほしいけど
JsonかYAMLで
591デフォルトの名無しさん
2019/08/26(月) 22:15:26.16ID:qess7VlR WPFデザインってWin7のLunaテーマのイメージ
592デフォルトの名無しさん
2019/08/26(月) 22:16:18.43ID:qess7VlR LunaじゃなくてAeroだった
593デフォルトの名無しさん
2019/08/26(月) 22:22:45.61ID:VVV12Px/594デフォルトの名無しさん
2019/08/26(月) 22:29:08.48ID:Wx9nEB+f595デフォルトの名無しさん
2019/08/26(月) 23:04:10.96ID:MCFEqLYy 一度に全部学ばないといけないからだろ。xaml,データバインディング,MVVMと。最初俺も死にかけたわ。
androidやりはじめたときはレイアウトファイルのxmlくらいだったから敷居は低かった。で、随分後にandroidもデータバインディングに標準対応して、順番にゆっくり学べるからな。
androidやりはじめたときはレイアウトファイルのxmlくらいだったから敷居は低かった。で、随分後にandroidもデータバインディングに標準対応して、順番にゆっくり学べるからな。
596デフォルトの名無しさん
2019/08/26(月) 23:17:19.25ID:MCFEqLYy かたや、WPFは一度挫折した後に作戦変えて最初はデータバインディングとかMVVMとか無視してアプリ作ってみようとしたが、ListViewとかItemsControl系はアイテムテンプレート使わねぇと仮想化できないし、
やっぱデータバインディングとかすぐに学ぶはめになったし。
やっぱデータバインディングとかすぐに学ぶはめになったし。
597デフォルトの名無しさん
2019/08/26(月) 23:27:56.52ID:GeaqRBlJ データバインディング便利でいいじゃん。
表示とロジックを分離できて見通しがいい。
表示とロジックを分離できて見通しがいい。
598デフォルトの名無しさん
2019/08/26(月) 23:32:49.32ID:CfenbB74 MVVM便利すぎてWinFormsでもMVVM使ってしまう体になってしまったよ
599デフォルトの名無しさん
2019/08/26(月) 23:37:29.50ID:Wx9nEB+f わかるわー、
MVVM慣れるとレガシーは面倒すぎる
MVVM慣れるとレガシーは面倒すぎる
600デフォルトの名無しさん
2019/08/26(月) 23:49:45.08ID:MCFEqLYy というより、MVVM学ぶ前は、ソフトウェアアーキテクチャ?みたいの意識しないで適当につくってたから今になってMVVM以外で作ろうとすると困りそう
601デフォルトの名無しさん
2019/08/26(月) 23:56:16.79ID:Wx9nEB+f あんた自分が勉強嫌いなだけじゃん
MVVM以前にもMVCやらデザインパターンやら
意識しないといけないものはいくらでもあったでしょう
MVVM以前にもMVCやらデザインパターンやら
意識しないといけないものはいくらでもあったでしょう
602デフォルトの名無しさん
2019/08/27(火) 00:37:24.80ID:7s1l/ptn じゃ、おまえVB6やWinForms自体にで何か意識して作ってた?
603デフォルトの名無しさん
2019/08/27(火) 00:38:56.97ID:7s1l/ptn VB6やwinforms時代にどんなパターン採用してたの?
604デフォルトの名無しさん
2019/08/27(火) 00:43:54.63ID:Wpw9BTQZ DOC-View も MVCもWinForm以前からあるんだが?
個人的問題ならマ板でしろや
個人的問題ならマ板でしろや
605デフォルトの名無しさん
2019/08/27(火) 00:53:36.96ID:7s1l/ptn 存在ぐらいはMVVM学んだら学ぶだろ。あほかよ。
606デフォルトの名無しさん
2019/08/27(火) 03:48:51.51ID:cPN8HTkT MVP
607デフォルトの名無しさん
2019/08/27(火) 05:34:30.66ID:3C/EiBc0 早く.NETでWin32を完全にリプレイスできるように
ならないな、はあ。
ならないな、はあ。
608デフォルトの名無しさん
2019/08/27(火) 19:04:49.63ID:bW2ePtKS 無理だろ
windowsとは何かと言えばwin32のAPI群とそれで作られたコンポーネントとサービスの塊だから
windowsとは何かと言えばwin32のAPI群とそれで作られたコンポーネントとサービスの塊だから
609デフォルトの名無しさん
2019/08/27(火) 19:28:50.81ID:NopeFxN7 MVVMのライブラリーがMSから出てない事を知って真面目に取り組むのを止めた
610デフォルトの名無しさん
2019/08/27(火) 19:46:08.12ID:4WMOl80S MSは今間違いなく迷走しているよね
BGM:バッドボーイブルース
BGM:バッドボーイブルース
611デフォルトの名無しさん
2019/08/27(火) 22:38:41.78ID:St7bRLq6612デフォルトの名無しさん
2019/08/29(木) 08:24:36.72ID:Z2N7sLLL OSS上がりはほんとテストしない。自己満足でドヤ顔で公開して放置。
613デフォルトの名無しさん
2019/08/29(木) 19:55:13.55ID:dwig1eJB 思い付いたアイディアコーティングして形になったらそれで興味は失せてしまう
品質とか興味無い
品質とか興味無い
614デフォルトの名無しさん
2019/08/30(金) 03:54:01.72ID:iF4ecVgg615デフォルトの名無しさん
2019/08/30(金) 15:32:23.77ID:ERkIjfvr >>607
もし奇跡が起きて.NET5が大成功したら、多くの.NETアプリはWebアプリとしてクラウド上のLinuxでホストされるようになり、
デスクトップのWindowsが単なるシンクライアントに成り下がる未来は来るかもしれない
万一そうなりそうだったら、MSは.NETを事実上Azureでしか使えなくするような縛りを入れてくるだろうけど
もし奇跡が起きて.NET5が大成功したら、多くの.NETアプリはWebアプリとしてクラウド上のLinuxでホストされるようになり、
デスクトップのWindowsが単なるシンクライアントに成り下がる未来は来るかもしれない
万一そうなりそうだったら、MSは.NETを事実上Azureでしか使えなくするような縛りを入れてくるだろうけど
616デフォルトの名無しさん
2019/08/30(金) 16:47:02.85ID:GA3Qy85O .NET5って、選択枝がそれだけという事だろ? 失敗なんてあるの?
617デフォルトの名無しさん
2019/08/30(金) 17:50:33.12ID:Ervdw2Vp Blazorが天下を取るのは目に見えてるからなぁ
業務系は全部これでおk
業務系は全部これでおk
618デフォルトの名無しさん
2019/08/30(金) 18:17:06.08ID:ERkIjfvr >>616
.NET5が普及することが必ずしも.NET5の成功を意味するとは限らない
みんながVSCodeやRiderでC#を書いて、AWS上のLinuxサーバーで運用するようになったら、MSから見れば大失敗だ
そうなれば当然MSは.NET5を放棄することになるだろう
MSにとって利益になる形での普及が成功の条件となると、なかなか難しいよ
.NET5が普及することが必ずしも.NET5の成功を意味するとは限らない
みんながVSCodeやRiderでC#を書いて、AWS上のLinuxサーバーで運用するようになったら、MSから見れば大失敗だ
そうなれば当然MSは.NET5を放棄することになるだろう
MSにとって利益になる形での普及が成功の条件となると、なかなか難しいよ
619デフォルトの名無しさん
2019/08/30(金) 22:01:53.87ID:VcfE35DU 放棄ってどうするのさ
態々くっつけたのをまた分割するのか?
態々くっつけたのをまた分割するのか?
620デフォルトの名無しさん
2019/08/30(金) 23:03:11.02ID:uONjY6PZ >.NET5が普及することが必ずしも.NET5の成功を意味するとは限らない
.NET5の成功だろ
言いたいのはMSの成功を意味するとは限らないだろ
.NET5の成功だろ
言いたいのはMSの成功を意味するとは限らないだろ
621デフォルトの名無しさん
2019/08/30(金) 23:15:11.32ID:daE1ezev OSSとはいえ特許があるから、MSが.NET Foundationから手を引いたら現実には開発の継続は不可能だよ
もちろん、MSは当然そんな最悪の結果にならないように技術面や政治面でコントロールするだろう
仮にそのコントロールが普及を妨げる性質のものであったとしてもね
もちろん、MSは当然そんな最悪の結果にならないように技術面や政治面でコントロールするだろう
仮にそのコントロールが普及を妨げる性質のものであったとしてもね
622デフォルトの名無しさん
2019/08/31(土) 00:01:51.67ID:8S6g8PTE >>614
アプリケーションフレームワークとツールの類を同列に語っても意味無い
アプリケーションフレームワークとツールの類を同列に語っても意味無い
623デフォルトの名無しさん
2019/08/31(土) 00:21:51.42ID:zHC92gqD >>621
ちょっと何言ってるかよくわからない
ちょっと何言ってるかよくわからない
624デフォルトの名無しさん
2019/08/31(土) 00:39:06.27ID:jKcP7puA >>614
GitHubはただ買収しただけだし
そもそもgitはライナスの作ったものだし…
vscodeはGitHubがatomエディタ作るために作ったエレクトロンに乗っかってるだけだし
MSはあまり貢献してない
GitHubはただ買収しただけだし
そもそもgitはライナスの作ったものだし…
vscodeはGitHubがatomエディタ作るために作ったエレクトロンに乗っかってるだけだし
MSはあまり貢献してない
625デフォルトの名無しさん
2019/08/31(土) 00:59:08.53ID:AytMhKL2 >>624
AtomとVSCodeじゃElectron部分以外ソースほぼ別物だしMSはあまり貢献してないって暴論すぎる
AtomとVSCodeじゃElectron部分以外ソースほぼ別物だしMSはあまり貢献してないって暴論すぎる
626デフォルトの名無しさん
2019/08/31(土) 01:12:59.59ID:UM0UH3ls GitHubのプライベート数無制限もMSマネー後だしな
評価すべきところはちゃんとしなきゃね
とはいえモダンなGUIに追従できるポジションのフレームワークが
悉く壊滅し続けている惨状を埋め合わせるものではない、というか関係ない
評価すべきところはちゃんとしなきゃね
とはいえモダンなGUIに追従できるポジションのフレームワークが
悉く壊滅し続けている惨状を埋め合わせるものではない、というか関係ない
627デフォルトの名無しさん
2019/08/31(土) 06:44:41.35ID:+09iQaTY モダンすぎるBlazor大成功確実
628デフォルトの名無しさん
2019/08/31(土) 08:19:57.96ID:BTqmdo6K blazorってviewあたりはどうなってる?reactととかならmaterialやら色んなデザインのが今や豊富にあるけど。
629デフォルトの名無しさん
2019/08/31(土) 08:32:47.45ID:BTqmdo6K dartとflutterはhammingbirdでwebのフロントエンドに進出だし、desktop embeddingでデスクトップも。dartは現状クソだからmicrosoftさんには頑張ってもらいたい
630デフォルトの名無しさん
2019/08/31(土) 09:29:29.38ID:DOQSWUJb blazor触ったこと無いんだけどwebアプリってことはローカルファイルの操作とかは難しかったりすんの?
開発補助ツールとか作ったりすんだけど、そういうのはやっぱデスクトップアプリのほうが向いてるよね?
そういうのもblazorでできるならちょっと触ってみようかなって思うんだけど
開発補助ツールとか作ったりすんだけど、そういうのはやっぱデスクトップアプリのほうが向いてるよね?
そういうのもblazorでできるならちょっと触ってみようかなって思うんだけど
631デフォルトの名無しさん
2019/08/31(土) 10:15:11.61ID:AytMhKL2632デフォルトの名無しさん
2019/08/31(土) 10:27:14.18ID:OiY9nyzL 今はviewはRazorのままだな。WPFをcanvasとwebglでエミュレートするとかできたらいいのに。
633デフォルトの名無しさん
2019/08/31(土) 18:02:22.42ID:Yn5v13ie BlazorっていえばWebAssemblyだと思い込んでたけどサーバーサイドがあるのか
やば、乗り遅れてるわ
https://blog.okazuki.jp/entry/2019/06/11/135621
やば、乗り遅れてるわ
https://blog.okazuki.jp/entry/2019/06/11/135621
634デフォルトの名無しさん
2019/09/05(木) 06:45:37.44ID:Sa2Ng6Af 祝WinUI 2.2
TabView!!
TabView!!
635デフォルトの名無しさん
2019/09/10(火) 23:16:19.51ID:wxmv+p95 WPF+XamlIslandでUWPのコントロールを使うとき
スタイルをどうやって設定するかご存じの方いますか?
WPFプロジェクトだとUWPのXAML書けないです…
スタイルをどうやって設定するかご存じの方いますか?
WPFプロジェクトだとUWPのXAML書けないです…
636デフォルトの名無しさん
2019/09/19(木) 23:16:30.45ID:o/5TVM4E ちょっと古い質問かもしれないんですが、WPFのプロジェクトを新規作成して Prism.WPF、Prism.Core、Prism.Unityをヌゲットで適用したんだけど Microsoft.Expressions.Interaction が参照に入らないのです
やりたいことは Xaml で ei:PropertyChangedActtion を使って View の Xaml だけで他のコントロールのプロパティを変えたい(ElementNameとTargetPropatyとかでできた記憶があります)だけなんですが、これはどこにいったんでしょうか。
やりたいことは Xaml で ei:PropertyChangedActtion を使って View の Xaml だけで他のコントロールのプロパティを変えたい(ElementNameとTargetPropatyとかでできた記憶があります)だけなんですが、これはどこにいったんでしょうか。
637デフォルトの名無しさん
2019/09/19(木) 23:20:27.73ID:o/5TVM4E 補足です。当時はヌゲットがなかったから Expression.Blend とかをインストールして参照設定の拡張アセンブリから選んで使ってたと思います
638デフォルトの名無しさん
2019/09/20(金) 01:12:36.63ID:HDCFOJen >>636
Blend SDKは廃止?方向みたいで、Xaml Behaviors for WPFがそれの代わり。
そのパッケージをnugetで追加して、xmlns:i=〜やxmlns:ei:=〜ってあった所は、
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"に直せば前と同じに使える。
Blend SDKは廃止?方向みたいで、Xaml Behaviors for WPFがそれの代わり。
そのパッケージをnugetで追加して、xmlns:i=〜やxmlns:ei:=〜ってあった所は、
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"に直せば前と同じに使える。
639デフォルトの名無しさん
2019/09/22(日) 22:53:58.06ID:4iZ0rcTF640デフォルトの名無しさん
2019/09/26(木) 17:08:59.96ID:RqohR87j MediaElementなどを実装したUserControlを
MainWindowでItemsContrlを使用し複数表示しました。
その中の1つが選択されたときWindowいっぱいに広げたいのですがどうすればできますか?
ViewModel側で選択されたUserControlは取得できています。
MainWindowでItemsContrlを使用し複数表示しました。
その中の1つが選択されたときWindowいっぱいに広げたいのですがどうすればできますか?
ViewModel側で選択されたUserControlは取得できています。
641デフォルトの名無しさん
2019/09/27(金) 00:31:03.92ID:zANlzt+z >>640
UserControl(View)をViewModelから参照するのはMVVMに反してるからオススメしない。
ItemsControのSelectedItemプロパティと選択中のViewModelとがバインディングできてるなら、
選択後にViewModelで全画面表示用のプロパティに値を設定すれば良い。
そのプロパティ値が変化したときにどうやってUserControlを全画面表示するかは、純粋にView(XAML)の問題だ。
UserControl(View)をViewModelから参照するのはMVVMに反してるからオススメしない。
ItemsControのSelectedItemプロパティと選択中のViewModelとがバインディングできてるなら、
選択後にViewModelで全画面表示用のプロパティに値を設定すれば良い。
そのプロパティ値が変化したときにどうやってUserControlを全画面表示するかは、純粋にView(XAML)の問題だ。
642デフォルトの名無しさん
2019/09/27(金) 12:08:12.14ID:u+iGcBJm >>641
やはりViewModelでUserControlを参照するのはマズいですよね。
プレイヤなので再生中の状態がそのままコピーされるとよいのですが。
全画面用のUserControlにどのプロパティを設ければよいでしょうか?
動画パスや再生時間を渡して読込からやらせるしかないですかね?
やはりViewModelでUserControlを参照するのはマズいですよね。
プレイヤなので再生中の状態がそのままコピーされるとよいのですが。
全画面用のUserControlにどのプロパティを設ければよいでしょうか?
動画パスや再生時間を渡して読込からやらせるしかないですかね?
643デフォルトの名無しさん
2019/09/27(金) 23:54:36.27ID:fjlgNlFb ItemsControl上でも再生とか停止ができて、選択したらWindowいっぱいにしたい感じ??
644デフォルトの名無しさん
2019/09/28(土) 06:32:34.96ID:yTyvrKRv645デフォルトの名無しさん
2019/09/28(土) 14:31:06.45ID:7KAMFGQE 拡大されてるムービーがどれかっていうのが、アプリのロジックに関係ないならクリックのイベントハンドラで書くのでいいんじゃないかな
ItemsControlから画面いっぱいにひろげる方法は知らないんだけど、そういうパネル作るののかな?
ItemsControlから画面いっぱいにひろげる方法は知らないんだけど、そういうパネル作るののかな?
646デフォルトの名無しさん
2019/09/28(土) 18:40:27.12ID:OEfKx/qL647デフォルトの名無しさん
2019/09/28(土) 20:52:31.51ID:XPio18TJ PrismでRegion使えばチョチョっとできないかね
648デフォルトの名無しさん
2019/09/28(土) 22:58:14.58ID:RkNENkKq 再生中の動画が流れたままシームレスにWindow全体に表示というのは厄介そう
649デフォルトの名無しさん
2019/09/28(土) 23:32:48.35ID:dmYXSMEs UWPならMediaElementにIsFullWindowってプロパティーがあって問答無用でフルスクリーン表示にできる
あと、ConectedAnimationつかえるんだがな
あと、ConectedAnimationつかえるんだがな
650デフォルトの名無しさん
2019/09/29(日) 00:34:01.71ID:sW5PihO+ XAML Islandで解決じゃん
651デフォルトの名無しさん
2019/09/30(月) 09:25:36.75ID:EF3Cb7k3652デフォルトの名無しさん
2019/10/01(火) 00:37:23.82ID:YMHfANdP おー上手くいったかどうか教えてくれると嬉しいな
653デフォルトの名無しさん
2019/10/01(火) 08:56:41.44ID:58CauEY5 UWPのはウィンドウいっぱいというより、全画面表示だけど大丈夫かな?
654デフォルトの名無しさん
2019/10/02(水) 21:41:52.01ID:akptwudD >>653
やはりそうなの?
調べたらそれっぽいこと書いてあった
Microsoft.Toolkit.Wpf.UI.ControlsのMediaPlayerElementを使ってみたのだが
Sourceにバインドしても再生されない
Xamlに直接書くと再生されるのだが…
やはりそうなの?
調べたらそれっぽいこと書いてあった
Microsoft.Toolkit.Wpf.UI.ControlsのMediaPlayerElementを使ってみたのだが
Sourceにバインドしても再生されない
Xamlに直接書くと再生されるのだが…
655デフォルトの名無しさん
2019/10/09(水) 14:09:07.32ID:0y9ABYBv .Net Core 3.0のWPFのユーザーコントロールのデータバインディングに関して質問なんですが、
MainWindow.xaml.csのコンストラクタ内でPrice=1000と代入しているのですが
TextBoxのText(Value)の値が0から変化しないのですが、どこが間違っているのかわかる方いますか?
テキストボックス内にカーソルを合わせて上下キーを押すと1ずつ増える/減るの動作は正しく動いているようです。
DecimalBox.xaml
<UserControl x:Class="test.DecimalBox" ...>
<TextBox Text="{Binding Value}" PreviewKeyDown="TextBox_PreviewKeyDown"/>
</UserControl>
DecimalBox.xaml.cs
namespace test
{
/// <summary>
/// DecimalBox.xaml の相互作用ロジック
/// </summary>
public partial class DecimalBox : UserControl
{
public DecimalBox()
{
InitializeComponent();
DataContext = this;
}
public decimal Value { get { return (decimal)GetValue(ValueProperty); } set { SetValue(ValueProperty, value); } }
public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(decimal), typeof(DecimalBox));
private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Up ) Value += 1;
if (e.Key == Key.Down) Value -= 1;
}
}
}
MainWindow.xaml.csのコンストラクタ内でPrice=1000と代入しているのですが
TextBoxのText(Value)の値が0から変化しないのですが、どこが間違っているのかわかる方いますか?
テキストボックス内にカーソルを合わせて上下キーを押すと1ずつ増える/減るの動作は正しく動いているようです。
DecimalBox.xaml
<UserControl x:Class="test.DecimalBox" ...>
<TextBox Text="{Binding Value}" PreviewKeyDown="TextBox_PreviewKeyDown"/>
</UserControl>
DecimalBox.xaml.cs
namespace test
{
/// <summary>
/// DecimalBox.xaml の相互作用ロジック
/// </summary>
public partial class DecimalBox : UserControl
{
public DecimalBox()
{
InitializeComponent();
DataContext = this;
}
public decimal Value { get { return (decimal)GetValue(ValueProperty); } set { SetValue(ValueProperty, value); } }
public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(decimal), typeof(DecimalBox));
private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Up ) Value += 1;
if (e.Key == Key.Down) Value -= 1;
}
}
}
656デフォルトの名無しさん
2019/10/09(水) 14:09:33.92ID:0y9ABYBv MainWindow.xaml
<local:DecimalBox Value="{Binding Price}"/>
MainWindow.xaml.cs
namespace test
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window, INotifyPropertyChanged
{
public MainWindow()
{
InitializeComponent();
DataContext = this;
Price = 1000;
}
public decimal Price
{
get { return price; }
set { price = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("PriceData")); }
}
public event PropertyChangedEventHandler PropertyChanged;
}
}
<local:DecimalBox Value="{Binding Price}"/>
MainWindow.xaml.cs
namespace test
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window, INotifyPropertyChanged
{
public MainWindow()
{
InitializeComponent();
DataContext = this;
Price = 1000;
}
public decimal Price
{
get { return price; }
set { price = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("PriceData")); }
}
public event PropertyChangedEventHandler PropertyChanged;
}
}
657デフォルトの名無しさん
2019/10/09(水) 14:19:23.75ID:0y9ABYBv 以下の部分コピペミスです
set { price = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("PriceData")); }
正しくはこうなってます
set { price = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Price")); }
set { price = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("PriceData")); }
正しくはこうなってます
set { price = value; PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Price")); }
658デフォルトの名無しさん
2019/10/09(水) 14:36:41.74ID:0y9ABYBv ちなみに、以下の部分を
MainWindow.xaml
<local:DecimalBox Value="{Binding Price}"/>
以下のようにするとTextBoxの値は1000になります
MainWindow.xaml
<local:DecimalBox Value="1000"/>
MainWindow.xaml
<local:DecimalBox Value="{Binding Price}"/>
以下のようにするとTextBoxの値は1000になります
MainWindow.xaml
<local:DecimalBox Value="1000"/>
659デフォルトの名無しさん
2019/10/09(水) 15:38:14.92ID:zdauYmXS <local:DecimalBox Value="{Binding Price}"/>においてデータコンテキストは
DecimalBoxのコンストラクタで設定されてるDecimalBox自身
DecimalBoxにPriceなんてプロパティは無いのでバインディングに失敗する
ユーザコントロール自身ではなく、その直下にGridとかのパネル置いてそれのDataContextに設定するようにする
DecimalBoxのコンストラクタで設定されてるDecimalBox自身
DecimalBoxにPriceなんてプロパティは無いのでバインディングに失敗する
ユーザコントロール自身ではなく、その直下にGridとかのパネル置いてそれのDataContextに設定するようにする
660デフォルトの名無しさん
2019/10/09(水) 16:14:04.43ID:0y9ABYBv >>659
以下に変更したら動作しました。ありがとうございます。
cs側
public DecimalBox()
{
InitializeComponent();
textbox.DataContext = this;
}
xaml側
<TextBox x:Name="textbox" Text="{Binding Value}" PreviewKeyDown="TextBox_PreviewKeyDown"/>
もう一つ質問なのですが、
DataContextの設定を今はcs側でやっていますが、
これをxaml側で行うことって可能なのでしょうか?
以下に変更したら動作しました。ありがとうございます。
cs側
public DecimalBox()
{
InitializeComponent();
textbox.DataContext = this;
}
xaml側
<TextBox x:Name="textbox" Text="{Binding Value}" PreviewKeyDown="TextBox_PreviewKeyDown"/>
もう一つ質問なのですが、
DataContextの設定を今はcs側でやっていますが、
これをxaml側で行うことって可能なのでしょうか?
661デフォルトの名無しさん
2019/10/09(水) 16:24:35.37ID:0y9ABYBv >>660
自己解決しました
RelativeSource FindAncestorでUserControlまで遡ればよかったみたいです。
<TextBox DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}}" Text="{Binding Value}" PreviewKeyDown="TextBox_PreviewKeyDown"/>
自己解決しました
RelativeSource FindAncestorでUserControlまで遡ればよかったみたいです。
<TextBox DataContext="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}}" Text="{Binding Value}" PreviewKeyDown="TextBox_PreviewKeyDown"/>
662デフォルトの名無しさん
2019/10/09(水) 19:13:21.44ID:Ce1FE6BG663デフォルトの名無しさん
2019/10/09(水) 19:46:19.00ID:yz69DB70 Binding失敗してるとデバッグログとかにメッセージ出なかったっけ?
664デフォルトの名無しさん
2019/10/09(水) 19:58:14.79ID:0fRzc22C デバッグログに出るけど他にメッセージが多いと見落としがち
WPFにもx:Bind欲しい
WPFにもx:Bind欲しい
665デフォルトの名無しさん
2019/10/09(水) 22:00:06.20ID:TJpx/LrH さんざん欲しいと言われてるはずなのに追加されない
なぜだろうね
なぜだろうね
666デフォルトの名無しさん
2019/10/09(水) 22:05:55.57ID:bHkpFlre .Net5なら
667デフォルトの名無しさん
2019/10/09(水) 22:16:15.27ID:mYLA6NTy ないない
なんか勘違いしてるようだが、MSがWPFをCoreに移植したのはメンテナンスをしたくないからだよ
今後.NETランタイムがアップデートされてWPFが壊れても、Coreなら開発者は自己責任で古いランタイムをずっと使い続けることができる
なんか勘違いしてるようだが、MSがWPFをCoreに移植したのはメンテナンスをしたくないからだよ
今後.NETランタイムがアップデートされてWPFが壊れても、Coreなら開発者は自己責任で古いランタイムをずっと使い続けることができる
668デフォルトの名無しさん
2019/10/09(水) 22:27:19.81ID:E53UYuwr winformsも同じだね
669デフォルトの名無しさん
2019/10/09(水) 22:43:33.90ID:yz69DB70 WPFはオープンソース化したんで何か起きるかもしれん
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★9 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 【独占スクープ】元TOKIOの松岡昌宏がSTARTO社を“退所”へ「国分のコンプライアンス違反」問題をきっかけに決断、12月から単独で活動 [Ailuropoda melanoleuca★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 ★2 [ぐれ★]
- 高市早苗、約1ヶ月でドル円・10円円安を達成 [256556981]
- VIPでアズールレーン
- 「▇▇▇▇▇▇▇®」 ビゴーーーン
- 中国専門家の興梠一郎先生「実は中国が一番焦ってるのが総領事の暴言だ。中国は今かなり追い詰められている」 [904151406]
- 【悲報】グーグル、すべてを過去にするジェミニ3発表で株価最高値へ [733893279]
- するってぇと何かい?2週間前に安全を確認して輸入再開した海産物を食の安全のために輸入停止にしたってのかい?
