WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part21 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/05/09(火) 09:09:13.94ID:KhhA22kJ
Windows Presentation Frameworkについて語るスレ。

前スレ
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part20
http://echo.2ch.net/test/read.cgi/tech/1458082648/

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

コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/
2017/10/11(水) 21:19:31.21ID:o57WAIx5
>>615
10年経っでるのに枯れてないとな。
2017/10/11(水) 22:29:17.19ID:Qsqjym7k
winfromやwindows7で困ってない人を移行させるのは難しい。
それ以前に移行すると困る人が大勢いるのはMSの怠慢と言わざるをえない。
618デフォルトの名無しさん
垢版 |
2017/10/12(木) 10:14:35.23ID:EMta15tJ
アスペのすきなC#
2017/10/12(木) 10:27:32.93ID:WR+PJUQy
奴隷の好きな言語は?
2017/10/12(木) 12:10:11.06ID:knGok4Ah
Java
2017/10/12(木) 12:20:51.67ID:WR+PJUQy
Java案件には関わりとうない
622デフォルトの名無しさん
垢版 |
2017/10/12(木) 12:46:50.56ID:iASiM5mX
アスペが釣れる
2017/10/14(土) 08:02:49.68ID:tNAfEAYV
Java案件にはデスマが待っている。関わりとうない、関わりとうない♪
2017/10/15(日) 10:50:00.14ID:fX+zjWfL
>>613
それは、ある程度使えるようになってからだろ?
その前段階の覚える段階の敷居が(目標がないと)高いって意味じゃね?
2017/10/15(日) 11:14:02.79ID:+yNynBs6
>>624
prismなんかで組んでいるようだから、2,30分も有れば基本的なことは出来るよ
2017/10/16(月) 04:26:03.95ID:wsZRBdk3
xamarinがwpf/mac/gtk#にも対応するようなのでいよいよ本当に終わりですか
2017/10/16(月) 06:45:42.59ID:Q+N/9tOC
あの人達キモいからヤダ
2017/10/16(月) 09:15:22.42ID:z1iVQjyz
チンポ騎士団員は帰っていいよ
2017/11/02(木) 09:54:27.69ID:isNfJMq0
MVVMが全く理解できん
プログラミング初心者には無理な壁か…
2017/11/02(木) 10:01:40.38ID:J8+i6TGJ
>>629
先ずはビューモデルとバインドから。
イベントはベタ書きでもおっけ。
2017/11/02(木) 10:14:35.62ID:39jE09AN
個人開発の規模だと、ビューとモデルを分割する事のメリットからしてあまり感じられないだろうから無理も無い
2017/11/02(木) 10:18:50.35ID:NmY3JO0d
VとVMの切り分けはよく分かるんだけど
VMとMの切り分けがよく分からないんだよね

データがRDBにあるとして
VMでSQL書くのはMVVM的にNG?
2017/11/02(木) 10:50:49.04ID:sQ3NutSu
prism.UnityとかAutofac等のDIコンテナ使うとMVVMの理解は深まるけど
DIコンテナの理解を深めないといけないという自転車操業
2017/11/02(木) 11:08:24.23ID:jCGmdkaF
>>632
同じくVMとMの切り分けがあいまいになっている自分
RDBはビジネス要件だからどちらかというとModelとして切り離すべき
2017/11/02(木) 12:34:30.50ID:6vVGKMs0
テストコード書かないのなら分離しなくても問題ないでしょ。
2017/11/02(木) 12:50:22.73ID:3t3P1FsS
設計者俺実装者俺利用者俺の3俺構造だとMVVMの恩恵はあまりない
一応恩恵あるけどスゲー便利というほどじゃない
どちらかというとObservableCollectionやMicro-ORMの理解の方が大事だと思う
2017/11/02(木) 18:47:26.55ID:YdwoTlH6
Viewの部分入れ変えても大丈夫な程度にしておけばいいと思う。
2017/11/03(金) 09:44:58.25ID:QTbHfBOQ
WPFに何を求めるか次第じゃないの?
MVVMとしての美しさを求めるか、単にUIとしての美しさを求めるか。
オレの場合はUIの美しさしか求めないんでMVVMはどうでもええ。
2017/11/03(金) 09:52:50.24ID:9WRa7/YE
>>632,634
コンソールから使うコマンドラインアプリとして書いてみれば、何がModelなのか分かるよ
そのModelをGUIとかの特定のViewに合致させる役割がViewModel
2017/11/03(金) 09:56:57.17ID:wXWM393A
アプリの規模にもよるかな
2017/11/03(金) 10:02:02.08ID:ATL1IZSq
画面作るのはXAMLが楽で良いなぁ。
2017/11/04(土) 07:58:35.78ID:cFRpAK1r
MVVMで作るときのソリューションのフォルダ構成どうしてますか?

