WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part8
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/12/05(日) 22:08:33.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/
0448デフォルトの名無しさん
2010/12/24(金) 15:16:57コードを書かなくても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:02WPFだといきなりexeファイル実行しろって感じだけど
これなら安心感があるな
0450デフォルトの名無しさん
2010/12/24(金) 21:01:39.NET Frameworkがインストールされてる必要は有るが
.xamlファイルを、IEでそのまま閲覧する事が出来る。
これって、SEO的にはどうなんだろうね。
クローラーでxaml内のテキストを拾ってくれたりはしないんだろうか。
0451デフォルトの名無しさん
2010/12/24(金) 21:23:390452デフォルトの名無しさん
2010/12/24(金) 21:24:26したいのが2chに集まってくる。
0453デフォルトの名無しさん
2010/12/24(金) 21:27:37loose xamlはwpfだろ。
0454デフォルトの名無しさん
2010/12/24(金) 21:31:47exeでもxbapでも無いだけで
0455デフォルトの名無しさん
2010/12/24(金) 23:41:150456デフォルトの名無しさん
2010/12/25(土) 01:45:39にこやかな話し合いだよ。
0457デフォルトの名無しさん
2010/12/25(土) 02:18:45全てを伝えた後で WPF 死ぬ。
全てを伝えきらないうちは生きる。
0458デフォルトの名無しさん
2010/12/26(日) 23:19:28ObservableCollection<CustomerViewModel>としてUIにバインドしようと思うと、
new ObservableCollection<略>(customers.Select(c => new CustomerViewModel(c)))
とかやって自分で変換するの?
0459デフォルトの名無しさん
2010/12/26(日) 23:36:52可能な時は限られているけどこれを回避できることもある。
Modelのリストを直接Viewに公開してしまって、ViewModel的な処理が必要な時は
そのコレクションを管理しているViewModelクラス側で処理すればおk。
0460デフォルトの名無しさん
2010/12/27(月) 00:21:24自作が面倒ならObservableListでググるとMs-PLで丁度いいやつが見つかる。
0461デフォルトの名無しさん
2010/12/27(月) 01:53:280462デフォルトの名無しさん
2010/12/27(月) 13:15:480463デフォルトの名無しさん
2010/12/27(月) 15:46:33MouseAction列挙体見ると、右、左、真ん中ボタンとホイールしかないのですが。
0464デフォルトの名無しさん
2010/12/27(月) 15:49:17基本はこれでこれ以上はマウス側の独自拡張じゃないの?
増えたボタンも結局はキーボードのショートカットキーのパターンを
送り出してるとかそんなんだよね
0465デフォルトの名無しさん
2010/12/27(月) 15:58:33MouseAction と XButton1 で検索するといくつか方法が見つかるようだ
0466459
2010/12/27(月) 17:07:37ありがとう
どうせ小規模だしモデルは元々全部INotifyPropertyChanged/ObservableCollectionだし
ビューモデル固有の操作もほとんど必要ないのでMVVM無視して
全部 class ViewModel { public Model Model { get; set; } }
でいい気がしてきた
0467デフォルトの名無しさん
2010/12/28(火) 08:10:040468デフォルトの名無しさん
2010/12/28(火) 08:23:18相当使えないな!
バカウケ
0469デフォルトの名無しさん
2010/12/28(火) 09:10:490470デフォルトの名無しさん
2010/12/28(火) 11:19:52選択、マウスオーバーするとの説明が出たのですが
WPFでは出ません。仕様でしょうか??
0471デフォルトの名無しさん
2010/12/28(火) 11:25:140472デフォルトの名無しさん
2010/12/28(火) 12:32:470473デフォルトの名無しさん
2010/12/28(火) 12:41:06今まで使い物にならないと思い込んでて放置してたけど意外とまともに使えるね
d:DesignProperties.DataContext要素でダミーのデータを定義してやれば
ちゃんとデザイナからバインドを設定できるし結果をプレビューしてくれる
0474デフォルトの名無しさん
2010/12/28(火) 13:09:590475デフォルトの名無しさん
2010/12/28(火) 15:13:530476デフォルトの名無しさん
2010/12/28(火) 16:21:340477デフォルトの名無しさん
2010/12/28(火) 17:10:290478デフォルトの名無しさん
2010/12/28(火) 17:11:43デザイナは貧弱だけど
0479デフォルトの名無しさん
2010/12/28(火) 19:36:120480デフォルトの名無しさん
2010/12/28(火) 21:39:34CollectionViewSource.GetDefaultViewつかえ
0481デフォルトの名無しさん
2010/12/28(火) 23:01:53Silverlightとの相互運用とか、SL→WPFの移植とか
0482デフォルトの名無しさん
2010/12/30(木) 01:14:02WPF+MVVMバターンでの開発になるらしいです。WPFは簡単なツール作成でちょ
こっと触ったことがある程度。疎結合なデザインパターンは面白そうだけど、MSDN
のMVVMに関する記事読んでも今ひとつピンとこないんですが、年末年始で勉強する
のにいいところ、どっかありませんか?
0483305 ◆Jzt/EX0TGY8T
2010/12/30(木) 04:14:08http://www.atmarkit.co.jp/fdotnet/chushin/introwpf_06/introwpf_06_03.html
[WPF][C#]Model View ViewModelパターンでハローワールド
http://blogs.wankuma.com/kazuki/archive/2009/02/23/168586.aspx
WPF のための MODEL-VIEW-VIEWMODEL (MVVM) デザイン パターン
http://msdn.microsoft.com/ja-jp/magazine/dd419663.aspx
WPFアプリケーションに最適なアーキテクチャ「M-V-VM」とは | グレープシティ株式会社
http://www.grapecity.com/japan/events/handouts/mvvm.htm
【WPF】【Silverlight】 MVVMは各人に合ったレベルで実装すれば良いのではないかと思う
http://blogs.wankuma.com/trapemiya/archive/2009/10/14/182101.aspx
俺がMVVM理解するのに参考にしたサイト
特にリンク先のpdfが参考になった
0484デフォルトの名無しさん
2010/12/30(木) 11:12:42サンクス!!
0485デフォルトの名無しさん
2010/12/30(木) 12:16:07なんかデザイナ向けというよりVSのデザイナのそのまま兄貴分って感じだなあ
これくらいならVSに組み込めばいいのに
VSでスタイルとテンプレートの編集さえ出来れば要らないと思う
0486デフォルトの名無しさん
2010/12/30(木) 12:22:110487デフォルトの名無しさん
2010/12/30(木) 12:28:38他にもパスでお絵描したりとか、そういう完全にデザインな部分だけに
特化したツールとして分離したほうがいいんじゃないかと思う
ビヘイビアとか完全にプログラミングだし、ごっちゃごちゃな印象
0488デフォルトの名無しさん
2010/12/30(木) 12:40:07なかったら誰か作って!
アフィ貼りまくってくれていいから
0489デフォルトの名無しさん
2010/12/30(木) 12:53:29の間違いじゃね?
0490デフォルトの名無しさん
2010/12/30(木) 14:44:15Quaternion xz = new Quaternion(new Vector3D(1, 0, 1), degreexz);
A.Rotate(xz);
回転角degreexz[°]でXZ軸でAを回転させたいのですが、どこがおかしいでしょうか。ご指南お願いします。
0491デフォルトの名無しさん
2010/12/30(木) 14:47:150492デフォルトの名無しさん
2010/12/30(木) 20:40:08Silverlighgtスレかと思ったら違うようだし、
他にXAML/WPfの話題のスレってあったっけ?
0493デフォルトの名無しさん
2010/12/30(木) 21:21:21>481 名前: デフォルトの名無しさん [sage] 投稿日: 2010/12/30(木) 14:45:16
>回転が出来ません!
>Quaternion xz = new Quaternion(new Vector3D(1, 0, 1), degreexz);
>A.Rotate(xz);
>回転角degreexz[°]でXZ軸でAを回転させたいのですが、どこがおかしいでしょうか。ご指南お願いします。
0494デフォルトの名無しさん
2010/12/31(金) 10:27:000495デフォルトの名無しさん
2010/12/31(金) 10:46:32生産性が良くなるとも思えんし。UIとロジックの分離なんて設計次第だろ。
0496デフォルトの名無しさん
2010/12/31(金) 10:51:080497デフォルトの名無しさん
2010/12/31(金) 11:21:200498デフォルトの名無しさん
2010/12/31(金) 11:25:34自由度が高くなっても必要としていない人には関係ない。
0499デフォルトの名無しさん
2010/12/31(金) 13:30:340500デフォルトの名無しさん
2010/12/31(金) 13:45:01めんどくさいから全部でいいよ
0501デフォルトの名無しさん
2010/12/31(金) 13:55:12DirectX使えば普通にできるが?
0502デフォルトの名無しさん
2010/12/31(金) 13:57:400503デフォルトの名無しさん
2010/12/31(金) 14:36:540504デフォルトの名無しさん
2010/12/31(金) 14:43:010505デフォルトの名無しさん
2010/12/31(金) 15:34:090506デフォルトの名無しさん
2010/12/31(金) 16:05:550507デフォルトの名無しさん
2010/12/31(金) 16:11:28失礼しました
0508デフォルトの名無しさん
2010/12/31(金) 21:09:43ボタンの中にチェックボックスを入れてそれをマルチ選択可能なリストボックスに入れるとか
アホなことがし放題。フリーダム!!
もはやどう動くのか想像もつかない状態になるがなw
0509デフォルトの名無しさん
2011/01/03(月) 08:38:52まだ未完成じゃないか(シルバーライトバージョンはちゃんとしているみたい)
0510デフォルトの名無しさん
2011/01/03(月) 10:25:25気に入らなかったらWinFormsのWebBrowserをWindowsFormsHostで使えばいい
どっちを使おうが空域問題は避けられなくて
SilverlightのようにWebページをパズルにしたりはできない
0511デフォルトの名無しさん
2011/01/03(月) 21:12:30中央に固定位置で表示させるのはTextBlockを2つ(Value値と"%"で2つ)使ってできたのですが
ProgressBar.Widthが変化したときにも自動で中央にする方法が分かりません。
お願いします。
0512デフォルトの名無しさん
2011/01/03(月) 21:52:09?
何をお願いしたいのか微塵たりとも分からないし、情報が足りなすぎるが
適当なコントロールにHorizontalAlignmentを設定すればいいじゃないか。
あとTextBlockはネストできるし、BindにはStringFormatを指定できる。
0513デフォルトの名無しさん
2011/01/04(火) 23:36:07ViewModelやModelのプロパティ更新時のエラーはIDataErrorInfoを使用してViewに通知するのはいろんなhpを見て分かったのですが
ICommand.Executeでのエラー通知はどうやるのがMVVMパターンなのでしょうか・・・
今のところViewModelにCommandエラー通知専用のプロパティを作ってバインドしてViewに知らせています
0514デフォルトの名無しさん
2011/01/04(火) 23:40:33通知というよりViewModelにHasErrorとかErrorMessageとかプロパティ定義してバインドするだけ
ダイアログ出したかったらInteractionRequestでググる
0515デフォルトの名無しさん
2011/01/05(水) 00:31:16英語だけどこれ以上の情報はないと思う
0516デフォルトの名無しさん
2011/01/05(水) 18:26:38お勧めのサイトがあったら是非とも教えて欲しい
0517デフォルトの名無しさん
2011/01/05(水) 19:03:020518デフォルトの名無しさん
2011/01/05(水) 19:15:35の中のPrism4.chm
0519デフォルトの名無しさん
2011/01/05(水) 19:54:01トン
0520デフォルトの名無しさん
2011/01/05(水) 20:10:580521デフォルトの名無しさん
2011/01/06(木) 02:32:080522デフォルトの名無しさん
2011/01/06(木) 02:40:21WPF が終わるのは、WPF のほぼ全機能が Silverlight に移った時だと思うんだけど。
0523デフォルトの名無しさん
2011/01/06(木) 09:02:39最初からSiliverlight一本でやってたほうがよかったんじゃないの?
二本立てにすることにメリットあったのかな?
0524デフォルトの名無しさん
2011/01/06(木) 09:06:13色々あるからしょうがない。
例えば、WPF 自身にも、じゃあ、Forms なんて出すなよって思うわけだけど
WPF が完成するまで .NET Framework のリリース遅らせれるかって言ったら、
そんなことしてたら10年近く VS の新品出なかったのよ。
とりあえず Win32 API をラップしただけの Forms 必要だったでしょ。
0525デフォルトの名無しさん
2011/01/06(木) 15:09:54Window.xaml.csにTextBox_KeyDown(object sender, KeyEventArgs e) が作られますが
これをWindow.xaml.csとは別のcsファイルに書く方法ってありませんか
interactivity.dllのEventTriggerをつかうとKeyDownイベントでCommandを呼べるようにはできましたが
CommandParameterにKeyEventArgsを渡す方法が分かりませんでした
0526デフォルトの名無しさん
2011/01/06(木) 16:19:01System.Windows.Interactivity.Behavior<UIElement>あたりから継承
0527デフォルトの名無しさん
2011/01/06(木) 16:47:20ニュー速なんだよあれw
0528デフォルトの名無しさん
2011/01/06(木) 17:20:54ありがとう
Blendからもポトペタでできるようになりました
0529デフォルトの名無しさん
2011/01/06(木) 23:51:32WPFは.Netネイティブだから表示遅いし重いんだっけ?
0530デフォルトの名無しさん
2011/01/06(木) 23:56:380531デフォルトの名無しさん
2011/01/06(木) 23:56:560532デフォルトの名無しさん
2011/01/06(木) 23:59:22WPFよりもかなり消極的でキャッシュも控えめで描画面積が広くなると目に見えて遅くなる。
WPFはフレームワーク自体はC#で書かれてるけど描画はネイティブだよ。
0533デフォルトの名無しさん
2011/01/07(金) 00:17:110534デフォルトの名無しさん
2011/01/07(金) 00:27:58ここにはSilverlightのが表示早いみたいに書かれてるけど。
0535デフォルトの名無しさん
2011/01/07(金) 00:35:43DataGridはもともとSilverlight向けに作られたのでWPFでの調整が十分にできてないだけ。
0536デフォルトの名無しさん
2011/01/07(金) 23:20:31描画に関しては、まだ比較計測していないが
ループ処理は、WPFの方が10倍近く早かった。
0537デフォルトの名無しさん
2011/01/07(金) 23:37:030538デフォルトの名無しさん
2011/01/08(土) 00:03:51for文とかwhile文とか。
0539デフォルトの名無しさん
2011/01/08(土) 00:10:30.NET FrameworkのCLRとSilverlightのCLRはほぼ同じもの
若干Silverlightの方が最適化が控えめらしいが10倍はどう考えてもありえない
0540デフォルトの名無しさん
2011/01/08(土) 00:19:010541デフォルトの名無しさん
2011/01/08(土) 00:34:27文字列連結は誤差範囲、単純なループ+数値の加算だと1〜2倍くらい
0542デフォルトの名無しさん
2011/01/08(土) 01:07:00ガベコレの性能が全然違うんで、
ループの奥でインスタンス生成とかしてるとパフォーマンス10倍変わる可能性ある。
Silverlight の CLR は優秀だったはず。
もしかすると、Silverlight for Windows Phone 7 の話だとすると、
WP7 は Compact Framework ベースなので、確かに遅そう。
0543デフォルトの名無しさん
2011/01/08(土) 12:03:50private void button1_Click(object sender, RoutedEventArgs e)
{
DateTime timer = new DateTime();
timer = DateTime.Now;
for (uint i = 0u; i < 4294967295u; i++) ;
MessageBox.Show((DateTime.Now - timer).ToString());
}
コードはこれで良い?
(xamlにボタン1個置いて、ボタン押したら計測開始の想定で)
0544デフォルトの名無しさん
2011/01/08(土) 12:24:510545543
2011/01/08(土) 12:27:50[ Ctrl ] + [ F5 ] で実行
1回目 : 1.3660000 (秒)
2回目 : 1.3610000 (秒)
3回目 : 1.3620000 (秒)
[ F5 ] で実行
1回目 : 10.2020000 (秒)
2回目 : 10.1960000 (秒)
3回目 : 10.1970000 (秒)
Visual Web Developer 2010 Express
Silverlight 4.0.51204.0
OOB実行 (ブラウザで変わるとは思わないけど、念の為)
[ Ctrl ] + [ F5 ] で実行
1回目 : 10.7090000 (秒)
2回目 : 10.6980000 (秒)
3回目 : 10.7320000 (秒)
[ F5 ] で実行
1回目 : 10.7040000 (秒)
2回目 : 10.6950000 (秒)
3回目 : 10.7140000 (秒)
OSはWindows Vista + SP2 (x86)
CPUはIntel Core2 Extreme X9650 @3.00GHz
0546デフォルトの名無しさん
2011/01/08(土) 12:40:52こっちだと[Ctrl]+[F5]で両方2秒前後で差は無かったよ
デバッグ有効だと両方9秒程度
VWD2010, Silverlight 4.0.51204.0
XPSP3(x86), PenD 3.00GHz
生成されたテストページを直接ブラウザで開いたらどうなる?
0547543
2011/01/08(土) 12:47:18>生成されたテストページを直接ブラウザで
それもやってみたんだけど、やっぱりSL4だと10秒以上掛かった。
IE8とGoogle Chromeで、1回ずつ試行。
こっちの環境が何かおかしいのかな。
0548デフォルトの名無しさん
2011/01/08(土) 13:35:13何10ヶも繰り返していると OutOfMemoryException が発生してしまいます。
海外サイトでも取り上げられていて、同じように実装しているのですがどうしても
発生してしまいます。
何か問題ありますでしょうか?
[DllImport("gdi32.dll")]
public static extern bool DeleteObject(IntPtr hObject);
string[] srcFiles = Directory.GetFiles(srcFolder, "*.jpg");
Array.Sort(srcFiles);
if (!Directory.Exists(dstFolder))
Directory.CreateDirectory(dstFolder);
foreach (string name in srcFiles)
{
using (Bitmap srcImage = new Bitmap(name))
{
string dstName = Path.Combine(dstFolder, Path.GetFileName(name));
IntPtr ptr = srcImage.GetHbitmap();
BitmapSource bs = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(
ptr, IntPtr.Zero, Int32Rect.Empty,BitmapSizeOptions.FromEmptyOptions());
DeleteObject(ptr);
bs = null;
GC.Collect();
}
}
■ このスレッドは過去ログ倉庫に格納されています