X



WPF(.NET4.x, .NET Core) GUIプログラミング Part24
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ササクッテロ Spcf-v5QR)
垢版 |
2019/12/09(月) 12:36:14.49ID:9LsUsH++p
Windows Presentation Frameworkについて語るスレ。

前スレ
WPF(.NET4.x, .NET Core) GUIプログラミング Part23
https://mevius.5ch.net/test/read.cgi/tech/1557960752/

関連スレ
Windows 10 UWPアプリ開発 Part 2
http://mevius.2ch.net/test/read.cgi/tech/1499658092/

コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
0519デフォルトの名無しさん (ワッチョイ 2701-8GNv)
垢版 |
2020/09/24(木) 21:19:02.45ID:bZ1sVv660
>>518
特に大学生はスマホオンリーで、PCなんて不要
という考えが大半なんだよな。
そりゃ見るだけならいいけどよ...
0524デフォルトの名無しさん (ワッチョイ 2701-ozis)
垢版 |
2020/09/26(土) 18:07:46.78ID:AmGNamxa0
今日からWPF始めたんだが x:Name で適当に名前つければ簡単にコントロール
利用できる事を知ったんだがだけどそれでいいのん?
データバインドなんちゃら って必要なの。
0525デフォルトの名無しさん (ワッチョイ 2701-F8K1)
垢版 |
2020/09/26(土) 18:14:00.51ID:uvZwMpem0
個人のプログラムなんて動きゃいいんだよ
0527デフォルトの名無しさん (ワッチョイ 2701-ozis)
垢版 |
2020/09/26(土) 18:17:13.29ID:AmGNamxa0
>>526
なるほど。
この場合は自動実装プロパティなど不要でスッキリですな。
一応、習得しとこうかなとは思ってる。
0529デフォルトの名無しさん (ワッチョイ 2701-ozis)
垢版 |
2020/09/26(土) 21:26:12.10ID:AmGNamxa0
なるほど。

質問ばかりで申し訳ないんだが、
コントロール一つごとに
・自動実装プロパティ
・ビューモデルのクラス生成
・データコンテキストの設定
が必要であってます?
0530デフォルトの名無しさん (ワッチョイ 126a-S0Wo)
垢版 |
2020/09/26(土) 21:57:03.85ID:yhMCpvCJ0
必要ではない
複雑なことやらないならWindowクラスのViewModelに各コントロールのバインディングソースプロパティを持たせればいい
なお自動実装である必要はないよ
というかプロパティ変更をINotifyPropertyChangedで通知したいなら自動実装ではダメ
0531デフォルトの名無しさん (ドコグロ MMea-299o)
垢版 |
2020/09/27(日) 00:02:47.65ID:bYiRY3PLM
Mode=OneWayToSource以外ならgetterが必要
Mode=OneWayToSourceかTwoWayならsetterが必要

VM→Vで変更通知するにはINotifyPropertyChanged.PropertyChangedイベントを発生させる

で、getterはbacking fieldを返し、setterはbacking fieldに代入しイベント発生、というのが定石
定石過ぎてReactivePropertyとかPrismのBindingBase.SetPropertyを使うと楽できる
0533デフォルトの名無しさん (ワッチョイ 2701-ozis)
垢版 |
2020/09/27(日) 10:51:02.21ID:BlHd4Scl0
だめだ。バインドの有効利用方法がわからん。。
面倒くさい 煩雑 しか思えん。
0536デフォルトの名無しさん (ワッチョイ 6712-k2iJ)
垢版 |
2020/09/27(日) 11:59:55.26ID:fEMpkeyM0
>>535
それをやめさせるには、
コントロールに直接触るのはスレッド安全じゃないってことを解らせないとダメなんだよな...
0538デフォルトの名無しさん (ワッチョイ 7f26-b+lb)
垢版 |
2020/09/27(日) 14:10:50.15ID:3HypLccl0
MVVMバインドは確かに技術的に古く、将来はMVUに移ったほうが
記述量が減ったり、堅牢になると思う

ボタンを押したときのためにCommandを用意して呼び出すなど無駄な作業でしかない
クリックイベントでいい