Models/Views/ViewModelsの下にPages/UserControlsなどを置くか、その逆にするかで迷う。
2017/11/04(土) 08:15:23.15ID:1K2n1JV6
>>642
機能で分ける
M/V/VMは区別しない
MVVMに限ったことじゃないけど、一般に、種類で分けるのはモジュール強度の低い良くない分け方だよ
2017/11/04(土) 08:19:20.77ID:+71Y93dj
迷うってことは、問題が解決してないってこと。つまり失敗した概念だと言えるな。
2017/11/04(土) 08:46:00.62ID:jl0ZLZ4q
分けるというより、目障りだからどかす、というイメージが強い
意味合いが#regionに通じてるところがある
2017/11/04(土) 08:53:48.77ID:7G3CwTrC
たしかにViewにプラスで必要な部分は迷うわ
2017/11/04(土) 09:11:02.86ID:5h9DYzfZ
>>642
xamlとVMは同じフォルダ内に置いてる。
648デフォルトの名無しさん
垢版 |
2017/11/05(日) 23:23:33.87ID:TdKcbL6p
データコンテキストってなんなの…
全然使い方がわからない…
WPFほんと難しい…自分の頭の悪さに引くわ…
2017/11/05(日) 23:37:19.03ID:Fa7z1jl7
そんなとこで詰まってるならやめた方がいいんじゃない?
テンプレートバインディングや依存関係プロパティで死ぬよ
2017/11/05(日) 23:42:44.11ID:fpg0wyCq
ルーティングイベントとかクッソ意味不明
Adornerとかレイアウトイベントの使い分けとかDrawing系の低レベル描画層とかゲロ複雑すぎてやばい
2017/11/05(日) 23:50:24.22ID:fpg0wyCq
あと見た目の状態遷移に使うVSMも癖があって慣れるまでクソ難しい
WPFの場合は更にトリガとの使い分けもあってカオスの極み
2017/11/05(日) 23:57:03.43ID:fpg0wyCq
あとWIC系のAPIもヤバい
たかがビットマップイメージがなんでここまで複雑になるのか不思議なレベル
2017/11/06(月) 01:08:49.29ID:g6YJakDt
>>648
すごく単純に言えば、バインディングに使用する複数の変数を任意の1つのオブジェクト(クラス)にまとめておくだけの機能だよ。
(各変数はそれぞれプロパティとして定義する)
654デフォルトの名無しさん
垢版 |
2017/11/06(月) 02:23:58.85ID:Xbh99dPN
DataContextやDependencyPropertyは使ってりゃそのうち分かるようになるし
一度分かってしまえばどうということもない

VisualStateManagerは確かに難しい
つか使いこなせん
Styleのカスタマイズは未だに試行錯誤というか行き当たりばったりだわ
2017/11/06(月) 13:12:40.27ID:TOtQu/eL
>>653
んー…分からん…
色んなサイト見ても全部微妙に違ってどれを参考にしたら良いかもわからん
MVVMだとどの部分に書くんだ?
2017/11/06(月) 13:38:43.96ID:3xHBnL7y
んー…なんというか…。書くとか書かないとかというか、、データソースなんだよ
2017/11/06(月) 13:55:11.78ID:2nM3KO37
>>655
Contextって名前が曖昧すぎる。
DataHogeと同じで名前に意味はない。
DataContextにはViewModelのインスタンスを設定してDataCintext=ViewModelだと思ってればよいのだ。
2017/11/06(月) 18:15:34.67ID:6TjQQ+65
>>648
難しいのは考え方だろうね
データコンテキストが難しいと感じるなら、根本的に発想の転換が必要なんだと思う
2017/11/06(月) 18:26:51.77ID:8k9yKas+
WPFが流行らなかった縮図を見ているかのようだ…
2017/11/06(月) 22:34:37.38ID:S0HGA2wI
WinForms時代のデータソースも分からない人だろ。
2017/11/06(月) 22:42:59.34ID:FcoeWLYn
>>656
>>657
>>658

せっかく説明してくれてるのに理解出来なくてごめんよ…
元々プログラミング始めたばかりの自分にはハードル高いよな…
this.DataContext=table;
とかだとXAMLにBinding tableって指定してる所と紐づけるって解釈で良いのかな?

MVVMでアプリを作ってみてるんだけど、C#の言語自体の理解もまだまだだからすげぇ難しい…
this.DataContext=table;←これもModelクラスに書くべきなのかViewModelに書くのかよく分かってない

