トップページtech
1001コメント271KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/05/30(木) 20:12:06.20
ユーザーインターフェースシステム、Windows Presentation Frameworkについて微に入り語るスレ。

Visual Studio 2012 & 2010
http://www.microsoft.com/visualstudio/jpn/downloads
Microsoft .NET Framework 4 (Web インストーラー)
http://www.microsoft.com/downloads/details.aspx?familyid=9CFB2D51-5FF4-4491-B0E5-B386F32C0992&;displaylang=ja
Microsoft .NET Framework 4 (スタンドアロンインストーラー)
http://www.microsoft.com/downloads/details.aspx?familyid=0A391ABD-25C1-4FC0-919F-B21F31AB88B7&;displaylang=ja
Microsoft .NET Framework 4.5
http://msdn.microsoft.com/ja-jp/library/vstudio/5a4x27ek.aspx

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

関連スレ
Microsoft Silverlight その9
http://toro.2ch.net/test/read.cgi/tech/1321150267/

コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/
0669デフォルトの名無しさん2013/10/25(金) 17:27:12.31
>>667
使用する技術の観点から案件の検討するの?変わった会社に勤めているんだな・・・。
自分で設計しない(出来ない)下請けさんかね。

WPFは認知度低いというかWinFormsで止まっている会社多いのは確かだし
単にそういう提案出来る技術のある人が少ないだけだと思う。
0670デフォルトの名無しさん2013/10/25(金) 17:56:22.19
ストアアプリはスレチかもしれないけど
設定パネルとかはデフォで準備しておけばいいのにな
柔軟というか全部作らないといけないのは何ともいただけない

カラーピッカーすらない
何を考えているんだか
0671デフォルトの名無しさん2013/10/25(金) 23:46:41.59
>>669
だからそれを客に説明したとしてWinFormsよりWPFの単価が高い理由を仮に理解されたとしても容認されんだろ
客は安くて早いしか望まないんだから
技術力だけで飯が食えるなら日本のIT業界が某社を頂点とした搾取構造になるわけねーだろ
技術力云々いうなら何故日本からGoogleのような会社が出てこないんだ?
競争なんて上澄みだけが美味い汁吸えるんだよ、それともおまえはシリコンバレーで名前が売れてるほどの天才ですか?
0672デフォルトの名無しさん2013/10/25(金) 23:53:04.55
>>671
技術によって金が高くなるんじゃなくて、その技術によって客に高い価値を与えられるから高くなんだろ(´・ω・`)

それが出来ないなら使い慣れた客が望む技術使ってればいいやん
0673デフォルトの名無しさん2013/10/25(金) 23:59:00.50
客に技術的な説明して真に理解されると思ってんの?
行政や一部上場の顧客ほど承認欲求が強いんだよ
IBMや富士通の言うことなら技術力関係なく○○さんが言うならって信用すんだよ
0674デフォルトの名無しさん2013/10/26(土) 00:05:16.87
WPFでWinFormsより早く安く作ることができればいいわけだな
0675デフォルトの名無しさん2013/10/26(土) 00:08:02.95
何の話だよ
0676デフォルトの名無しさん2013/10/26(土) 00:15:08.91
>>673
だからお前は技術とか関係ないとこでやってんだから技術の話に口出さなきゃいいじゃん(´・_・`)

うちは客にSilverlightやWPFやストアアプリとかXAML系で作ったもん納品してるわ
0677デフォルトの名無しさん2013/10/26(土) 00:23:23.90
>>668
一例を挙げればRoutedUICommandとか。

そもそものコマンドの目的からしたらVMのメソッド呼び出しを抽象化したものでなきゃいけないはずなのに、
RoutedUICommandの実装じゃ結局コードビハインドのイベントハンドラを呼び出してるのと
同じことで、あんなの何の意味があるのか。
0678デフォルトの名無しさん2013/10/26(土) 00:33:38.23
>>667
マンセーしてる人、俺も含めてだが、たぶんデフォルトのWPFのみじゃ使ってないぞ
PrismとかのMS製ライブラリ使うと、そういう矛盾感じなくなる
0679デフォルトの名無しさん2013/10/26(土) 00:36:16.84
すまん >>667じゃなくて>>677
0680デフォルトの名無しさん2013/10/26(土) 07:34:56.27
基本ICommandしか使わないし
0681デフォルトの名無しさん2013/10/26(土) 07:53:41.71
nullチェックってなんだろ
あれ毎回しないといけないのかね
0682デフォルトの名無しさん2013/10/26(土) 10:39:52.31
ICommandしか使わないとか、なんでそんな苦しいことをわざわざ……
マゾか
0683デフォルトの名無しさん2013/10/26(土) 11:26:37.85
モデルがいらないようなケースでもコードビハインドのためだけにVM使ったりする?
0684デフォルトの名無しさん2013/10/26(土) 11:29:05.44
目的と手段が逆転してると思うんだよね
健康になるために自殺を厭わない感じ

