WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part7
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/08/22(日) 21:11:53Windows Presentation Frameworkについて語るスレ。
パワフルで柔軟すぎるのが敗因か? 正直ついていけないよね…。
Visual Studio 2010
ttp://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
関連スレ
Microsoft Silverlight その6
ttp://pc12.2ch.net/test/read.cgi/tech/1271580489/
過去スレ
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part6
http://hibari.2ch.net/test/read.cgi/tech/1274423236/
WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
http://pc12.2ch.net/test/read.cgi/tech/1261879110/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
ttp://pc12.2ch.net/test/read.cgi/tech/1245384489/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング Part3
ttp://pc12.2ch.net/test/read.cgi/tech/1231506876/
WPF(XAML,XBAP,.NET3.5)GUIプログラミング
ttp://pc11.2ch.net/test/read.cgi/tech/1211453941/
【新GUI FW】WPF(XAML,AVALON,.NET3.0)【重い?】
ttp://pc11.2ch.net/test/read.cgi/tech/1162950198/
コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/
0376デフォルトの名無しさん
2010/11/05(金) 22:25:24なんで disable になってるのかパッと見てわからない場合は disable にせず、
実行されたときにアラート出す方がいいらしい。
でないとユーザーは「この機能は使えないものなんだ」って思うとかで。
0377305
2010/11/05(金) 23:05:40わかりやすいんだろうけど、おれのレベルだと
何を言っているのかわからない
俺はただ、追加ボタンがクリックできない状態になっている
テキスト入力しても出来ない状態
だからずっとできる状態にしてほしいの
どこをどういじればそういう風になるのかもわからないレベルなの
初心が遠く昔の人って、知識がある前提で話すからほんとわかりにくい
0378デフォルトの名無しさん
2010/11/05(金) 23:09:02あっ、ちなみに、>>316 と >>317 は別人よ。
あれじゃわかんないと思ってコード書いた。
余裕あったら説明コメントも入れたと思う。
0379デフォルトの名無しさん
2010/11/05(金) 23:14:01平伏せ下郎
0380305
2010/11/05(金) 23:21:49なんだ別人かー
わからないよね?>>316の説明だと
一応これに近いことなのかなと思ってみていたけどよくわからなかった
●コレクション・オブジェクトへのバインド
http://www.atmarkit.co.jp/fdotnet/vblab/uiframework_02/uiframework_02_04.html
>A. 自分でやること
自分?何が自分?おれのこと?ユーザー?
>B. 勝手にされること
誰が勝手にするの?
>ObservableCollectionはデータが追加されたことをItemsControlに通知する
このやり方がわからないんですけど。
そもそも何の説明?
もうまったくわかんなかった
例えると、ため口の説明を同じ内容でただ敬語で説明されただけって感じ。
>>317は>>316の説明の通りにしたソースだよね?
いつかわかる日が来た時のために永久保存しておきます
0381デフォルトの名無しさん
2010/11/05(金) 23:24:39落ち着け
0382305
2010/11/05(金) 23:27:19初「コピペって何?」
上「クリップボードを中継してデータを写す作業」
初「クリップ・・何それ?」
上「クリップボードにコピーしたデータを保存して、適当な場所にペーストすることだよ」
初「いや、だからクリップってなに?コピーって?ペーストって?それってコピペの説明?」
別の上「Ctrl+C、Ctrl+Vでできる」
初「え?それってどういう意味?」(←キーボードのキーだということすらわかっていない)
今こういうのを体験した気がするわ
0383デフォルトの名無しさん
2010/11/05(金) 23:28:07すまん、正直 >>316 は最後まで読んでない。
普通に、WPF の基本ラインで実装しただけ。
まあ、WPF に慣れた人でも、現状は Forms 時代よりはだいぶ better にはなってるけど
その代償にめんどくささも幾分かあって、まだ過渡期って認識かも。
0384デフォルトの名無しさん
2010/11/06(土) 00:13:00あるある
0385305
2010/11/06(土) 00:22:25これってさプログラマにとって根幹にかかわることだと思うんだよね
自分で理解できればそれでいいってソフトを作っている人はこれでいいだろうけど
初心者でも直感的に操作できるソフトを作るというのは難しそう
現に>>317はtabでフォーカス移動しなければ使えなかった
これって初心者からしたらバグでしかない
結局機能はしょぼいけど、初心者が作った初心者のためのソフトが使いやすかったりする
上級者で初心者の気持ちもわかる人って解説サイトでも少ないよねー
0386デフォルトの名無しさん
2010/11/06(土) 00:24:58地道にいけ
0387デフォルトの名無しさん
2010/11/06(土) 00:25:52となると、「UX デザインが専門であってプログラミング詳しくない」って人がやれなきゃ意味ないのよね。
そこは WPF は「分業を推し進める」って方向に舵を切ってるわけだけども。
XAML 側は UX デザイナーが Blend とか使って作る、
プログラマーはビューには触れず、ビューモデルを作るっていう。
0388デフォルトの名無しさん
2010/11/06(土) 00:26:01拡張性0、ボタン大量、etc...
アラアラと思う…
0389デフォルトの名無しさん
2010/11/06(土) 00:27:25Binding の記述削ってたんだけど。
その結果、バグだと言われて、
一方、「C# 側がコード量多い」って言われたのはさすがにちょっとへこむ。
0390305
2010/11/06(土) 00:33:47{
Button button1 = new Button();
button1.Content = textBox1.Text;
this.wrapPanel1.Children.Add(button1);
}
だってさ、初心者でもたったこれだけでできることを
上級者がXAMLでやると、デリゲートだとか、バインドがあっちこっちにあったりして
どうしてそうなっちゃうの?って感じ
0391デフォルトの名無しさん
2010/11/06(土) 00:37:01いいのよ、別に、ほんとにそれだけの要件ならそれで。
0392デフォルトの名無しさん
2010/11/06(土) 00:40:42というかさ、winformsでもbind使ってたろ?
使ってなかったのか?もしかして…
0393デフォルトの名無しさん
2010/11/06(土) 00:46:421日でWPF使いに変身したというのに
0394デフォルトの名無しさん
2010/11/06(土) 00:47:10そういうことだ。
多くの人が使ってないんだよ、bind。
で、不意に規模が膨らんじゃってからギャップが越えられなくなる。
0395305
2010/11/06(土) 00:47:59使ったこと無いよ
ソースが変わったら、ターゲットのプロパティを書き換えるコードを書いてた
イベントハンドラ大量、更新させるためのコード
結果、ある程度の規模になると、更新一部し忘れたり、どこで更新されたかわからなくなったり
イベントハンドラが大量で一体どこで何をしているのかわからなくなった
だからそんなことにならないような簡単なユーティリティだけ作ることに
例えば、空フォルダを見つけて削除や、削除したファイルをリストアップするだけなど
ファイラーから実行できるような手軽なものを作っていた
0397デフォルトの名無しさん
2010/11/06(土) 00:51:54WinFormsでもさ…
UserControlでView作ってBindで繋げて、振る舞いはインターフェイスで定義してってやるだろ…
その辺がもうちょい賢くなって便利になったのがWPFなんだし…
0398デフォルトの名無しさん
2010/11/06(土) 00:54:200399デフォルトの名無しさん
2010/11/06(土) 00:54:59もうPythonとかスクリプト言語使えば?
君はそのほうがよっぽど幸せになれると思うよ
0400305
2010/11/06(土) 00:57:18使えるなら使うさ
俺は基本どぼんに乗っているコードをコピペすることしかできないさ
2001C# 発売当日に魔が差して買ったおれがさ
0402デフォルトの名無しさん
2010/11/06(土) 00:59:51そうなると、古い、現代的には問題が明らかになってるコードって、人類の抱える負債だなぁ。
0403デフォルトの名無しさん
2010/11/06(土) 01:00:12そういうのはコマンドラインで使えた方がどう考えても便利です
0404デフォルトの名無しさん
2010/11/06(土) 01:00:31かっこよくねぇよww
かっこいい人が作った GUI がかっこいいだけだよ。
0405デフォルトの名無しさん
2010/11/06(土) 01:03:31うーむ…
0406デフォルトの名無しさん
2010/11/06(土) 01:04:14まぁ宗教議論よりはいいか
0407305
2010/11/06(土) 01:06:09文脈理解しろよ
今作ろうとしているのは動画ソフトのフロントエンド的なものを作ろうとしているの
多分完成したら新しい時代がくる
アイデアだけはすばらしいんだよおれって
そこらのフリーソフトを超える使い易いソフトをいくつも妄想してきたが
プログラミングができない
0408デフォルトの名無しさん
2010/11/06(土) 01:09:27なんか急に口調変わったぞw騙り?w
0409デフォルトの名無しさん
2010/11/06(土) 01:12:29名前は違えどやってる事は一緒だし
0410デフォルトの名無しさん
2010/11/06(土) 01:20:140411デフォルトの名無しさん
2010/11/06(土) 02:53:26肝心のサポートが話にならないチープさなところ
こう書くと老害が「HTMLだって手書きでやってきた」とかほざくんだがナンセンス
今時のCSS&JavaScriptごちゃごちゃに入り交じってる案件メモ帳でやってみろってんだ
0412デフォルトの名無しさん
2010/11/06(土) 02:57:54windowsFormで作る程度のならVisualStudioでドラッグ&ドロップで行けるだろ
0413デフォルトの名無しさん
2010/11/06(土) 04:02:01こういうの見ると
あぁ、この人ってWPF使った事ないのに批判してるんだな と哀れに思うわ。
実際は>>412なのにまるで分かってない。
0414デフォルトの名無しさん
2010/11/06(土) 04:04:14反論があるなら根拠を述べよ
0415デフォルトの名無しさん
2010/11/06(土) 04:05:49日本語がわからないとは
0416デフォルトの名無しさん
2010/11/06(土) 07:30:20どうせVB6のクラサバみたいなのしか作ったこと無いくせにw
0417デフォルトの名無しさん
2010/11/06(土) 08:11:04GridViewの列の並びや幅などを同期させたいのですが、どのようにすればいいのでしょう
今はページを切り替える際に、列を作り直してるんですが、非常に無駄なことをしている気がします
GridView.Columnsあたりに、共通のソースをバインディングするとかできませんかね
0418デフォルトの名無しさん
2010/11/06(土) 08:46:46まあ、しゃあない。
Adobe 製品とか見てみなって。
ビジュアルデザイン系のツールみんなあんな感じだから。
0419デフォルトの名無しさん
2010/11/06(土) 09:17:30いいんだよ雑魚グラマが増えて仕事が尻拭い中心になったんだ
ここらで敷居をあげて少し淘汰されたほうがいい
0420デフォルトの名無しさん
2010/11/06(土) 11:08:22その程度のモンをわざわざWPFで作る意味ってなんだよwwwww
不自由環境に快感を見出すマゾなのか?
0421デフォルトの名無しさん
2010/11/06(土) 11:11:12デザイナでコントロール貼り付けてプロパティ弄ってダブルクリックしてイベントハンドラ書くだけ
WinFormsと何が違う?
0423デフォルトの名無しさん
2010/11/06(土) 11:18:440424305
2010/11/06(土) 14:10:31デリゲートもインターフェースもやったことなかったが
一晩かけていろいろ調べてなんとなくわかった
独自のコマンドを作るにはICommandインターフェースを使ったクラスを自作しないといけなくて
そのためにDelegateCommandクラスが作られていて、普通はここに実行する内容を書けばいいはずだけど
汎用的に使えるように、具体的な実行内容はViewModelでして、DelegateCommandクラスでは
デリゲートを宣言して実行メソッドを呼び出しているって感じかな?
もしくは、コンストラクタの引数にメソッドを変数みたいに渡したいからDelegateを使っているのか?
そこらへんはよくわからないが、なんとなくやっていることはわかった気がする
これって、メニューやボタンがクリックされたらどうするかというイベントハンドラを大量に書かないためにと、
別にボタンを作って作成ボタンとは違った振る舞いの独自のコマンドを作るときも
DelegateCommandクラスを利用することで、無駄なコードを書かないようにするため
こういうややこしいことをしているのは、こういう理由だからって理解でOK?
0425305
2010/11/06(土) 14:14:09>これって、メニューやボタンがクリックされたらどうするかというイベントハンドラを大量に書かないためにと、
ボタンを作成するために、メニューやボタンのイベントハンドラを大量に書かないためにと
0426デフォルトの名無しさん
2010/11/06(土) 14:15:40ViewModelをViewに依存させないため。
イベントハンドラを追加するときってイベントを受ける側で送る側にイベントハンドラを登録するので
ViewModelの中でイベントハンドラをViewに結び付けるとViewModelがViewに依存してしまう。
そこで逆にViewModelでは「俺はこれだけのコマンドをサポートしている。勝手に呼び出せ」という風に
コマンドを公開するだけにして、コマンドを具体的なイベントに結び付けるのはView側で行う。
0427デフォルトの名無しさん
2010/11/06(土) 14:38:49ViewModelはViewのシャドウなわけである程度依存するのは仕方ないのでは?
例えば選択状態をViewModelが知っているだけでも、
ViewModelはViewが選択機能を持つことを知っていることになる。
MVVMのそもそもの動機(自動回帰テスト、スキンに依存しない構造)を考えると、
ViewModelはViewの機能には依存しても、Viewの"インスタンスに"依存しない、が正しい気がする。
0428305
2010/11/06(土) 15:02:44依存させないのは
例えばボタンクリックで作成だったのを変更して
メニューからのみボタンを作成にすることにしたときに
イベントハンドラだと書き換えたりしなければいけないから
GUIの変更がしづらくなる
だからコマンドバインディングにコマンドを登録だけして
どのコマンドをどの時点で呼ぶかは気にすることは無いという感じかな
0429デフォルトの名無しさん
2010/11/06(土) 15:03:31なりすまし乙
実に程度が知れるな
0430デフォルトの名無しさん
2010/11/06(土) 15:07:180431デフォルトの名無しさん
2010/11/06(土) 15:08:57ただメソッドだとXAMLにちょろっと書くだけで自動的に呼び出されるというわけにはいかないので
ちょっと回りくどい仕組みになってるだけ
0432デフォルトの名無しさん
2010/11/06(土) 15:19:45ViewがViewModelの用意する機能を使うかどうかは自由なので、
ViewModelがViewを知っているとはいえないんじゃないかな。
WPFでコマンドっていうなんか回りくどいのを推奨してるのは、
XAMLがプロパティと相性のいい言語だからということと、
実行の可否(CanExecute)を持たせることができるってことくらいかな。
ObjectDataProvider使えばXAMLで直接メソッドを指定することもできるはず(未確認)
だけどこれは記述が汚くなるよね。
0433305
2010/11/06(土) 15:22:40依存させたくないだけなら、DelegateCommandクラスでViewModelのExecuteの内容を書けばいいですよね?
依存させないようにするにはRoutedCommandをコマンドバインディングに登録するだけでいいのですから
ViewModel内にコマンドの実行内容Executedを書くということは、
本質は違うけど、WinformsでいうとイベントハンドラをForm1に大量に書いていくのと同じような気がするんだけど?
コマンドはコマンドで分けた方がよくないですか?
0434デフォルトの名無しさん
2010/11/06(土) 15:30:04ViewModelとコマンドを分けても見づらくなるだけで意味ないだろ。
ViewとViewModelを分けるのは主にViewModelの単体テストやViewの変更を行いやすくするため。
ご察しの通り大規模開発向けの仕組みだから要らないと思うなら要らない。
0436305
2010/11/06(土) 15:40:26変更耐性を強くするために、コマンドで通話する
で、コマンドの実行内容はViewModelに依存しているから、
ViewModelで実装するためにコマンドからデリゲートで呼び出す形にすると
こんな感じかな
わかってくるとちょっとおもしろくなってきた
0437デフォルトの名無しさん
2010/11/06(土) 15:41:240438305
2010/11/06(土) 18:14:51奇妙な世界ができあがるわけですね
囲い込んでるのか首を絞めてるのかわかりませんね
プログラミングシェーダの世界ですね
0439デフォルトの名無しさん
2010/11/06(土) 18:25:180440305
2010/11/06(土) 18:31:010441デフォルトの名無しさん
2010/11/06(土) 18:33:420442デフォルトの名無しさん
2010/11/06(土) 18:34:24一体何が問題になるのやら、さっぱり解らん。
概念を理解するのに、大して学習コストが掛かる訳でも無いし。
(MVVMを厳密に適用した実装を行うのは、若干慣れが要るが)
0443デフォルトの名無しさん
2010/11/06(土) 19:04:11MとVを直接バインドしちゃうと融通効かないから
Vに近いレイヤを一個経由しようってだけだよ
コンポジッション系のフレームワークと融合してややこしいことになってるとこがあるけど
0444305 ◆Jzt/EX0TGY8T
2010/11/06(土) 19:39:05成り済ましやめてもらえませんか?
MVVSなんてデリゲートもインターフェースも知らない初心者のぼくが知るわけないでしょ
0445デフォルトの名無しさん
2010/11/06(土) 19:55:350446デフォルトの名無しさん
2010/11/06(土) 20:13:08WPFで開発するときの単なる方法論の一つ。
0447デフォルトの名無しさん
2010/11/06(土) 21:44:39玄人になるとMVVM一択になってくる。
0448デフォルトの名無しさん
2010/11/06(土) 21:53:35>>447
初心者がいきなり全部理解するのは無理だから、最初は深く使わずにM-Vから始めるのは悪い事ではないだろう。
0449305 ◆Jzt/EX0TGY8T
2010/11/06(土) 22:01:31まんま俺が徹夜で勉強してたことじゃないかw
しかも検索したらトップでDelegateCommandの解説してるし
もしかして教えてくれたのはそこのひと?
0450デフォルトの名無しさん
2010/11/06(土) 22:03:460451デフォルトの名無しさん
2010/11/06(土) 22:17:310452デフォルトの名無しさん
2010/11/06(土) 22:37:34教条主義はJavaあたりでやってくれ
0453デフォルトの名無しさん
2010/11/06(土) 23:04:500454デフォルトの名無しさん
2010/11/07(日) 08:18:01public int x
{
get { return _model.x; }
set
{
if(_model.x != value) // ← コレ ★
{
_model.x = value;
OnPropertyChanged("x");
}
}
}
★のチェックが無いとbindingのTwoWayで無限ループに
なりそうな気がするんですけど、必要ないんでしょうか。
ターゲット側でチェックされてる?大丈夫?
0455デフォルトの名無しさん
2010/11/07(日) 08:25:02余計なイベント通知はない方がいいだろ
0456デフォルトの名無しさん
2010/11/07(日) 08:43:02無いとなんか気持ち悪いし、つけときます。
0457デフォルトの名無しさん
2010/11/07(日) 08:50:52というプログラムを作りたいんだけどWinFormよりWPFのほうが容易にできますか?
0458デフォルトの名無しさん
2010/11/07(日) 10:43:520459デフォルトの名無しさん
2010/11/07(日) 11:09:570460デフォルトの名無しさん
2010/11/07(日) 12:23:290461デフォルトの名無しさん
2010/11/07(日) 14:07:01さんくす
0462305 ◆Jzt/EX0TGY8T
2010/11/08(月) 15:30:23Form1がView.xamlとView.csの二つのファイルに分かれただけで
表示部分とそれをコントロールする部分はくっついたままなのね
ただ、WinFormで苦労したGUI部分が簡単にいじれるようになっただけで
Form1にゴリゴリコード書くようにView.csにゴリゴリ書いてける
MVVMのデザインパターンもWinFormでもやってきたことだからそれほど難しくない
どうせなら、Viewのコントロールする部分もXamlでしか書けないようにして
C#のコードではロジックしか書けないようにしてしまえばいいのに
そうすれば、これはViewに関する事だから〜と意識的にロジックと表示部分をわけなければいけない
ということがなくなるんじゃない?
0463デフォルトの名無しさん
2010/11/08(月) 16:33:030464デフォルトの名無しさん
2010/11/08(月) 17:30:03世の中の流れと考えについて行けてない
最低でも5言語使って10のフレームワークを使え
言う事が無茶苦茶すぎる
0465デフォルトの名無しさん
2010/11/08(月) 17:44:53そのくらいは普通にごろごろ居るけどな。
フレームワークは使えるじゃなくてそれぞれの言語で
作ってきたじゃねえと基礎力がどうだかなって感じがする。
0466デフォルトの名無しさん
2010/11/08(月) 18:13:210467305 ◆Jzt/EX0TGY8T
2010/11/08(月) 19:12:58viewに対してプロパティ以外で操作するのは無理にしちゃえばいい
それなのにロジックと混同して使えるようにしているから
解説サイトも簡潔に説明するためにイベントハンドラにロジック直接書いて
それ見た初心者がそういうもんだと思って真似するわけじゃない
VIEW言語、Viewコントローラー言語、VIEWModel言語、Model言語
とか作ってさ、完全に分けてしまえばいいんだよ
0468デフォルトの名無しさん
2010/11/08(月) 19:20:28ちょっと待て、落ち着いて考えて欲しい。
お前さんXAMLとC#だけでさえ手に余ってるのに、さらに倍に増やせとか馬鹿だろw
0469デフォルトの名無しさん
2010/11/08(月) 20:34:35人間の記憶量には限りがあるんだよ
0470デフォルトの名無しさん
2010/11/08(月) 20:47:56どうせV:VMが1:1+αのコードしか書いてないんじゃないの?
0471デフォルトの名無しさん
2010/11/08(月) 20:48:35【尖閣ビデオ】 中国漁船衝突の映像、YouTubeに流出…動画は海保研修用のものと判明、複数本コピーが存在★2XX
http://kamome.2ch.net/newsplus/
現在の1スレ消費速度平均6〜8分!!
ニュース速報+板史上の歴代最多数スレ
1位 263 朝日新聞社員、2ちゃんねる差別書き込み事件 (2009/04)
2位 ★2XX 中国漁船衝突の映像、YouTubeに流出 ←★New!★ (2010/11)
3位 230 毎日新聞社デイリーニューズ「WaiWai」問題 (2008/07)
4位 156 韓国、2ちゃんねる米国鯖にサイバーテロ (2010/03)
5位 117 2ちゃんねる閉鎖問題 (2007/01)
0472デフォルトの名無しさん
2010/11/08(月) 20:50:42苦労して覚えた知識でも否応なしにたった数年で陳腐化するのに何でプログラミングなんてやってんの?
>>467
最初はそういうもんだ。基礎を勉強してないのに最初から応用編とか無謀すぎる。
初心者相手にいきなりpatterns & practicesのPrismみたいなの持ってきたら一瞬で挫折する。
0473305 ◆Jzt/EX0TGY8T
2010/11/08(月) 21:12:12複雑なビューってどういうのかよくわからないけど
WinFormではマンガミーヤと同じようなUIのソフトを作った
それプラス、書庫内の画像を自動で画像変換して圧縮し直すなどの機能をつけたりなど
でも途中でかなり面倒なことになってやめたけど
今回はそれに動画も閲覧できる機能をつけて作ってみようと奮闘中です
0474デフォルトの名無しさん
2010/11/08(月) 21:22:14TreeViewとか、タブドキュメントインターフェイスとか
0475デフォルトの名無しさん
2010/11/08(月) 21:24:52イラストレーターみたいなドローソフト作って味噌
■ このスレッドは過去ログ倉庫に格納されています