View→ViewModel→Modelって関係になっててV,VMとMは切り離して考えるのは分かるんだけど、例えばModelクラスに書いてる処理(例えばデータベースの値をDataGridに表示させるとか)をどうやってViewModelから取得したらいいの?
プロパティとか使うの?
662デフォルトの名無しさん
垢版 |
2017/11/06(月) 23:48:48.36ID:VYb2y8+k
>>661
それは Xamlには Binding だけでいい
663デフォルトの名無しさん
垢版 |
2017/11/06(月) 23:51:37.56ID:VYb2y8+k
知識ないうちはXamlは地獄

知識あってもタイプミスとかでデバッグがものすごくつらい
いろいろ無駄なことをさせられる
2017/11/07(火) 00:02:15.24ID:bJd82uh3
俺の理解ではDataContextはBinding SouceとBinding Targetのつなぎ目

DataContextを設定してはじめてSouceとTargetは赤い糸で結ばれる
2017/11/07(火) 01:05:32.39ID:doVlH5i0
>>661
細かいことは省略した大雑把な例だけど、
class Table
{
 int A { set; get; }
 int B { set; get; }
}
this.DataContext=new Table();
と設定しておくと、{Binding Path=A}とか{Binding Path=B}って書けるようになる。("Path="は省略可)
2017/11/07(火) 01:51:17.40ID:cse8gTk6
>>661
まず、データベースとか関係なくDataGridに何か(例えば1〜10)を表示することを考える
そうするとModelは必要ないからViewModelに全てを書く
ViewModelがViewのために1〜10を教えてあげるとViewはViewModelの言うがまま表示する
このことをViewModelにdatabindingしていると呼ぶ
しかし、いつも1〜10を表示しても何の役にも立たない
目的に応じて適切な値を表示したい
この1〜10ではなく目的に応じた適切な値を管理するのがModelの役割
例えば、データベースから31415926534とか取ってきたりする
2017/11/07(火) 06:48:36.59ID:QsHhWiO1
>>661
ビューモデルとデータコンテキストの紐付けはxamlの中に記述する。
xamlはhtml見たいな画面記述言語じゃなくてc#(.net)のインスタンスを記述する言語。
2017/11/07(火) 07:00:14.02ID:QsHhWiO1
>>661
>どうやってViewModelから取得したらいいの?
プロパティとか使うの?

バインドさせる。
2017/11/07(火) 09:12:12.63ID:lDMoKAlX
>>667
>xamlはhtml見たいな画面記述言語じゃなくてc#(.net)のインスタンスを記述する言語。
それXAML一般じゃなくてWPF限定だから気をつけた方がいいよ
UWPやSilverlightでは.NETオブジェクトはアンマネージドなXAML DOMのラッパー
だからC#でツリー組むよりXAMLをテキストで読ませたほうが速かったりする
2017/11/07(火) 09:22:10.77ID:y4hb8FzZ
>>669
そうなの?
じゃ、UWPのxamlとWPFのではかなり別もんなのか
2017/11/07(火) 09:39:39.90ID:QoqDyUp+
>>669
それじゃUWPのobjフォルダに有る xxx.g.csファイルって一体何だ?
2017/11/07(火) 11:28:45.06ID:J9S6QLG4
一発目でwpfはツレーだろうな。理解していることの前提要素が多すぎる
2017/11/07(火) 11:42:33.72ID:2j0EGKvx
MVVMに手を出すとさらにつらくなるね
2017/11/07(火) 12:39:39.96ID:jxgrvyaf
素直にWinFormsで入門すればよかったのにw
C#に限らず今時のプログラミング言語自体、まったくの初心者にとっては躓きそうな要素が
色々あるのに、xamlがーとかMVVMがーとか言い出したら、地雷原を素足で歩くようなもの
2017/11/07(火) 16:42:34.80ID:9jjlIy9p
>>674
ConsoleでHello,world からでしょ。
2017/11/07(火) 16:56:18.48ID:kORl+ylV
ほんとそれな
Viewの前にModelの作り方、GUIの前にCUIの作り方覚えろと
2017/11/07(火) 17:39:21.94ID:H3DL339H
今時CUIはないでしょう。
モチベーションが続かないし、Windows FormでポトペタでGUI作るより
CUIの方が簡単とも思えない
2017/11/07(火) 18:04:12.00ID:kORl+ylV
>Windows FormでポトペタでGUI作るより
いきなりそれからやろうとすると、基礎が身に付かんだろって話なのよ
言語の基本仕様くらい真面目に学習せんかーい
2017/11/07(火) 18:06:52.09ID:H3DL339H
>>678
じゃあ聞くけど、CUIを選択することで学習できる基礎って何?
そんなものはないよ。あるなら言ってみ?

