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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/12/05(日) 22:08:33
あたらしいユーザーインターフェースシステム、Windows Presentation Frameworkについて語るスレ。
.NET4 もリリースされて盛り上がってまいりますた。

Visual Studio 2010
http://www.microsoft.com/japan/msdn/vstudio/
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

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

関連スレ
Microsoft Silverlight その7
http://hibari.2ch.net/test/read.cgi/tech/1288613056/

過去スレ
Part6 http://hibari.2ch.net/test/read.cgi/tech/1274423236/
Part5 http://pc12.2ch.net/test/read.cgi/tech/1261879110/
Part4 http://pc12.2ch.net/test/read.cgi/tech/1245384489/
Part3 http://pc12.2ch.net/test/read.cgi/tech/1231506876/
Part2 http://pc11.2ch.net/test/read.cgi/tech/1211453941/
Part1 http://pc11.2ch.net/test/read.cgi/tech/1162950198/

コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/
0364デフォルトの名無しさん2010/12/18(土) 00:26:08
DependencyPropertyは値をアニメーションさせたり
親要素の値を継承するようにしたり添付プロパティの定義に使ったりする
速度はたぶんINotifyPropertyChangedの方がだいぶ速いだろうけど
バインディングとかやってる時点でプロパティアクセスの速度なんか無意味だからどうでもいい
0365デフォルトの名無しさん2010/12/18(土) 00:28:02
なるほど。んじゃあ、基本 DependencyProperty 使っておきます。
ありがとうございました。
0366デフォルトの名無しさん2010/12/18(土) 00:31:40
>>364
INotifyPropertyChanged、プロパティ名を文字列で解決してるせいで遅いよ。
バインディングに使う場合には実は依存関係プロパティの方が早い。
普段のプロパティアクセス遅くなるけども。

>>365
ただ、DependencyObject 継承しなきゃいけいのがきつい。
ユーザーコントロールとか作るときにはいいんだけどもね。
ViewModel の場合にはあんまり使わない。
0367デフォルトの名無しさん2010/12/18(土) 00:35:40
パフォーマンスの最適化 : データ バインディング
http://msdn.microsoft.com/ja-jp/library/bb613546.aspx

パフォーマンス気にするなら、まず最初にこの辺りを読んどくといい。
0368デフォルトの名無しさん2010/12/19(日) 00:57:43
「この部品のこのプロパティはどこの値なのか」を調べる方法ってない?
辿っていくこともできなくはないけど、ものすごくシンドイ。
0369デフォルトの名無しさん2010/12/19(日) 01:02:29
親からの継承なのか、スタイルで設定された値なのか、自分自身で設定したものかって話よね?
最新の Silverlight 4 Tools 入れたらプロパティの値の出所表示されるけども?
0370デフォルトの名無しさん2010/12/19(日) 01:05:15
おぉ…そんな便利なものが。トン、やってみる。
0371デフォルトの名無しさん2010/12/19(日) 01:20:38
Snoop使えよ。
0372デフォルトの名無しさん2010/12/19(日) 14:09:58
結局、UIに毛がはえた程度か。
しかもmonoじゃ動かないからwindows専用なのか。