俺はフォームのデザイナーとバインド機構しか利用してないわ
十分だよ
0685デフォルトの名無しさん2013/10/26(土) 11:50:48.87
>>683
普通コードビハインド書きませんしおすし
0686デフォルトの名無しさん2013/10/26(土) 11:52:05.98
デザイナなんか使ったらクソ汚いXAMLが生成されるから逆に苦しくなる気が
0687デフォルトの名無しさん2013/10/26(土) 11:53:37.60
>>686
WinFormと汚いXAMLしか見たこと無い人には十分なのでは
06886842013/10/26(土) 11:55:49.02
誤解されちゃったけどポトペタは利用しないよ
手書きに決まってる

XAMLはフォームのデザイナーという意識はないんだろうかね
ポトペタエディタだけをさすの?
0689デフォルトの名無しさん2013/10/26(土) 11:58:40.82
「HTMLはWebのデザイナーという意識はないんだろうかね」と言い換えてみたら頭のおかしさが分かるんじゃねえの
0690デフォルトの名無しさん2013/10/26(土) 11:59:46.53
Webフォームのデザイナーではあると思いますけど
そこでWebという言葉を使うならフォームではなくアプリケーションと言うのでは?

>>頭の良いお方
0691デフォルトの名無しさん2013/10/26(土) 12:02:33.64
少なくともこのスレでは誤解した人間の方が多いから
少なくともこのスレの常識からはあなたの方がズレている
0692デフォルトの名無しさん2013/10/26(土) 12:02:49.66
普通に考えて、XAML直書きの事を「フォームのデザイナーを利用する」とか表現しない
これがXAML書いてる事を指す現場が存在するとは思えない
0693デフォルトの名無しさん2013/10/26(土) 12:03:53.00
まあVisual Studioではエディターとデザイナーは厳密に区別されてる
0694デフォルトの名無しさん2013/10/26(土) 12:05:19.40
「HTMLはWebページのデザイナー」だと言われた場合
その「デザイナー」が指すのはデザインの専任者でもホームページビルダーでもないと思うわ。
横槍だけど。
0695デフォルトの名無しさん2013/10/26(土) 12:07:12.96
デザイナはコードを生成する元なんだからデザイナ利用してるならXAML書いてない
XAMLで書いた内容がデザイナに反映されるという文脈なら分かるが明らかにそうじゃないし
0696デフォルトの名無しさん2013/10/26(土) 12:08:26.92
フォームのデザインにXAMLを利用する
なら分かるよ
0697デフォルトの名無しさん2013/10/27(日) 03:39:50.82
>>671
根本的な所でズレている気がするなぁ。
まず同じ物作ろうとした時工数的に WinForms<WPF からスタートなのが違和感あり。
そういう説明したらそらアウトプットが同じになるなら当然安いほうでって言うに決まってる。

うちは最近WPFで開発するようにしているけど>>678の言うようにフレームワークを使う、
常用するコンポーネントを蓄積していくという普通の事をやっていればどっち使っていても
開発速度に差は無いと感じているけど、どういう要素がWPFの方が工数かかるという根拠なの?
単に技術がない(経験のある技術者がいない)だけに見えてしまうんだが。
0698デフォルトの名無しさん2013/10/27(日) 10:19:33.32
経験のある技術者がいないってのは凄い問題だと思う
何年経ってんだよ