VMとVを疎結合にするのはIDEの支援が限定されて生産性が落ちる
参照先にジャンプしたときにインターフェースで実装がわかりませんでは
時間がいくらあっても足りない

VMとVを別のフォルダーで管理するのも扱いづらい
最近のUIはコンポーネント化しやすくすることが必須
別のプロジェクトでも流用するとき、1つのファイルを移動させればよい状態が好ましい
いちいちVMとVのファイルを移動など面倒だ

とは言えMVUは.NET6まで待たなければならない
それまで自分はPropertyChanged.Fodyで変更通知してる。
記述量が少なく、属性主体なので影響も少ない。
ModelはJsonシリアライザーに優しくないと使い物にならない
0539デフォルトの名無しさん (ワッチョイ 2701-ozis)
垢版 |
2020/09/27(日) 14:16:53.81ID:BlHd4Scl0
ヤバイ。
意味が分からん。最近難しいな!
0540デフォルトの名無しさん (ワッチョイ 2701-ozis)
垢版 |
2020/09/27(日) 15:37:28.93ID:BlHd4Scl0
>>226
未だにSXGAなんてザラ。
WUXGAすらない。
0542デフォルトの名無しさん (ワッチョイ 175f-ozis)
垢版 |
2020/09/27(日) 18:05:15.62ID:eIKg6nYv0
MVVMでコマンドもコンバータもバリデーションルールもファイルコピーして使いまわしてるが
prismとかはその辺ぶっ潰してるからやりにくくなってるだけじゃない?
やっぱマニュアルのMVVMが最強やな
0543デフォルトの名無しさん (スププ Sd32-mh94)
垢版 |
2020/09/27(日) 19:14:42.82ID:0F2CG6otd
>>529
リストビューみたいな列挙にだけdatatemplateとバインディング使って、ただのボタンとかは全部コードビハインド+非MVVMでもいいんじゃないかと思ってる
個人とかうちわ向けのツールなら
0545デフォルトの名無しさん (アウアウクー MM87-rjEi)
垢版 |
2020/09/27(日) 19:29:24.63ID:LOFXzk7UM
>>543
理解出来てるならバインディングは一切使わなくても大丈夫だね。
最速を求めるなら使うとむしろ遅くなる。

有名どころのコントロールのソース見ても
内部はあんまりMVVMしていない。
0547デフォルトの名無しさん (スププ Sd32-mh94)
垢版 |
2020/09/27(日) 19:35:30.30ID:0F2CG6otd
>>545
まあ実際自分でやる分にはちゃんと書くようにしてるけど、winformsからwpfになって個人、内輪で便利になったのってそこくらいしかないというか
データテンプレートで綺麗でリッチな表示できるよねーっていう

winformsでもデータコンテキストはあったけど自分の周りのはforでまわしてリストにaddするような人達ばかりだったし
0548デフォルトの名無しさん (ワッチョイ 6b42-S0Wo)
垢版 |
2020/09/27(日) 20:09:31.44ID:4TLQ9mS+0
MVVMだけならReactivePropertyが一番楽ちんだな
PrismはUnityでDIしたりViewModelLocaterの機能や
EventAggregatorなどで手放せない
あと、EF使う所はBindingBaseでMVVMするな

BindingはListBoxの要素では必須だから、そこから勉強始めたら覚えやすいかも
0549デフォルトの名無しさん (アウアウクー MM87-rjEi)
垢版 |
2020/09/27(日) 20:12:24.73ID:LOFXzk7UM
>>546
たとえば1000万行のデータグリッドが必要なら、内製するし
バインディングとか使わない。
仮想化とか必須の領域だし、
細かい制御が出来ないし、
結果的に確実に遅くなる。

バインディングで出来ることは
全部コードだけで出来る。

オープンソースのコントロール読めない人なら
当然、バインディングをお勧めする。

ところでコントロールを作成するレベルの入門書は
洋書でも存在してないのではないか?

自分はMSのコントロールのソースと
インフラロジスティクのソースを解析して覚えた。