そういう話なら、たぶん構造化プログラミングをすっ飛ばしていきなり
クラスベースのOOPに挑戦する弊害の方が大きいと思う
2017/11/07(火) 18:45:12.03ID:MJK6I9RA
CUIは入出力がものすごく単純でGUIみたいなフレームワークの知識がほぼいらないので言語の仕組みそのものに学習を集中できる
2017/11/07(火) 19:06:46.18ID:vb3e1pou
>>679
MVVMのModelで実行できるプログラムにGUIって必要か?
2017/11/07(火) 19:09:33.93ID:vb3e1pou
ぶっちゃけ、GUIやConsoleプログラムのI/Oって泥臭い処理で
プログラムの本質を学ぶ上では必要の無いものなのかもね。
2017/11/07(火) 19:15:19.61ID:vb3e1pou
とりえあず、かずき大先生の記事を貼っておく。
日本語のWeb情報でWPFに関してこれを超えるものはないと断言できる。
http://blog.okazuki.jp/entry/2014/12/27/200015

お布施、払いたい人はこれ
https://www.amazon.co.jp/gp/product/B015WXYUUU/ref=oh_aui_d_detailpage_o01_?ie=UTF8&;psc=1

これも必須
https://www.amazon.co.jp/%E3%82%A8%E3%83%83%E3%82%BB%E3%83%B3%E3%82%B7%E3%83%A3%E3%83%ABWPF-Presentation-Foundation-Programmers-SELECTION/dp/4798114200/
2017/11/07(火) 19:33:09.38ID:6NdbJPOz
>>680
curses全力否定?
2017/11/07(火) 19:38:51.28ID:MJK6I9RA
>>684
cursesみたいに複雑にしようと思えばいくらでもできるけど、printfとscanfだけでも最低限のものは作れるでしょ
GUIだとその最低限のものを作るのにも書かなきゃいけないことが多くて初心者向きじゃない
2017/11/07(火) 19:41:29.82ID:o4Vl0zCf
ボタン押してラベル書き換えるぐらいもやる気がないなら
プログラムやる資格はないと思う
2017/11/07(火) 20:40:45.13ID:JobEFelh
>>ボタン押してラベル書き換えるぐらい
のことでもViewのコードビハインドにするかViewModelとの相互作用にするかでも悩まされるのがWPF