入門障壁が高いのも問題
winformsだったらjavaなどから移ってきた技術者でも容易に使える
ほとんどやってることは同じだからちょちょいで使える
0699デフォルトの名無しさん2013/10/27(日) 10:29:33.72
こんな簡単なことも分からないから馬鹿にされるんだよなあ
0700デフォルトの名無しさん2013/10/27(日) 10:35:00.96
WPFみたいな特殊事例で常用するコンポーネントが蓄積されるような状況にあるわけねーじゃん
工数が同じになるのは初期投資償却した後でしょ
大抵の会社は初期投資すらしてないんだよ
0701デフォルトの名無しさん2013/10/27(日) 11:52:08.70
WPFが特殊事例なー
0702デフォルトの名無しさん2013/10/27(日) 11:58:32.49
めくら以外の誰もが特殊事例だと認めるところだろ
0703デフォルトの名無しさん2013/10/27(日) 12:11:44.05
MSもストアアプリメインになってるのが終わってる
0704デフォルトの名無しさん2013/10/27(日) 13:16:20.68
今更UIをFormsでつくってくれいわれてもこまるなー。今日時期やりたくないっす。
標準のコントロールが足りないとかあるかもだけど作りとしては遥かに楽。
0705デフォルトの名無しさん2013/10/27(日) 15:49:09.44
やっぱりWPFは裸の王様だと思う。
0706デフォルトの名無しさん2013/10/27(日) 16:13:40.71
そうやって古い技術に固執するから仕事がどんどんアレになるんじゃないの
0707デフォルトの名無しさん2013/10/27(日) 16:17:23.68
WPFにダメだししてるからって古い技術に固執してるわけじゃないと思うけど。
0708デフォルトの名無しさん2013/10/28(月) 15:25:00.61
>>698 >>700
育てもせず、勉強もせず・・・なら当たり前の結果だと思うんだが
そんなもんWinForms使おうとMFC使おうとJava使おうとなんでも同じじゃね?
WinFormsの基本コンポーネントだけで作れるアプリならそれこそ何使っても一緒だし
0709デフォルトの名無しさん2013/10/28(月) 16:16:38.84
何使っても同じようなものは作れるよ
重要なのは作業効率
WPFで開発すると時間がかかる
0710デフォルトの名無しさん2013/10/28(月) 16:27:37.16
脱線するとアレだからナントカパターンとするけど、そのナントカが
設計しながら製造やるようなとき、マッチしないんだよなぁ。
ありえねーとかはどうでもいい。事実としてそういうときは多い。
0711デフォルトの名無しさん2013/10/28(月) 16:31:18.72
理論は素晴らしいし納得できるが
実際それをやろうとするとアプリのロジック以上に悩まされる結果にw
あのパターンは娯楽だと思うよ
0712デフォルトの名無しさん2013/10/28(月) 17:03:09.41
>>709
うん、だからそれは単にノウハウが無いだけじゃないの?って言ってるの
パターンにハメて(フレームワーク使うというのはそういう事)、スニペット使を使う
そういう事をすれば大して効率は変わらないと感じているけどな
それにメリットを見いだせないという話とWPFは効率悪いはイコールとは思えない
0713デフォルトの名無しさん2013/10/28(月) 17:18:52.77
Formのポトペタでイベントにゴリゴリロジックのやり方でいいならWPFでも普通にかけるよね。
MVVMはユニットテストしたいなら必須だけどな。書きづらいところは素直にコードビハインド入れてなるべくVMに書くようにするぐらいのゆるい感じでやったらそんなにハマるとこもないと思うけど。
0714デフォルトの名無しさん2013/10/28(月) 17:40:14.24
>>713
うん、そう思う。WPFが効率悪いと思っている人はWinFormsみたいな書き方しちゃいけない
という固定観念が原因だろうね。WinFormsよりはコードとデザインが分離し易くなっている
って時点でWinFormsに戻る理由は俺には無いなぁ。
0715デフォルトの名無しさん2013/10/28(月) 17:44:24.23
でもListViewにDisplayIndexが無いのはどうかと思う
0716デフォルトの名無しさん2013/10/28(月) 18:30:22.62
javaはライブラリやツールなどいろんなものが充実してて最先端技術を知るには一番いい
.netは他の言語で流行ったものの型落ちの技術がやってくるところになってしまった
何故だ?
0717デフォルトの名無しさん2013/10/28(月) 21:04:24.27
ListBoxItemにいろいろつっこみたいから
もうWinFormsには戻れない
オーナードローなんてしたくない
0718デフォルトの名無しさん2013/10/28(月) 22:06:30.78
XAML系のUIはそういう柔軟性だけはいいね。
でもやっぱりWPFもXAMLも好きになれない。
0719デフォルトの名無しさん2013/10/28(月) 22:27:16.00
ドカタにわかるくらいにならないと流行らんな
0720デフォルトの名無しさん2013/10/28(月) 22:40:56.56
>>716
ろくにジェネリクスもラムだもないボンクラが何をほざいてるんだ?
0721デフォルトの名無しさん2013/10/28(月) 22:48:56.70
ラムだじゃなくてラムダだっちゃ
0722デフォルトの名無しさん2013/10/28(月) 23:04:10.67
最近はJavaの方がC#パクってる感がある
0723デフォルトの名無しさん2013/10/28(月) 23:42:32.68
インスパイヤしただけだろ。
0724デフォルトの名無しさん2013/10/28(月) 23:57:51.50
飲ま飲まイェイ!
0725デフォルトの名無しさん2013/10/29(火) 00:14:32.90
ダーリンゆるさないっちゃ
0726デフォルトの名無しさん2013/10/29(火) 00:19:12.56
メニューとコンテクストで同じ命令があった場合
コマンド機能ってらくだなーって思った