で、取り纏めて書籍化を考えたが
確実に売れないのでヤメたがかなり昔のはなし。
0550デフォルトの名無しさん (ワッチョイ 2701-ozis)
垢版 |
2020/09/27(日) 21:32:28.68ID:BlHd4Scl0
>>549
売れないことないんじゃない?
VC++でカスタムドローとかオーナードロー
の資料がなくて苦労したわ。
comも。
0551◆QZaw55cn4c (ワッチョイ 1ee9-NJjK)
垢版 |
2020/09/27(日) 21:39:03.46ID:OZSlZqU50
>>549
>コントロールを作成するレベルの入門書は
>洋書でも存在してないのではないか?

ずっと探していたんですけれど、やっぱりないんですね…

>取り纏めて書籍化を考えたが
>確実に売れないのでヤメたがかなり昔のはなし。

kindle 化して、とりあえず様子をみる、というのはいかがですか?
私なら(印税50% の kindle 出版に対して)10000円で買うつもりです
0556デフォルトの名無しさん (ワッチョイ e39e-b+lb)
垢版 |
2020/09/27(日) 23:39:24.89ID:co99WLAO0
わざわざコントロールで作るってことは
頬杖ついてマウスでペタペタ貼るだけで再利用できるようにするってことだよ。
コード上でnewして再利用できるだけでいいクラスライブラリとは違う。
0557デフォルトの名無しさん (ワッチョイ 4b2c-ozis)
垢版 |
2020/09/28(月) 00:04:13.06ID:QIpyCS2B0
かんたん Visual C++[改訂2版]、堀義博、2017

VC++の使い方と、画面の作り方、
DDX(Dialog Data Exchange) の仕組み、
MFCの、AFX_MSGMAP, DECLARE_MESSAGE_MAP()など

MFC には、色々なコントロールの基本クラスがある。
それを使えばよい

ただし、VS のGUI デザイナーが、それに対応しているかどうかは知らないけど。
それに対応するには、VS でのプラグインの作り方を学ぶ必要がある
0564デフォルトの名無しさん (ワッチョイ 2701-ozis)
垢版 |
2020/09/29(火) 19:45:21.34ID:Y1CZVJSu0
みなさんスーパーハカーですね!
0567デフォルトの名無しさん (ワッチョイ 175f-ozis)
垢版 |
2020/09/29(火) 20:54:02.93ID:ZYb8dqzc0
コードビハインドを徹底的に避けようとするのって病的だなと思うようになった
コードビハインドにあるべきコードはコードビハインドにあっていい
0569デフォルトの名無しさん (ワッチョイ 5342-2+Dn)
垢版 |
2020/09/30(水) 18:45:23.92ID:VC7cxOmi0
>>566
ScrollIntoViewを呼び出すのに便利だから作ったけど、ビヘイビアで実装し直した
動くけどしっくり来ないんだよな
同じアイテムを連続で動かしたい時、一度Null入れないとダメな所が
0571デフォルトの名無しさん (アウアウエー Sadf-G8Sl)
垢版 |
2020/09/30(水) 20:47:28.67ID:L6wzWJW+a
https://devblogs.microsoft.com/dotnet/repo-experience-survey-results/

WPF was the main outlier for satisfaction.
Drilling into the comments, the main concern was that PRs and issues were not being addressed by the maintainers and there was a lack of clarity on if and when they would be.
Internally the WPF team was not sufficiently staffed and did not have the test infrastructure in place to be able to respond to the community contributions.
0573デフォルトの名無しさん (ワッチョイ 6f26-Kk5w)
垢版 |
2020/10/05(月) 18:50:57.69ID:g9HCYiH10
こんなんだったはず

〜MyStyleLib.dll〜
〜MyButton.xaml〜
<Style
x:Key="KeyMyButton"
TargetType="{x:Type Button}"
BasedOn="{StaticResource {x:Type Button}}"
>
<Setter Property="Background" Value="Blue" />
</Style>

〜使う側〜
<ResourceDictionary Source="pack://application:,,,/MyStyleLib;component/MyButton.xaml" />