ViewModelとの相互作用で書いた方が可搬性があがるよ!
…分かるけど、それ、初心者向きかしら?そんなことも思わすのがWPF
2017/11/07(火) 21:28:27.15ID:kORl+ylV
>悩まされる
悩まなくね?
ボタンのラベルを他から参照する事が無い、次の画面に持ち越さずその場限りの使い捨てで良いならコードビハインド
2017/11/07(火) 22:12:40.66ID:jxgrvyaf
>GUIだとその最低限のものを作るのにも書かなきゃいけないことが多くて初心者向きじゃない
という程にはWinFormは難解じゃないわな。その辺りは良くも悪くもVisual Basic譲り
ただ、GUIから入るとFormの存在感が強すぎて、ブラックボックス的な部分もあって、クラス
などの基礎知識の理解を遅らせかねない部分があるのは確か
とはいえ、今のご時勢CUIでストイックにプログラミング勉強しようとも人に勧めようとも
思わないけどな
ボール無しでの基礎訓練も大事だけど、やっぱシュート練習のほうが楽しいわさ
2017/11/07(火) 22:53:53.14ID:JobEFelh
>>688
>ボタンのラベルを他から参照する事が無い、次の画面に持ち越さずその場限りの使い捨てで良いならコードビハインド
そう。悩まないんだ!すごいねー。それで可搬性のあるコードになるんだー(棒
みんなそうなるといいねー。すてきー(呆
2017/11/07(火) 23:29:42.68ID:8cNzIfeX
低能なら低能でコードビハインド使うのは別に悪ではない。
2017/11/08(水) 00:24:21.64ID:lkyynzxx
けっきょく低能よばわりされるんだ、悪じゃないのに。へー(もはや何もなし
2017/11/08(水) 02:10:41.66ID:41vAKyEh
かずきは大したことないよ。ただブログこまめに発信してるだけ。
neueccみたいな何か作り出せるのが最強
2017/11/08(水) 05:58:24.72ID:d89kNCGz
低脳が悪とは限らない
まあケースバイケース
2017/11/08(水) 07:32:05.97ID:kXOcEBHO
>>693
まともなドキュメント書かなきゃ誰も使ってくれないけどね。
Rubyが流行ったのは早い段階で英語のドキュメントがあったから。

オレ、ドキュメントなんて面倒くさくて書きたくないけどw
2017/11/08(水) 11:04:01.06ID:yrPiJxO6
WPF使えるようになれば分かると思うが、理解できないのはWPFが糞設計だから。
決してPGのスキルの問題ではない。もしPGのスキルのせいにしてる奴がいるとすれば、
そいつはWPFを理解していないだけ。
2017/11/08(水) 11:47:39.60ID:kVbA0K8n
コードビハインドとか新しい用語作っておきつつ学習した後で
それは柔軟性が足りないとか言われても困る
2017/11/08(水) 12:21:09.00ID:OSwmw0Ws
>>696
どんな糞でも食せるように調理できるのはスキルではないと言うのか。
オレはスカトロマニアかw
2017/11/08(水) 12:29:17.17ID:JZhqf68Z
ウメーとこだけバインド利用しましょうでええんや
キッチリカッチリ無理無理。ハゲるぞ
2017/11/09(木) 05:49:47.74ID:gZdnar30
WPFが糞というのはないな、xamlが糞だというのはおおむねそうだな
xmlもどきで記述されたものを専用パーサで読みUIを作るという着想はいいんだ
問題は書式、カッコ増えすぎインデント深すぎ、可読性が悪いし記述がしにくい
2017/11/09(木) 07:52:05.77ID:rakEZX+F
フラットだったら可読性が良いってわけでもないと思うがな。
少なくとも、デザイナー使わないと読んでも理解できない.Designer.csよりはマシになったと思う。
xamlでネストが深くなりすぎたと思ったら<UserControl>でモジュール分割するタイミングだな。
main()関数の中に全部の処理を記述するようなことしてるから糞に思えるんだよ。
2017/11/09(木) 08:52:12.22ID:eH9JjwU7
xmlの問題なのは重々承知だが、コメントの書き方何とかならんものだろうか
2017/11/09(木) 09:01:55.01ID:T0f+zXRU
>>700
xmlモドキじゃなくxmlだろ。
独自構文だともう少しスッキリはするかも。
2017/11/10(金) 16:44:08.42ID:0bOJZQsY
なんとかバインドの雰囲気がわかったと思ったらコマンドってなんだよ
これ1番わからねぇわ
2017/11/10(金) 17:50:48.32ID:ueWlL2hQ
WPFの本質が見えているとなぜ普及しなかいなんて一目瞭然なんだが、
それをPGのスキルのせいにするのは基本的にWPFの本質、使い方が何も分かってないのだろう。
2017/11/10(金) 18:37:03.92ID:KVSswJaS
WPF以外でスタイリッシュなUIって作れるのありますか?
WinFormじゃメチャクチャ工数がかかるのでWPF以外で何かいいのあったら教えて頂きたいです。
2017/11/10(金) 18:40:08.93ID:5TFgrAMu
UWPがあるぞ
2017/11/10(金) 18:59:21.06ID:Qc9ud9aj
>>706
今だとElectronの一強
2017/11/10(金) 18:59:42.16ID:Bl01hNnl
wpf難しい…
データバインドがうまくいかない
データベースから取ってきたリスト型のデータをコンボボックスのitemsourceに設定するだけなのにうまくいかぬ
2017/11/10(金) 19:02:29.12ID:KVSswJaS
Electronは初見なので調べてみます。
2017/11/10(金) 19:40:41.74ID:alfIXjUy
>>705
>それをPGのスキルのせいにするのは
PGのスキルのせいだと思うぞ。
MSが日本の平均的スキル(日本のITは奴隷産業なので世界の底辺以下のそのまた以下の以下のゴミクズ以下)を超えた物を作ってしまったのでついて行けてないだけ。
2017/11/10(金) 19:46:17.42ID:Qc9ud9aj
WPF開発は個別の画面の前に全体の仕組みの設計から入らないと上手くいかないというかクソ手間かかるんだよな
日本人はそういうの苦手でボトムアップが好きだから根本的に合わないんだよ
2017/11/10(金) 20:39:39.13ID:g/THXaNi
まぁ確かに、Formsだとポトペタで画面作ってダブルクリックで開いたイベントハンドラに
ちょいちょいとコードを書けばそれで動くものができたからな。そのお手軽さは素晴らしい。
2017/11/10(金) 21:39:51.42ID:YLtBUtjT
WPFでも全く同じ事出来るんですが…
2017/11/10(金) 21:41:54.84ID:jdLju/Su
htmlの手書きが出来るならxamlなんて言うほど大変じゃないんだけどな
swingのレイアウトよりは遥かにマシだと思うし
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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