WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2009/12/27(日) 10:58:30て語るスレ。.NET3.5 SP1 もリリースされて盛り上がってまいりますた。
Visual Studio 2008
ttp://www.microsoft.com/japan/msdn/vstudio/
Microsoft .NET Framework 3.5 Service Pack 1
ttp://www.microsoft.com/downloads/details.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7&displaylang=ja
WPF Toolkit - June 2009 Release
ttp://wpf.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29117
Visual Studio 2010
ttp://www.microsoft.com/japan/msdn/vstudio/2010/overview/
関連スレ
Microsoft Silverlight その4
ttp://pc12.2ch.net/test/read.cgi/tech/1244812356/
過去スレ
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/
0068デフォルトの名無しさん
2009/12/28(月) 23:23:56重要なのはDirectXのハードウェアサポートだろう
0069デフォルトの名無しさん
2009/12/28(月) 23:44:46イメージしてる「高機能」がどのリソース使うのかわかんないからなんともいいようがないけど
個人的にはクロスプラットフォームのDTM系のソフト(いわゆるDAW)が社内で内製するような
ux重視のライブラリみたいなもんをMSが用意したという感じで捉えてる
こういうのは昔からリッチなGUIと高機能を同時に提供してた
wpfみたいなもんてどう使うのとかいう向きは一度この手のソフトを弄ってみるといいと思う
0070デフォルトの名無しさん
2009/12/29(火) 01:00:22なんでこんな継ぎ足しみたいな酷い設計になってるんだ?
思想自体は悪くないし、むしろ応援したいくらいなんだが、
内部の設計がお粗末すぎないかこれ。
ちょっとサンプルより凝った事しようとすると途端に辻褄合わせに苦労する。
そもそもサンプルも例外出まくってるし。
何でもかんでもTemplateって言えばいいってもんじゃねーぞw
皆すげーな。
アーキテクチャの理解に二週間くらい戦ってるが未だによく分からん。
0071デフォルトの名無しさん
2009/12/29(火) 01:08:06ぶっちゃけ例外はログとって握りつぶそうぜw
はやくまともな日本語の本出ないかなぁ
0072デフォルトの名無しさん
2009/12/29(火) 01:38:08情報が出揃うまではFormsで十分かなって思ってしまう。
0073デフォルトの名無しさん
2009/12/29(火) 01:38:530074デフォルトの名無しさん
2009/12/29(火) 01:54:51XAMLもそれほど問題はない
が、なにぶんWPFは開発環境が重すぎるw
もうちょい何とかしてくれorz
0075デフォルトの名無しさん
2009/12/29(火) 12:14:43'System.IO.FileNotFoundException' の初回例外が PresentationCore.dll で発生しました。
気持ち悪い
0076デフォルトの名無しさん
2009/12/29(火) 12:57:520077デフォルトの名無しさん
2009/12/30(水) 01:08:58βゆえに記述は古いけれど内容はいい。
これにエッセンシャルWPFを組み合わせて設計思想をつかんだら
あとはMSDNとblogあさりでいい。
0078デフォルトの名無しさん
2009/12/30(水) 02:19:31あえてほとんど全てのサンプルコードがC#コードでの記述になっていて、
XAMLの解説は最終章でちょっとだけという構成なのでまあこれはこれでありがたいと思った。
WPFはちょっと深入りするとコード側から記述せざるを得ないことも多いから。
ただサンプルの文字出力やメッセージ文が
「宇宙人、異世界人、超能力者」とか「ただの人間には興味ありません」とか
「ジャンクにしますよ」とかばっかりなので、そういうセンスが鼻につく人も多いだろうな。
0079デフォルトの名無しさん
2009/12/30(水) 02:21:04xamlのインテリセンスが効かないこともあって、ElementNameうち間違ったり
すると絶望的なんですが。
0080デフォルトの名無しさん
2009/12/30(水) 10:23:540081デフォルトの名無しさん
2009/12/30(水) 14:18:16でも、これだけを頼りでは大変すぎ。
名前間違いならエラーも出るけれど、複雑なバインディングで構造違いだったり
参照違いだったりの場合はエラーも出ないですし。
0082デフォルトの名無しさん
2009/12/30(水) 14:59:250083デフォルトの名無しさん
2009/12/31(木) 22:55:38ttp://karlshifflett.files.wordpress.com/2009/01/wpflobmvvm1.png
このBusiness LayerとModelの関係がいまいちイメージ出来ません。
メモ帳のようなSDIアプリを例にすると、どういう感じになるのでしょうか?
0084デフォルトの名無しさん
2010/01/01(金) 11:16:24メモ帳には無縁の世界
0085デフォルトの名無しさん
2010/01/02(土) 20:28:47Modelが文字のバッファで、
Business Layerは、文字の切り取り/貼り付けといったメモ帳の機能。
0086デフォルトの名無しさん
2010/01/09(土) 11:39:06一回コンパイル失敗すると二度と通らなくなったりする
0087デフォルトの名無しさん
2010/01/09(土) 12:04:160088デフォルトの名無しさん
2010/01/10(日) 05:11:410089デフォルトの名無しさん
2010/01/15(金) 00:06:390090デフォルトの名無しさん
2010/01/15(金) 00:27:290091デフォルトの名無しさん
2010/01/15(金) 00:49:21DrawingGroupで使えないんだ
0092デフォルトの名無しさん
2010/01/15(金) 01:19:430093デフォルトの名無しさん
2010/01/15(金) 11:23:280094デフォルトの名無しさん
2010/01/15(金) 12:01:180095デフォルトの名無しさん
2010/01/15(金) 13:31:20???
0096デフォルトの名無しさん
2010/01/15(金) 14:20:51座標が大きいときは表示されないのに
0097デフォルトの名無しさん
2010/01/15(金) 15:01:430098デフォルトの名無しさん
2010/01/15(金) 16:14:47DrawingGroup.ClipGeometry設定すればいいのか
とりあえず97は地球七周半してこい
0099デフォルトの名無しさん
2010/01/17(日) 17:57:070100デフォルトの名無しさん
2010/01/17(日) 18:29:200101デフォルトの名無しさん
2010/01/18(月) 10:34:350102デフォルトの名無しさん
2010/01/18(月) 12:12:10なんで?
光の速さが秒速30万kmで地球の赤道付近の円周が約4万kmだから
ほぼ7.5周じゃん?
0103デフォルトの名無しさん
2010/01/18(月) 12:14:59・光は地表に沿って曲らない
・真空じゃない
ようするに揚げ足とり。
0104デフォルトの名無しさん
2010/01/18(月) 13:05:110105デフォルトの名無しさん
2010/01/18(月) 13:14:300106デフォルトの名無しさん
2010/01/18(月) 13:16:470107デフォルトの名無しさん
2010/01/18(月) 15:27:54× × × 5
9 2 7 4/
上記のように点を数字順にたどるgeometryを定義して
閉じた部分をそれぞれちがう色で塗りつぶしたいのですがどうすればいいですか?
0108デフォルトの名無しさん
2010/01/18(月) 15:36:500109デフォルトの名無しさん
2010/01/18(月) 21:58:01自動で塗り分けろ? じゃあ仮にそういう機能があったとして、どの場所が何番目の色ってどうやって指定するつもりだい
0110デフォルトの名無しさん
2010/01/18(月) 22:44:36よくわかんない
しゃーない
交点探してチマチマやるか
0111デフォルトの名無しさん
2010/01/18(月) 22:57:41さっさとSilverlightに代替えしろってか。まあWCF対応バインディングも増えたし。
0112デフォルトの名無しさん
2010/01/19(火) 11:55:31簡単にはできないでしょうか?
0113デフォルトの名無しさん
2010/01/19(火) 12:04:59> このプロパティはレイアウト上の問題をデバッグするためのデザイン ツールとして用意されているものであり、
> 製品品質のコードで使用するためのものではないため、点線以外は使用できません。
> Grid 内に線を表示するには、Grid 内の要素に対して境界線を含むスタイルを設定します。
0114デフォルトの名無しさん
2010/01/19(火) 13:27:20ありがとうございます。
諦めてセルになる部分にBorderとCanvasでも噛ませて中にコントロールでも突っ込みます。
0115デフォルトの名無しさん
2010/01/21(木) 14:52:10これってアプリなのに内部的にはクラサバもしくはJavaではよく聞くMVCモデル
で動いてるような物ですよね
つまりc#で描く側が鯖イメージでXAMLで書いたり表現するGUIがFormぽく振舞ってる
ブラウザというか
0116デフォルトの名無しさん
2010/01/21(木) 14:55:21.NET自体動作原理はVMに近いものだし
0117デフォルトの名無しさん
2010/01/21(木) 14:59:19結構重要だと思いますw
WPF以前のアプリだと密接でしたがWPFだとたとえばTreeViewにデータ流し込むにしても
やってることはC#で書いたListをどこかにあるDBのように見ますし
なんというかunixのXというかなんというか
0118デフォルトの名無しさん
2010/01/21(木) 15:02:59参考になるサイトはないでしょうか?
0119デフォルトの名無しさん
2010/01/21(木) 15:35:470120デフォルトの名無しさん
2010/01/21(木) 17:15:530121デフォルトの名無しさん
2010/01/21(木) 21:39:37Form1.Designer.csとForm1.csの関係に対応する
MVVMはもう一段上の概念
0122デフォルトの名無しさん
2010/01/21(木) 22:19:380123デフォルトの名無しさん
2010/01/21(木) 22:31:50MVVMでいうビューとロジックの分離と,一般にWPFでいうビューとロジックの分離は意味が違う
0124デフォルトの名無しさん
2010/01/21(木) 22:33:150125デフォルトの名無しさん
2010/01/21(木) 22:39:130126デフォルトの名無しさん
2010/01/22(金) 00:05:09いくつか表示させるととても遅くなります
ImageコントロールにDrawContext使って描画することできそうだと思って
ImageのSourceにDrawingImageいれて、そのDrawingにDrawingGroupいれて、
Sliderが動くたびにDrawingGroupからDrawingContext取得して、DrawDrawingやDrawLineで描画してます
さて、もっとキビキビ動くアプリにするためにはどうしたらいいでしょう?
0127デフォルトの名無しさん
2010/01/22(金) 00:08:01「DrawingContextは遅い」
0128デフォルトの名無しさん
2010/01/22(金) 00:17:42どうすればいいですか?
何を使えば早いですか?
0129デフォルトの名無しさん
2010/01/22(金) 00:23:410130デフォルトの名無しさん
2010/01/22(金) 00:30:590131デフォルトの名無しさん
2010/01/22(金) 00:32:480132デフォルトの名無しさん
2010/01/22(金) 00:40:59トライしてみます
ありがとう
0133デフォルトの名無しさん
2010/01/22(金) 00:59:500134デフォルトの名無しさん
2010/01/22(金) 01:33:04ここぐらいかな。
http://ufcpp.jp/study/dotnet/wpf_abst.html
残念ながらWPFの解説サイトは非常に少ないのでMSDNのサンプルを見ながら勉強するのが一番いいと思う。
http://msdn.microsoft.com/ja-jp/library/ms754130%28VS.80%29.aspx
あとは書籍とか。
0135デフォルトの名無しさん
2010/01/22(金) 01:35:350136デフォルトの名無しさん
2010/01/22(金) 09:32:14まだソース読んでないけど。
http://www.codeplex.com/miniuml
0137デフォルトの名無しさん
2010/01/22(金) 09:34:13それ、なにするもの?
0138デフォルトの名無しさん
2010/01/22(金) 10:09:07http://journal.mycom.co.jp/articles/2009/02/03/miniuml/index.html
0139デフォルトの名無しさん
2010/01/22(金) 10:13:04このスレにはやさしい人がいてうれしいな
ありがとう
0140デフォルトの名無しさん
2010/01/22(金) 10:45:180141デフォルトの名無しさん
2010/01/22(金) 13:02:23あるよ。
JUDEの後継のastah* は Java/C#/C++のソース/UML間相互変換をサポートしてる。
ただし無料版はどれも不可だけど。
JUDEの時はJava出力に関してはフリー版でも出来たと思ったんだけどなぁ。
0142134
2010/01/23(土) 10:08:28× http://msdn.microsoft.com/ja-jp/library/ms754130%28VS.80%29.aspx
○ http://msdn.microsoft.com/ja-jp/library/ms754130.aspx
0143デフォルトの名無しさん
2010/01/23(土) 11:16:31教えて偉い人。
0144デフォルトの名無しさん
2010/01/23(土) 11:36:30ぬぬぬぬ…。
0145デフォルトの名無しさん
2010/01/23(土) 12:13:25http://msdn.microsoft.com/ja-jp/library/ms752040.aspx
0146デフォルトの名無しさん
2010/01/23(土) 12:14:54>>143
目的が分からんからどうとも言えんがツールチップかポップアップ使えばいいんじゃないか?
偉くはないが
0147デフォルトの名無しさん
2010/01/23(土) 12:43:18すごい。瞬速で解決。ありがとう偉い人たち!
0148デフォルトの名無しさん
2010/01/23(土) 13:04:48リンク切れ?例えばどこのこと?
0149デフォルトの名無しさん
2010/01/23(土) 13:05:440150デフォルトの名無しさん
2010/01/23(土) 13:18:19>>142で訂正したけどサンプルが更新されている場合は「.Net Framework 3.5」の方からダウンロードできる。
あとブラウザをIEに変えるとうまくいくことがあったので試してみて。
0151デフォルトの名無しさん
2010/01/23(土) 13:34:10WPFの話から脱線してスマン。サンプルが切れているのは元からだが
最近クラス自体の説明へのリンクが切れている所が多くなった気がする。
多すぎてうる覚えだが、PrivateObject関連の構造体の説明あたりとか、
ttp://msdn.microsoft.com/ja-jp/library/h58hxyt6.aspx のクラス説明へのリンクとか。
0152デフォルトの名無しさん
2010/01/23(土) 14:50:230153デフォルトの名無しさん
2010/01/23(土) 14:52:36え?
…クラシックだと見れるのね。なんじゃコリャw。
切り替えるとなおるのか、キャッシュ探すよりもずっと楽だ。トン
0154デフォルトの名無しさん
2010/01/23(土) 17:28:240155デフォルトの名無しさん
2010/01/23(土) 21:41:58子のコントロールでBindしてパラメータとして渡したいのです。
0156デフォルトの名無しさん
2010/01/23(土) 21:54:060157デフォルトの名無しさん
2010/01/23(土) 22:11:02Prism for Silverlight使っててxamlで指定して上げたいのです。
<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.ItemTemplate>
<DataTemplate>
なんちゃらこうちゃら
CommandParameter="{Binding 現在のアイテム}"←ここ
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
0158デフォルトの名無しさん
2010/01/23(土) 22:23:50「Binding Path=.」か「Binding RelativeSource={RelativeSource Self}, Path=DataContext」でいけない?
0159デフォルトの名無しさん
2010/01/23(土) 22:52:04<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button c:Click.Command="{Binding MyCommand}" ←このMyCommandはItemsにはなく、DataContextのViewModelにある。
c:Click.CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=DataContext}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
この状態でButtonをクリックするとMyCommand自体が呼ばれません。
ItemsControlの外に置くとうまくBindされてMyCommandは実行されます。
これはおそらくItemsの中にMyCommandがないからだと思われますがうまく"Binding MyCommand"の箇所をViewModelのMyCommandが呼ばれるようにするにはどう設定すればよいのでしょうか?
Binding ../MyCommand←これはだめでした。
Binding this.DataContext.MyCommand←これもだめ。
うーん…。
0160デフォルトの名無しさん
2010/01/23(土) 23:40:58CommandParameterに渡すのはItemsControl.items内の要素ってこと?
そんな使い方したことないから実際やったことはないが
a) ItemsControlにx:"Name=itemContorlName"を指定して
Command={Binding ElementName=itemContorlName,Path=MyCommand}
b) Command={Binding RelateveSource={RelativeSource AncestorType={x:Type ItemsControl}}}
のどっちかで解決しないか?
> この状態でButtonをクリックするとMyCommand自体が呼ばれません。
出力ウィンドウをみればバインド失敗は表示されるけど…何か出ていない?
0161デフォルトの名無しさん
2010/01/24(日) 00:12:23public sealed class Model {
public string A {get; set;}
}
public sealed class Models : ObservableCollection<Model> {}
//ViewModel
public sealed class ViewModel {
public ViewModel() {
this.Items = new Models();
this.MyCommand = new DelegateCommand<RequestItem>(OnMyCommand);
}
public void OnMyCommand(Model item){
}
public Models Items {get; private set;}
public ICommand MyCommand {get; private set;}
}
//View
public sealed class View {
public View() {
InitializeComponent();
this.DataContext = new ViewModel();
}
}
0162デフォルトの名無しさん
2010/01/24(日) 00:21:57これで説明しやすくなりました。
この仕様でバインドした時>>159のMyCommandがViewModelにあるMyCommandでバインドされないのです。
Model側に"ICommand MyCommand"のプロパティを持てばバインドされるのですがそれではModelとしてふさわしくないように思えます。
・させたい事
ViewModelのMyCommandを>>159のItemControl内のButtonにバインドさせたい。
ttp://msdn.microsoft.com/ja-jp/library/cc645024%28VS.95%29.aspx#ppincode
(ここも見てみましたが上位?Pathの設定の仕方がわかりませんでした。)
ためしにModel側にMyCommandをもちバインドさせ>>158の方法で"Item"を参照できるか試しましたがOnMyCommandの"Model item"はnullとなってました。
0163デフォルトの名無しさん
2010/01/24(日) 00:24:30×this.MyCommand = new DelegateCommand<RequestItem>(OnMyCommand);
○this.MyCommand = new DelegateCommand<Model>(OnMyCommand);
0164デフォルトの名無しさん
2010/01/24(日) 00:42:12silverlight3では動いたので.NET4.0で験してみたのだけど。
0165デフォルトの名無しさん
2010/01/24(日) 01:41:12UserControlに名前をつけてa)の方法でDataContextを参照したところうまくいきました。
本当はUserControlに名前をつけるとBlendにて警告が出るのでb)のAncestorTypeを使ったものを採用したかったのですが
SilverlightではSelfとTemplatedParentしか用意されていませんでした…。
0166デフォルトの名無しさん
2010/01/24(日) 07:46:15これでどうですか?
<Window.Resources>
<c:CommandReference x:Key="MyCommandReference" Command="{Binding MyCommand}" />
<Window.Resources>
<ItemsControl ItemsSource="{Binding Items}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Command="{StaticResource MyCommandReference}"
CommandParameter="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
うまくいかなかったら実験したProjectをどこぞにうpします。
0167デフォルトの名無しさん
2010/01/24(日) 21:05:50うまくいきました!
ありがとうございます。
■ このスレッドは過去ログ倉庫に格納されています