<Button Style="{StaticResource KeyMyButton}">
BUTTON
</Button>
0574デフォルトの名無しさん (ワッチョイ f312-yhTZ)
垢版 |
2020/10/10(土) 23:38:21.46ID:YXN1Ol2Y0
入社して数年間ほぼWPFだけ使ってきて、今月初めてFormsをまともに触ったが、
DataGridViewのbindingクソ過ぎwww
セルに表示する値のプロパティ名を文字列で指定できるだけで、
背景色すらbingindで表現できないとか、マジで終わってる( ̄▽ ̄)
0575デフォルトの名無しさん (ワッチョイ 635f-JAxH)
垢版 |
2020/10/11(日) 07:17:34.12ID:kKzgRzeu0
Formsの仕事が回ってくるようになった会社は潰れる一歩手前
0578デフォルトの名無しさん (ワッチョイ ea47-YQ4O)
垢版 |
2020/10/11(日) 09:54:39.61ID:kZXFoyze0
>>575
0581デフォルトの名無しさん (ワッチョイ 635f-JAxH)
垢版 |
2020/10/11(日) 16:30:13.75ID:kKzgRzeu0
>>579
WinUIはWPFに代わるものではなく、WPFなどで使うものなのだが
0583デフォルトの名無しさん (ワッチョイ c642-KV+F)
垢版 |
2020/10/11(日) 16:38:00.50ID:Oc3P171P0
>>581
2.0まではXaml Islandで使うものだったが、3からはWPFと同格のGUIツールキットになるんだよ
UWPと同じ画面だが、.net frameworkのライブラリもP/Invokeさえ使えるプログラムが実現できる
0585デフォルトの名無しさん (ワッチョイ 635f-JAxH)
垢版 |
2020/10/11(日) 17:20:29.83ID:kKzgRzeu0
>>583
よく調べてくれ
0586デフォルトの名無しさん (ワッチョイ 0742-KV+F)
垢版 |
2020/10/11(日) 17:51:56.66ID:Fd7KLviX0
>>585
https://docs.microsoft.com/ja-jp/windows/apps/winui/
現行じゃなくてWinUI3は2021年にリリースされる新バージョンで
ツールキットがUWPから切り離されてWin32から直接呼び出せる代物になります

つか、プレビュー出ているが、UWPの画面出しながらWin32のシステムコールできることは確認した
0587デフォルトの名無しさん (ラクッペペ MMe6-E8a6)
垢版 |
2020/10/21(水) 14:57:47.86ID:tiqsU3pvM
.NET CoreってXPでも動きマスカ
0592デフォルトの名無しさん (ワッチョイ 8242-gGz3)
垢版 |
2020/10/22(木) 10:52:16.48ID:Qr2lkL8E0
>>589はWin32環境からシームレスにUWPのAPIも同時に使えるだけだから失敗する要素はない
プレゼンテーション層にUWPのガワが使えるWinUI3にしても、WPFから大きく変わるわけでもないから
WPF使いなら何も問題なく使いこなせるし、新機能のx:Bindや新しいコントロールは魅力的だ
0597デフォルトの名無しさん (ワッチョイ 13ad-hJ+A)
垢版 |
2020/10/28(水) 03:57:56.89ID:AQjDAF040
チームのスキル具合にもよるけど、リプレースならwinformでもWPFでも工数は変わらんと思うがなぁ

WPFに置き換えるメリットは柔軟なレイアウトがやりやすくなるくらいだから、
多言語化したいとか見た目をモダンにしたいとかの要求がないと苦しいね
0602デフォルトの名無しさん (ワッチョイ a95f-G7xE)
垢版 |
2020/10/28(水) 13:42:11.67ID:hMYVwwX80
いつまでもWinFormsに閉じ込められてる人たち可哀想
0606デフォルトの名無しさん (ワッチョイ a95f-G7xE)
垢版 |
2020/10/30(金) 13:42:05.71ID:PJrAynTo0
ワイが客ならボケてるだけで作り直す金取られたら詐欺だって騒ぎ出すけどな
0612デフォルトの名無しさん (ワッチョイ a95f-pubH)
垢版 |
2020/10/31(土) 12:14:12.88ID:MBbWn8zr0
WinFormsって海外でほとんど使われてないんだよな
もう廃止でいいと思うわ
日本では勘違いしてあれに触り始めてしまう初心者も多そうだし
■ このスレッドは過去ログ倉庫に格納されています

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