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/
0215デフォルトの名無しさん
2010/12/09(木) 15:26:20TopやLeftとかを変えればいいだけだと思うんだがなんの意味があるんだろう。
0216デフォルトの名無しさん
2010/12/09(木) 15:36:25LayoutTransform と RenderTransform で挙動違うからねぇ。
Layout 相当の方は確かに Top/Left の変更で行けなくはないが、Render の方は無理。
アニメーションでぶるぶる震えるとかそういうことやるのは Transform の方がいいともう。
Top とか Left とかは Canvas 内にいないと使えないし。
Content の入れ子ができる WPF じゃ Top/Left はいまいち使えない。
0217デフォルトの名無しさん
2010/12/09(木) 15:39:05<RowDefinition/>
をいっぱい書くのめんどくさいなぁ
<RowDefinition*8/>
みたいな書き方できるようにしてくれよ
0218デフォルトの名無しさん
2010/12/09(木) 15:50:22特殊文法はどこかで破たんするからなぁ。
ツールとの連携を考えると、正規の XML の文法からそれない方が身のため。
RowDefinition とかは Visual Studio の UI デザイナー使うなぁ、
さすがに手書きめんどくさいんで。
0219デフォルトの名無しさん
2010/12/09(木) 16:02:32簡単なツールならVSで十分だが、出来ればBlendを買うのを勧める
0220デフォルトの名無しさん
2010/12/09(木) 16:08:59http://www.youtube.com/watch?v=lnHa6OZa0U4
これで何が不満なのか。
0221デフォルトの名無しさん
2010/12/10(金) 00:12:10<MenuItem Header="Exit" Command="Close"/>
だとメニューのExitがdisableなままでクリックできないし。
自前Command作ってもVMがVを持ってないから Close できないわけで。。。
どうすりゃいい?
0222デフォルトの名無しさん
2010/12/10(金) 01:16:31よくあるパターンでは、ViewModelにRequestCloseってイベント作っておいて、
DataContext への代入の時にそれに += するようなのか、
もしくは、最近はやりは、
Close イベント拾ってウィンドウ閉じるようなビヘイビア書くかかなぁ。
0223デフォルトの名無しさん
2010/12/10(金) 01:22:05C#のコードを簡略化して書けるようなものなの?
C#だと
なんちゃら 変数 = new なんちゃら();
変数.Child.Add(なんとか);
みたいなのを
<なんちゃら>
<なんとか>
</なんちゃら>
だけでかけて、いちいちnewとかChild.Addとか書かなくていいから大幅に省略できてラクチン?
0224デフォルトの名無しさん
2010/12/10(金) 01:25:04ツールが読みやすいように XML にしてるとか、
依存関係プロパティやらデータバインディングやら、C# で書きにくいのを楽に書けるとか。
Children.Add とかは、C# 3.0 以降、書く必要ない。
var layoutRoot = new Grid {
Children = { new Button(), new TextBox() }
};
みたいに書ける。
0225デフォルトの名無しさん
2010/12/10(金) 01:30:12違う。簡略化じゃなくて、外部ツールでも扱い易くするために、あの文法になった。
手書きを前提としては作ってない。
あと、今は
List<string> list = new List<string>();
list.Add("hoge")
は
var list = new List<string> { "hoge" };
と書ける。
0226225
2010/12/10(金) 01:31:050227デフォルトの名無しさん
2010/12/10(金) 01:37:230228デフォルトの名無しさん
2010/12/10(金) 02:24:58それも含めて、ユーザーもツールを作りやすいように。
Microsoft は、XAML を WPF や Silverlight 専用とせずに .NET に関するデータをテキスト形式で書くための言語として作った
(だから、XAML でユーザー定義クラスのインスタンスも生成できる)。
.NET 同士でデータを交換したり、読み書きするなら、単なる XML を使うよりは、XAML を使ったほうが簡単に扱えるようになってる。
0229221
2010/12/10(金) 02:32:30XAMLに
<MenuItem Header="Exit" Command="{Binding ExitApp}"/>
VMに
public void Execute(object parameter) {
System.Windows.Application.Current.MainWindow.Close();
}
こんな感じに落ち着きましたです。
なんかかっこ悪い気がするけど終了するからまぁいいかと。
そんでもって今度は、ウィンドウ枠消して Label だけにしたウィンドウを
どうやってドラッグ移動させるかでどつぼってる中orz
0230デフォルトの名無しさん
2010/12/10(金) 02:40:09将来的にはそんなかっこ悪い書き方しなくなりそうな感じするけど、
現状はそれでいいと思う。
枠消したアプリは、MouseDown イベントのハンドラーで DragMove メソッド呼ぶだけだったと思う。
0231デフォルトの名無しさん
2010/12/10(金) 02:43:060232デフォルトの名無しさん
2010/12/10(金) 02:45:30標準になること自体は確定してるみたいなので、後は次期の問題・・・
0233デフォルトの名無しさん
2010/12/10(金) 03:22:59参照型とか意味わからん。
0234デフォルトの名無しさん
2010/12/10(金) 03:30:15参照型:jクラス(class)
値型:構造体(struct), 列挙型(enum) 組込み型(int,double...)
C# 参照型 でググると解説がいっぱいある。ふらっとC#あたりで聞いてもいい。
0235デフォルトの名無しさん
2010/12/10(金) 03:54:20Routed eventなのに日本語だと
ルーティング イベント
になるの?
用語つけたやつ誰だよ。
0236デフォルトの名無しさん
2010/12/10(金) 03:54:53ありがとう。
Label に MouseDown="label1_MouseDown" 追加して Window1.xaml.cs に
private void label1_MouseDown(object sender, MouseButtonEventArgs e)
{
this.DragMove();
}
追加でいけました。
>>231
添付ビヘイビアってやつですかね?
DragMoveBehaviour みたいな
0237デフォルトの名無しさん
2010/12/10(金) 04:02:40DragMoveをする添付ビヘイビア - WPF memo http://goo.gl/ZtBZ7
のコードでビヘイビアベースでもいけました。
こっちはかっこいい。
いろいろパラダイム変わってるからとっつきは難しいなぁWPF
0238デフォルトの名無しさん
2010/12/10(金) 09:54:27MS 規則だと割とそうみたいよ、routed event に限らず、-ed 単語の多くが・・・
ほんとなんでそんなことになったのか。
0239デフォルトの名無しさん
2010/12/10(金) 10:05:110240デフォルトの名無しさん
2010/12/10(金) 16:16:01長いからそれを略したと考えれば別に不自然じゃないでしょ
0241デフォルトの名無しさん
2010/12/10(金) 18:09:54なんという不自然な考え方w
0242デフォルトの名無しさん
2010/12/10(金) 19:22:03略して「自動実装プロパティ」と表記されてることも多い。
間に「される」を挟むなら「ルートされる」じゃなくて「ルーティングされる」でしょ
0243デフォルトの名無しさん
2010/12/10(金) 22:40:26Microsoft Visual Studio 2010 Service Pack 1 Beta
http://www.microsoft.com/downloads/details.aspx?FamilyID=11ea69cb-cf12-4842-a3d7-b32a1e5642e2&displayLang=ja
これ入れたらWPF重くなった。
でも、setter Property=""の部分とかstyle Target=""の部分あたりがインテリセンスができるようになった。
0244デフォルトの名無しさん
2010/12/10(金) 22:46:19Silverlight4ツールキットにXAMLデザイナの更新が含まれてたんだったかな
0245デフォルトの名無しさん
2010/12/10(金) 22:52:080246デフォルトの名無しさん
2010/12/11(土) 02:20:14は、ほんとなんとかして欲しい。vsのアップデートまたは機能拡張として正規に適用
されるべきもんだし、そもそもなんでcodeplexみたいな裏街道でこっそりダウ
ソしなきゃならんのだ?
バージョンも2010 april cptとか何が最新なのかさっぱりわからんし。
0247デフォルトの名無しさん
2010/12/11(土) 02:35:14>>246
codeplex は、早期に発表しておきたいという場。
ぶっちゃけ、人柱ほいほい。
安定したのから製品版に入っていくはず。
0248デフォルトの名無しさん
2010/12/11(土) 02:36:38あと、CTP(のことよね?<cpt)は、
β以下の完全人柱バージョンって意味。
さっぱりわからん人は触れちゃダメ。
0249デフォルトの名無しさん
2010/12/11(土) 02:38:23歴史の勉強ソフトとか。
でもそういうことするんだったら、別のソフトつかったほうがいいか。
0250デフォルトの名無しさん
2010/12/11(土) 09:32:250251デフォルトの名無しさん
2010/12/11(土) 14:23:24安土城とか?
0252デフォルトの名無しさん
2010/12/11(土) 14:41:550253デフォルトの名無しさん
2010/12/11(土) 17:12:100254デフォルトの名無しさん
2010/12/11(土) 17:19:14例外なく操作性最悪のゴミだけど
0255デフォルトの名無しさん
2010/12/11(土) 20:18:33見せる相手がいない
まさか自分で見るために作るのか
さびしいのう
0256デフォルトの名無しさん
2010/12/11(土) 20:22:24ドヤ顔でデフォルトのスタイルを作ると言い出した挙句上司が了承した…オワタ
0257デフォルトの名無しさん
2010/12/12(日) 00:16:180258デフォルトの名無しさん
2010/12/12(日) 00:20:070259デフォルトの名無しさん
2010/12/12(日) 00:32:34間違えてBlend Bookとか買っちゃだめよ
0260デフォルトの名無しさん
2010/12/12(日) 00:46:51youtube に Blend 使ったビデオあるから見れば大体はわかる。
0261デフォルトの名無しさん
2010/12/12(日) 01:04:200262デフォルトの名無しさん
2010/12/12(日) 01:13:56まともなのはないけどw
0263デフォルトの名無しさん
2010/12/12(日) 07:34:430264デフォルトの名無しさん
2010/12/12(日) 08:47:280265デフォルトの名無しさん
2010/12/12(日) 08:59:300266デフォルトの名無しさん
2010/12/12(日) 10:52:370267デフォルトの名無しさん
2010/12/12(日) 11:40:13スタイル使う
リソースディクショナリにまとめておけば簡単に切り替えられるし
ユーザーが作ったものを動的に読み込むこともできる
0268デフォルトの名無しさん
2010/12/12(日) 23:54:35スタイルのスキン的使い方をまとめてるようなところない?
0269デフォルトの名無しさん
2010/12/13(月) 16:41:39InputGestureTextが"Ctrl+O"とか設定されるけど,
それを抑止するにはどうしたらいいでしょう?
面倒だけどCommandを使わずにイベントハンドラで処理するしかないのかニャ?
0270デフォルトの名無しさん
2010/12/13(月) 19:50:23http://www.youtube.com/watch?v=TgVuwq1HRPk
0271デフォルトの名無しさん
2010/12/13(月) 19:56:44このメカニズムは保守に重点を置いてる物だから
何でもできると思ってるのなら大間違い
0272デフォルトの名無しさん
2010/12/13(月) 20:02:240273デフォルトの名無しさん
2010/12/13(月) 20:07:23バインディングの強化はWinFormsやASP.NETからの正当な進化であって
バインディングのためにわざわざ新しく作ったわけじゃない
0274デフォルトの名無しさん
2010/12/13(月) 20:09:010275デフォルトの名無しさん
2010/12/13(月) 20:21:22一般にMVC的な構造にバインディングは有効だからバインディングが重視されてるだけ。
コマンドバインディングだってあれは本来Ctrl+Cとツールバーのコピーボタンとメニューのコピーボタンで
共通の処理を行うための仕組みだ。
0276デフォルトの名無しさん
2010/12/13(月) 20:36:56何でもできるようになろうとしたんですよ
努力は認めるが
0277デフォルトの名無しさん
2010/12/13(月) 20:48:29たくさんの処理方法がある場合にはコマンドを使えばいいの?
たとえば、たった一つのボタンを押すしか実行する方法が無い場合はWinFormのようにボタンクリックイベントで
ボタンを押しても、ショートカットキーでも、メニュ−でも、その他いろいろな条件でメソッド呼ばれるようにしたい場合コマンドを使うの?
0278デフォルトの名無しさん
2010/12/13(月) 20:49:420279デフォルトの名無しさん
2010/12/13(月) 20:53:35そうだよ
で、コマンドが実行されたときの処理はコードビハインドに書く。
イベントハンドラも自由に使っていい。WPFは本来そういう設計。
0280デフォルトの名無しさん
2010/12/13(月) 20:56:000281デフォルトの名無しさん
2010/12/13(月) 21:02:030282デフォルトの名無しさん
2010/12/13(月) 21:04:330283デフォルトの名無しさん
2010/12/13(月) 21:07:28直感というよりは先入観だろうな
0284デフォルトの名無しさん
2010/12/13(月) 21:09:13超面倒臭いんだけど、どうにかならないの?
0285デフォルトの名無しさん
2010/12/13(月) 21:12:13MVC的な設計が面倒くさいのは当たり前のことで
それを補って余りあるメリットがあるなら使えばいいんで
無理してMVVM適用する必要ないんだよ?
0286デフォルトの名無しさん
2010/12/13(月) 21:14:040287デフォルトの名無しさん
2010/12/13(月) 21:15:21貴方とはお付き合い出来ません・・・
0288デフォルトの名無しさん
2010/12/13(月) 21:16:480289デフォルトの名無しさん
2010/12/13(月) 21:19:060290デフォルトの名無しさん
2010/12/13(月) 21:27:04アホらしすぎる
0291デフォルトの名無しさん
2010/12/13(月) 21:33:080292デフォルトの名無しさん
2010/12/13(月) 21:49:28特に何をするでもないのに変数とプロパティ両方に分けるのはめんどくさい
変数だけでいい
って言ってるようなもの。
まぁpropで簡単に実装できるようになったけどさ。
0293デフォルトの名無しさん
2010/12/13(月) 22:20:420294デフォルトの名無しさん
2010/12/13(月) 22:32:320295デフォルトの名無しさん
2010/12/13(月) 23:55:53ビューを切り替えるという概念もなさそうだし
0296デフォルトの名無しさん
2010/12/14(火) 00:01:40北海道の上にマウスを置くと北海道が光って
青森の上におくと青森が光って・・・
みたいなのってどうやるんだ。やりたいけど今の俺の技術じゃ無理だ。
きっと単純なコードじゃ無理だろう。あきらめた。
0297デフォルトの名無しさん
2010/12/14(火) 00:03:20それを取り込んでLINQで繋げてはいほいそいで20分でできたと思う
0298デフォルトの名無しさん
2010/12/14(火) 00:05:120299デフォルトの名無しさん
2010/12/14(火) 00:08:03領域をそれぞれ違う色で塗り潰した画像を別に用意しておいて
マウスポインタの下にあるピクセルの色を取得する
0300デフォルトの名無しさん
2010/12/14(火) 00:54:48284だけどビューの切り替えってどうすればいいの?
最初は、たとえばページ選択するたびにデータテンプレートとか切り替えて、
ViewModelの表現方法変えたりしようかとも思ったんだけど、
見た目はタブコントロールのまんまなのに、
タブコントロールとは微妙にコンテキストが違って来てるような気がするし
0301デフォルトの名無しさん
2010/12/14(火) 04:36:22EllipseをDoubleAnimationで大きさや位置を変える
ってやって、マウスをそこそこ早いスピードでEllipseの中に入れたらたまに色変わらないね。ちょっとシビアだけど厄介だなあ。
0302デフォルトの名無しさん
2010/12/14(火) 05:24:26タブ全体と一つのviewmodelを紐づけていいんじゃないの?
一ページにはviewmodelの一部が表示されてる
viewmodelは複数のmodelを管理もしくはより大きなmodelのサブセット
みたいな
0303デフォルトの名無しさん
2010/12/14(火) 09:15:15大量にスニペット自作しないとだめだけどw
0304デフォルトの名無しさん
2010/12/14(火) 09:17:10公開して
0305デフォルトの名無しさん
2010/12/14(火) 10:35:39MVVMの定型句を登録してるだけ
On$Name$ = new DelegateCommand($Name$, parameter=>true);
public DelegateCommand On$Name$ { get; private set; }
public void $Name$(object parameter)
{
}
こんなのとか
0306デフォルトの名無しさん
2010/12/14(火) 11:31:42MS 公式な奴(RIA Services とか)の命名規約見てる感じ、
コマンドが $Name$Command で、実際の処理メソッドが On$Name$ の方がいいと思う。
0307デフォルトの名無しさん
2010/12/14(火) 12:19:48コマンドの方はバインドさせるために補助的に公開しているに過ぎないわけだから。
コマンドをイベントハンドラとして捉えるのであれば,メソッドは名前以前にprivateにしたほうがいい。
0308デフォルトの名無しさん
2010/12/14(火) 20:58:50そうでないならRubyで十分だよ
0309デフォルトの名無しさん
2010/12/14(火) 21:04:180310デフォルトの名無しさん
2010/12/14(火) 21:09:18それってWPFでXAML使わないと言っているようなもんだな
0311デフォルトの名無しさん
2010/12/14(火) 21:36:41XAMLって使っても使わなくてもどっちでもいいよね。
0312デフォルトの名無しさん
2010/12/14(火) 21:52:02>>308
RubyいいよねRuby。ただしUNIX上に限る
0313デフォルトの名無しさん
2010/12/14(火) 22:09:53どこにマニュアル転がってるんだ?
0314デフォルトの名無しさん
2010/12/14(火) 22:32:52オブジェクト指向の実装が透けて見えてなんかヌルヌルした感じが合わない
依存関係プロパティをコードから触ってる感じ
0315デフォルトの名無しさん
2010/12/14(火) 22:42:22で Blend 3 の製品紹介してるから、真似してみればアニメーションとビヘイビアについてはわかるはず。
■ このスレッドは過去ログ倉庫に格納されています