ListViewにデータぶちこもうとしたら
バインドやマークアップ拡張とかあんまり使ったことないのを学ばされて疲れた
ここらへんもうちょっとシンプルに書けるようにならないのかなー
0727デフォルトの名無しさん2013/10/29(火) 00:34:44.89
ObservalCollectionとか一瞬意味がわかりませんでした
0728デフォルトの名無しさん2013/10/29(火) 01:18:02.20
綴り違うしな
0729デフォルトの名無しさん2013/10/30(水) 22:23:33.57
Formsを簡単に変換できませんかね。できませんよね
0730デフォルトの名無しさん2013/10/30(水) 22:36:24.03
両方の知識があればコンバーターは結構簡単に作れる
0731デフォルトの名無しさん2013/10/30(水) 22:49:08.05
簡単に作れるのにコンバーターツールがないってことは簡単じゃないってことじゃないのか?
0732デフォルトの名無しさん2013/10/30(水) 23:30:27.56
コンバーターってDSL書くってことだろ?
いやー大変でしょw
0733デフォルトの名無しさん2013/10/31(木) 00:01:31.54
つうかまともに動くものとか無理ゲーでしょw
0734デフォルトの名無しさん2013/10/31(木) 21:13:36.55
だって同じ名前のコントロールでもメソッドとか名前変わってたり機能あったりなかったり
互換あるわけじゃないし無理ゲーだと思う。まぁ、あってもいらんけど。
0735デフォルトの名無しさん2013/10/31(木) 23:38:26.41
そもそもコードをxmlにコンバートする時点で
0736デフォルトの名無しさん2013/11/01(金) 00:06:36.03
Xamlを一切使わないでC#コードだけ書くっていうのならできそうじゃね?
0737デフォルトの名無しさん2013/11/01(金) 00:22:12.66
AndroidもiOSもそのやり方でやってるわ。
WPFもそれでいけるよね
0738デフォルトの名無しさん2013/11/01(金) 03:17:13.12
もともと大したコードを書いてないから変換も簡単にできる(キリッ
0739デフォルトの名無しさん2013/11/01(金) 07:58:28.88
まずForm側の情報取得はインスタンス化してプロパティを見るだけでいいんだよ
最初に出現するコントロールと設定されてるプロパティを列挙しておく
それから各コントロールのXElement変換処理を実装するだけ
WPF案件にFormsでデザイン送ってきたアホのソースをコンバートしたときは二時間ぐらいでXAMLが変換できた

コードビハインドは対象にしなかったけど、コード書き換えてコンパイラーを動かせば式木は取れるはず
Graphicsとか触ってる箇所は知らん
0740デフォルトの名無しさん2013/11/01(金) 09:34:27.96
どーも発想がテキストベースにしか行かなかったが、
ターゲットにするコントロールを絞れるなら、リフレクションでなんとかなりそうだな
0741デフォルトの名無しさん2013/11/01(金) 23:05:12.89
>>716

10年前の書き込みかと思った。

ただ、今は .net系のほうが進んでいるけど、でもそれはマイクロソフトが提供する部分で、
周辺ライブラリは javaのような盛り上がりはないだろうね。
0742デフォルトの名無しさん2013/11/01(金) 23:06:42.28
盛り上がってる?
なんか中途半端で使えないものが乱立してるだけのような気がする
0743デフォルトの名無しさん2013/11/02(土) 00:57:35.92
pythonやPHPで流行ったものもjavaまでは容易に移植されるけど
そこからc#には何故か壁があってなかなか来ない
VB?
なにそれ?
0744デフォルトの名無しさん2013/11/02(土) 01:01:12.51
Javaと比較してフレームワークは多いけどライブラリはほんと少ないよね
特に画像系は移植が途中までとかCをC++/CLIで自分でラッパー書けとかばっかw
0745デフォルトの名無しさん2013/11/02(土) 01:19:39.68
VS2010の時はデザイナに表示されるWindowsの右下にWindowを自動サイズにするボタンが
存在したと思うんだけど、これVS2012では廃止された?
0746デフォルトの名無しさん2013/11/02(土) 01:41:34.02
WPFのボタンって糞だな
文字が書いていない余白のところをクリックしても反応しない
0747デフォルトの名無しさん2013/11/02(土) 02:29:04.08
MONOはWPF対応予定ないって創始者が言ってたけど
状況変わったかねー
0748デフォルトの名無しさん2013/11/02(土) 06:35:04.84
> CをC++/CLIで自分でラッパー
あ〜あ。
この一言で無知が露呈しちゃったね。
0749デフォルトの名無しさん2013/11/02(土) 08:54:15.80
>>748
PInvokeがーとか言いたいの?浅知恵乙
0750デフォルトの名無しさん2013/11/02(土) 10:32:31.14
>>746
そんなばかな
0751デフォルトの名無しさん2013/11/02(土) 11:48:11.30
ネイティブのDLLをC++/CLIでラップするのは面倒だったな。
ピン留めとか勝手にやってくれるP/Invokeの方が楽だった。
0752デフォルトの名無しさん2013/11/02(土) 13:02:19.83
Boost.Pythonみたいなの作れよ
0753デフォルトの名無しさん2013/11/02(土) 13:06:26.26
swigあるだろ
0754デフォルトの名無しさん2013/11/02(土) 18:35:32.53
オープンソースのライブラリ関連は貧困だけどこればっかりはMSもどうにもできない
0755デフォルトの名無しさん2013/11/02(土) 22:01:40.32
コントロールのスタイルをいじっているんですがうまくできません
ComboBoxやListBoxでマウスオーバーのとき青いハイライトになります
なぜスタイルの設定が反映されないんでしょうか

<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{DynamicResource GrayColor}" />
</Trigger>
0756デフォルトの名無しさん2013/11/02(土) 22:16:11.73
>>755
問題の原因が分からないから質問してるくせに、なぜその3行だけを抜き出してコピペするんだ
馬鹿なのか。
0757デフォルトの名無しさん2013/11/02(土) 22:42:40.66
>>755
なぜって、お前が生きてるから。
0758デフォルトの名無しさん2013/11/02(土) 23:11:34.75
疲れているせいかこんなんで笑える
0759デフォルトの名無しさん2013/11/02(土) 23:38:38.63
>>755
その方法はComboBoxならControlTemplateがStoryBoardでBackgroundを上書きしてしまうので効果がな〜い
http://msdn.microsoft.com/ja-jp/library/ms752094%28v=vs.110%29.aspx

じゃあどうする
ControlTemplateを書くしかありまっせん
既存のテンプレートコピーしてMouseOverのVisualStateだけ変更すればよかよ
0760デフォルトの名無しさん2013/11/03(日) 00:00:52.36
>>759
ControlTemplateは一度試したんだけど(IsMouseOver部分だけ書いた)
コントロール自体が表示されなくなった
ControlTemplateを作ると枠とかドロップダウンボタンなど全部作らないとだめってことでいいんでしょうか?
ControlTemplateで一部だけ変更するには上記のコードまるごとコピーした上で
変更するしかないですか?

WPFはデザインが楽って聞いたけど色の変更だけでもこれだけしないといけないって大変ですね・・・
0761デフォルトの名無しさん2013/11/03(日) 00:18:19.32
WPFのデザイン楽とか大嘘だから
業務システムなんかで画面遷移が多い場合テンプレート組み合わせてWebっぽく作れるから効率いいってだけ
0762デフォルトの名無しさん2013/11/03(日) 00:55:56.09
>>760
楽というか自由度が高い。それ故前のだとにっちもさっちもいかなかったものができたりもするが、自由ゆえにめんどくさいとこも。
0763デフォルトの名無しさん2013/11/03(日) 01:20:17.21
嘘、大げさ、紛らわしい
0764デフォルトの名無しさん2013/11/03(日) 05:56:27.11
コードとデザインが分離してるから分業しやすいとかも半分嘘だよな。
XAML見る機会が多いから他人の書いたXAMLはジンマシンが出てくる
0765デフォルトの名無しさん2013/11/03(日) 08:46:58.81
>>764
フォームよりは明らかにしやすいだろ(´・ω・`)
0766デフォルトの名無しさん2013/11/03(日) 11:00:34.50
Bindingソースだけ共有してれば割と分業楽だけど
0767デフォルトの名無しさん2013/11/03(日) 11:37:55.57
WPFの直感的でないところは逆引きに頼ってる人にとっては天敵だな
体系立ててシステムを学習してないとそんな発想でてこないってのが多い
0768デフォルトの名無しさん2013/11/03(日) 11:47:48.89
スタイルとかコントロールテンプレートとか、あとマークアップ拡張とか
Help読めば理解できるけど、直感というか他での経験的にできそうなことが出来なかったりもするね
自前で作ったコントロールを使う場合はclr-namespaceを指定するとか、別のアセンブリだと指定の仕方がまたw
■ このスレッドは過去ログ倉庫に格納されています