だったら、Qtのdesignerが吐き出すXMLを手動で作るのとあんま変わらん気がする
0373デフォルトの名無しさん2010/12/19(日) 15:24:08
UIシステムに対して"UIに毛がはえた程度"って…可哀想に、可哀想に…
0374デフォルトの名無しさん2010/12/19(日) 15:25:44
そりゃ世の中のアプリケーションは全て"UIに毛が生えた程度"でしょう
0375デフォルトの名無しさん2010/12/19(日) 16:07:38
ユーザーインターフェースに毛が生えるってどういうことなの
0376デフォルトの名無しさん2010/12/19(日) 16:10:31
大人になるんだよ
0377デフォルトの名無しさん2010/12/19(日) 16:13:45
ウィンドウとかボタンがもじゃもじゃしてるんだろ
0378デフォルトの名無しさん2010/12/19(日) 16:15:50
不衛生だから剃るか短く切るかしろよ
0379デフォルトの名無しさん2010/12/19(日) 16:16:44
HairEffect爆誕
0380デフォルトの名無しさん2010/12/19(日) 16:24:23
図星過ぎてネタに走るしかなくなったようだな
0381デフォルトの名無しさん2010/12/19(日) 16:32:35
新しい髪型の話題で"頭に毛が生えた程度"と言われてもw
0382デフォルトの名無しさん2010/12/19(日) 17:41:38
くだらない比喩は要らないから具体的に反論してよ
0383デフォルトの名無しさん2010/12/19(日) 17:47:49
じゃあまずは具体的に何と比較して"毛が生えた程度"なのかを述べた上で具体的な問題点を指摘してよ
UIと比較して毛が生えた程度ってUI作るためのものなんだから当たり前でしょうが
0384デフォルトの名無しさん2010/12/19(日) 17:49:01
反論だけは具体的にw
0385デフォルトの名無しさん2010/12/19(日) 17:51:19
>>383
>>372を一万回読めよ
0386デフォルトの名無しさん2010/12/19(日) 17:54:27
Qtの生産性の低さ
0387デフォルトの名無しさん2010/12/19(日) 17:55:40
具体的に
0388デフォルトの名無しさん2010/12/19(日) 17:57:04
"UIと比較して毛が生えた程度"は当たり前なので反論できません
windows専用もその通りです
XAMLはデザイナに生成させることができます。少なくともデザイナはQTよりは強力です。
で?
0389デフォルトの名無しさん2010/12/19(日) 17:57:48
具体的
0390デフォルトの名無しさん2010/12/19(日) 18:00:20
具体
0391デフォルトの名無しさん2010/12/19(日) 18:02:15
0392デフォルトの名無しさん2010/12/19(日) 18:15:05
お前らのせいで >>372 が出てこれなくなったよ
0393デフォルトの名無しさん2010/12/19(日) 20:49:28
アプリ一つ作るのに二つの言語がかかわってるのがうざい
0394デフォルトの名無しさん2010/12/19(日) 21:07:33
C#, sql, javascript, html, xml, …
WPF使わなくても普通にこれくらい出てくるじゃん
0395デフォルトの名無しさん2010/12/19(日) 21:08:01
>>393
UIをXMLで記述するのは近年の流行り

HTML+CSS+JavaScript+Flash/Silverlight+Perl/PHP/Java/C#/C/Ruby/Python+SQL
最低でも4言語以上必修の環境が大流行してんのに、たった2言語で音を上げる人って(笑)
0396デフォルトの名無しさん2010/12/19(日) 21:08:08
普通にってhtmlなんて使わない
0397デフォルトの名無しさん2010/12/19(日) 21:09:10
WEB開発なんてしないしアホか
0398デフォルトの名無しさん2010/12/19(日) 21:13:43
正規表現は覚えても損しないと思うよ
0399デフォルトの名無しさん2010/12/19(日) 21:20:04
XMLとC#
0400デフォルトの名無しさん2010/12/19(日) 21:26:17
SQLw
0401デフォルトの名無しさん2010/12/19(日) 21:28:18
>>393は口ではそんなこと言ってても体は勝手に
from p in list where p.IsEnabled select p.Textとか書いちゃうんだろ?
0402デフォルトの名無しさん2010/12/19(日) 21:38:12
おれならこうかく
list.ForEach(p,p=>p.IsEnabled)
0403デフォルトの名無しさん2010/12/19(日) 23:35:24
>>393
あんなの、C# のサブセットをツールが読める形式で書いてるだけ。
0404デフォルトの名無しさん2010/12/19(日) 23:38:56
>>393
使いたくなけりゃxaml使わずにcsだけでも書けるぞ。
全力でコーディングしれ。
0405デフォルトの名無しさん2010/12/19(日) 23:56:49
C#でUI書くのなんてWinFormsやってるみたいでやだー
0406デフォルトの名無しさん2010/12/20(月) 00:03:07
ざむるの文法なんてほかの言語と比べて単純だしな。文法自体は覚えること少ない、
<Button Width="100"/>って書くのを
<Button>
<Button.Width>
100
</Button.Width>
・・・

とか、多少のことでいい。
0407デフォルトの名無しさん2010/12/20(月) 00:03:30
いくらMVVMで可能な限りXAMLで書こうと
テンプレートに対応したコントロールを作るときはC#でUI触りまくることになるよ
WinForms以上に汚くて泥臭いコーディングが待っている
0408デフォルトの名無しさん2010/12/20(月) 00:41:12
そういうのはコントロールの中に閉じ込められてるというのがポイント。
利用者側が泥臭さに触れなければ、実装側は多少泥臭くても。

でも、UserControlでないカスタムコントロール、もうちょっとXAMLで書けないものかねぇ。
0409デフォルトの名無しさん2010/12/20(月) 01:34:39
試してないけどUserControlならMVVMで思う存分書けるんでねーの?
CustomControlはもうちょっと何とかしてほしいねえ。
ユーザー側で好きにテンプレートいじれるようにしたいなら、
XAML側は単純でも動くようにしたいし、そうなると…
0410デフォルトの名無しさん2010/12/20(月) 02:14:26
なんだ。ようは、ただのモデルとビューで、
モデルはコードで実装したらビューはXMLで書けるってだけ?

それって、Qtでできるのとは違うの?
0411デフォルトの名無しさん2010/12/20(月) 02:47:51
Qtとかどうでもいいから(みんなの本音
0412デフォルトの名無しさん2010/12/20(月) 03:02:50
いやQtがVS2010に対応してくれさえすればQtを使うよ
WPFは決定的なものがないから
0413デフォルトの名無しさん2010/12/20(月) 03:11:05
C#とVS2010でQt使えたら考えてもいい
0414デフォルトの名無しさん2010/12/20(月) 03:29:51
>>410
今時どの環境でも似たような思想になってると思う。
Qt しかり、Flash の MXML+AS3 しかり、HTML+JS しかり。
それの .NET 版。

>>411
WPF 一択。

>>412
うーん、XAML 使えるのだけが WPF じゃないからなぁ。
MS の GUI 開発のノウハウが詰まってるよ、WPF と Silverlight には。
0415デフォルトの名無しさん2010/12/20(月) 03:46:05
具体的に
0416デフォルトの名無しさん2010/12/20(月) 04:01:49
使えば分かる
0417デフォルトの名無しさん2010/12/20(月) 04:09:54
説明できないんだ?
0418デフォルトの名無しさん2010/12/20(月) 04:12:30
GUI フレームワークはなぁ、それぞれが重たすぎて、一覧比較できるほど複数のフレームワークに精通するのはしんどく。

むしろ、そんなに Qt がいいというなら、「Qt ならこんなことできるよ」的コード出してほしい。
それに対して、「WPF ならこう」とかコメント付けるのならいける。
0419デフォルトの名無しさん2010/12/20(月) 04:28:04
Qt使ってる人が、Qt出汁にしてWPF叩きに利用したりするかね?
0420デフォルトの名無しさん2010/12/20(月) 05:00:51
とはいえ、QtにするかWPFにするかで悩んでいる企業も多いんじゃなかろうか。
0421デフォルトの名無しさん2010/12/20(月) 05:22:16
マジで?
Windows 環境で Qt ってそこまで競争力あったっけ?
Flash/Flex AIR が競合に上がることはあっても、Qt は検討対象として見たこともないけども。
0422デフォルトの名無しさん2010/12/20(月) 05:49:41
クロスプラットホームにする場合はQtも検討する場合があるだろうが、それならFlashかJava。
ネイティブでやらねばならないなんてAdobe、Appleぐらい大きなところだけ。
0423デフォルトの名無しさん2010/12/20(月) 06:02:48
俺なら WPF にする前に AIR を検討する

Qt > AIR > WPF or Winforms
※差はあまりない
0424デフォルトの名無しさん2010/12/20(月) 08:18:16
その三つの中で生き残るのはどれよ?
ちゃんと理由も一緒に書いてよ
0425デフォルトの名無しさん2010/12/20(月) 10:22:00
なんか伸びてると思ったら宗教論争か
0426デフォルトの名無しさん2010/12/20(月) 10:58:29
WPF終了
0427デフォルトの名無しさん2010/12/20(月) 13:51:10
WPFを技術的な面で批判できないから程度の低い荒らししかできない。
0428デフォルトの名無しさん2010/12/20(月) 13:53:26
なんか自分の悩みみたいなレスだな。
0429デフォルトの名無しさん2010/12/20(月) 14:21:39
Silverlightで事足りるってことになっちゃったからなあ。
0430デフォルトの名無しさん2010/12/20(月) 15:08:24
だからってWinFormsには戻りたくない
0431デフォルトの名無しさん2010/12/20(月) 15:17:20
批判してるのは使えない人だけだな。
0432デフォルトの名無しさん2010/12/20(月) 15:43:51
と、思いたい人だらけだな。
0433デフォルトの名無しさん2010/12/20(月) 15:53:12
だからQtを引き合いに出すような的外れの事をしてしまう。
0434デフォルトの名無しさん2010/12/24(金) 04:03:52
xamlとC#を
htmlとjavascriptのようにホームページでも使えたらいいのに

デスクトップアプリ、WEBサイト両対応の言語ってないのかしら
0435デフォルトの名無しさん2010/12/24(金) 04:13:19
Javaは?ActionScriptは?SilverLightは?
0436デフォルトの名無しさん2010/12/24(金) 09:01:06
JavaScript が VM 層の標準持たなかったのはガンだよなぁ。
0437デフォルトの名無しさん2010/12/24(金) 09:17:12
WPFやっててSilverlight知らない人がいるんだな
一般的な知名度はSilverlightの方がずっと上だと思うけど
0438デフォルトの名無しさん2010/12/24(金) 09:31:13
javascriptは、巨大なプログラムを作るようには設計されていないから。
0439デフォルトの名無しさん2010/12/24(金) 09:50:14
JavaScriptはオフにしましょう!
と言われてた10年前からえらく出世したもんさ。
0440デフォルトの名無しさん2010/12/24(金) 09:52:51
その設計時の見通しの甘さがガンというか。
作られた当時、今みたいな使われ方なんて想像もつかなかったし、誰も責めようはないんだけども。
無理な使われ方してる方がガンか。
0441デフォルトの名無しさん2010/12/24(金) 11:38:54
JavaScriptなんか本来Viewのコードビハインドどころか
XAMLでトリガやバインディング書いたりする程度のもんだろ
0442デフォルトの名無しさん2010/12/24(金) 13:36:44
Silverlightってjavascriptみたいな
htmlファイルに直書きでできるの?
CGIみたいに対応している鯖じゃないと無理なんじゃないの?
って思って全く勉強してなかった
0443デフォルトの名無しさん2010/12/24(金) 13:56:51
サーバーは関係ない。クライアントサイドで完結。Flashと一緒。
クライアントでプラグインのインストールは必要。でも.NETはいらんしサイズも極めて小さいしMacでも動く。
0444デフォルトの名無しさん2010/12/24(金) 14:02:38
あとSilverlightにはアプリケーションをデスクトップにインストールして
ブラウザの外で動かす機能がある。Flash + AIR + .NET(のサブセット, WPF含む)と思えばいい。
0445デフォルトの名無しさん2010/12/24(金) 14:10:00
ほうそれはいいね
でもXAMLみたいなものなんでしょ?
javascriptが使える意義って
何か計算せてプログラムを走らせることなんだけど
それもできるの?

ホームページ上に電卓を作って
入力された数字で計算

なんてことSivlerLightだけでできるの?
0446デフォルトの名無しさん2010/12/24(金) 14:12:03
>>445
>ホームページ上に電卓を作って
>入力された数字で計算
できる

ここでぐだぐだ言ってないでVWDダウンロードしてきて作ってみろよ
ただでできるし

それにSL+JSの連携も可能みたいだしな
0447デフォルトの名無しさん2010/12/24(金) 14:17:04
できるよ
C#からブラウザにJavaScriptのコードをevalさせることもできるしHTMLのDOM操作も自由自在。
マネージコードの中でやりたかったらIronRubyやIronPythonをアプリに組み込んでしまうことも可能。
数式を計算するだけだったら数式評価のC#で書かれたサンプルなんかたくさん落ちてるから
そういうのを使ってもいいし。
0448デフォルトの名無しさん2010/12/24(金) 15:16:57
XAMLは HTML & CSS & JavaScript(を使ったDHTML) をXMLで定義できるようにした物。
コードを書かなくてもXAMLだけでDHTMLみたいな動的なページが作れる。

計算にはデスクトップアプリで一般的なC#やVB.NETを使う。
実行時にネイティブコードにコンパイルされる(JIT)ので動作も速い。

さらにWindows向けの開発環境で独占的なシェアを持つVisual Studioが使える。
無料版のVWD(Visual Web Developer 2010 Express)も提供されているため無料で開発できる。(当然、商用利用もOK)

これに諸々の機能が乗っかったものがSilverlight。

普通はHTMLに貼り付けてFlashみたいにして使うけど、
ブラウザ外実行すればHTMLに張られたSilverlightが"そのまま"デスクトップアプリになる。
クリック3回でインストール/アンインストールの超お手軽配布。(右クリック→インストールする→インストールしていい?OKの3回)
0449デフォルトの名無しさん2010/12/24(金) 17:23:02
じゃあ、ちょっとした小物ツールはSilverLightの方がお手軽ってことか
WPFだといきなりexeファイル実行しろって感じだけど
これなら安心感があるな
0450デフォルトの名無しさん2010/12/24(金) 21:01:39
更に言えば、WPFでもSilverlightでも無いLooseXAMLなんてのも有る。
.NET Frameworkがインストールされてる必要は有るが
.xamlファイルを、IEでそのまま閲覧する事が出来る。

これって、SEO的にはどうなんだろうね。
クローラーでxaml内のテキストを拾ってくれたりはしないんだろうか。
0451デフォルトの名無しさん2010/12/24(金) 21:23:39
なんでお前らいっつも宗教論争してるの?
0452デフォルトの名無しさん2010/12/24(金) 21:24:26
>>451
したいのが2chに集まってくる。
0453デフォルトの名無しさん2010/12/24(金) 21:27:37
>>450
loose xamlはwpfだろ。
0454デフォルトの名無しさん2010/12/24(金) 21:31:47
技術的にはwpfだわな
exeでもxbapでも無いだけで
0455デフォルトの名無しさん2010/12/24(金) 23:41:15
SilverlightとFlashなら宗教論争だがWPFとは親子げんかみたいなもの
0456デフォルトの名無しさん2010/12/25(土) 01:45:39
全然喧嘩もしてないよ。
にこやかな話し合いだよ。
0457デフォルトの名無しさん2010/12/25(土) 02:18:45
南斗鳳凰拳的な伝承の儀だよ。
全てを伝えた後で WPF 死ぬ。
全てを伝えきらないうちは生きる。
0458デフォルトの名無しさん2010/12/26(日) 23:19:28
モデルであるIList<Customer> をViewModelのプロパティで
ObservableCollection<CustomerViewModel>としてUIにバインドしようと思うと、
new ObservableCollection<略>(customers.Select(c => new CustomerViewModel(c)))
とかやって自分で変換するの?
0459デフォルトの名無しさん2010/12/26(日) 23:36:52
そうやっているが、モデルのアイテムの追加削除の時とか泣きたくなるなw

可能な時は限られているけどこれを回避できることもある。
Modelのリストを直接Viewに公開してしまって、ViewModel的な処理が必要な時は
そのコレクションを管理しているViewModelクラス側で処理すればおk。
0460デフォルトの名無しさん2010/12/27(月) 00:21:24
適当なラッパー作って使いまわせばおk
自作が面倒ならObservableListでググるとMs-PLで丁度いいやつが見つかる。
0461デフォルトの名無しさん2010/12/27(月) 01:53:28
WPF世界チャンピオン
0462デフォルトの名無しさん2010/12/27(月) 13:15:48
亀田はんやないか
0463デフォルトの名無しさん2010/12/27(月) 15:46:33
マウスの戻るボタンにMouseBindingを関連づける方法ってありますか?
MouseAction列挙体見ると、右、左、真ん中ボタンとホイールしかないのですが。
■ このスレッドは過去ログ倉庫に格納されています