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/
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うまくいきました!
ありがとうございます。
0168デフォルトの名無しさん
2010/01/24(日) 21:10:02非リアルタイムの2Dゲーム(ADVに近いものを想像してください)を作るにあたって、
WPFを利用するのは有用でしょうか?
WPF関連の書物は高い&3Dゲームに関する記述しかないのですが、
ざっと確認したイメージ的にはいけそうな気もするんですよね。
有用だというのならば、思い切って専門書買ってみようと思うのですが、
よろしければアドバイス頂けませんか?
0169デフォルトの名無しさん
2010/01/24(日) 21:15:09作れなくはないが、ADVなら積極的に採用する理由はあまりないんじゃないか?
0170デフォルトの名無しさん
2010/01/24(日) 21:18:440171デフォルトの名無しさん
2010/01/24(日) 21:20:35http://www.nicovideo.jp/watch/sm9053564
0172デフォルトの名無しさん
2010/01/24(日) 21:22:322DゲーでADVに近い物ならVC#でも十分可能だけどね
0173デフォルトの名無しさん
2010/01/24(日) 23:13:51かといって図書館にも置いてないしなあ。
>>169
少し説明が難しいのですが、動的に処理すべき場所があまりにも多いんですよね。
するとフォームデザインがどうも役立たずっぽいので、WPFの方が適切ではないかと思ったわけです。
速度はイライラしない程度なら問題はないと考えています。
>>170
それはちょっと朗報です。ありがとうございます。
>>171
うわw これは素直にすごいなあ……
ここまでの処理は求めてませんが、期待持てそうです。
>>172
どうもゲームプログラミングは苦手で、それなのに任されちゃって四苦八苦なんです。
いざ調べてみると想像以上に資料少ないですよね。
市販の書籍なんて、ほとんど画像表示の方法とかに終始してますし。
0174デフォルトの名無しさん
2010/01/24(日) 23:26:25>>171はやってみると意外と難しくない
0175デフォルトの名無しさん
2010/01/24(日) 23:28:21使えばよかろうに
0176デフォルトの名無しさん
2010/01/25(月) 00:02:01UIかっこよくしてなんぼって感じもするし。
0177デフォルトの名無しさん
2010/01/25(月) 00:34:22やれるとしても当分先だと思いますが、これは確かに面白そうですよね。
たとえ今回の件にそぐわないとしても、近いうちにWPFには手をつけてみようかなーと思い始めてきました。
数値計算とかばかりやってきた身としては、もう少し普及して間口が広くなってほしいってのも本音ですけどね……
>>175
ADVみたいなものって説明が悪かったですね。
雰囲気としてはそれっぽいものではあるのですが、某レトロゲームのシステムを踏襲+拡張したものなので、
簡易的なものじゃちょっとまかなえないんです。分かりにくくてすみません。
0178デフォルトの名無しさん
2010/01/25(月) 02:21:150179デフォルトの名無しさん
2010/01/25(月) 03:55:47でもWPF製のゲームも見てみたいから頑張れ
0180デフォルトの名無しさん
2010/01/25(月) 15:07:56こういうの見るとモチベーションが上がるな。
上がって何をするかというと、2chとMSDNを往来することなのだが。
0181デフォルトの名無しさん
2010/01/25(月) 15:14:07もっと早く線描けないの?
0182デフォルトの名無しさん
2010/01/25(月) 15:27:21処理が違うから?
大量の色情報に対して同じ処理を高速にやってるだけだし
上画像のピクセルのアルファ値を高速に変えればできる処理なんで
GPUのもっとも得意とするところじゃん
DrawingContextで描画するような内容ってピクセルのアルファ値かえるだけのような
話じゃないしね
0183デフォルトの名無しさん
2010/01/25(月) 16:27:31ちらつきとか抑える方法はよくわからんけど
サンプルソース居る?
というか配布する際どれを渡せばいいんだろうw
.netのソースって開発環境のパスが埋もれてるとか聞いたけど
0184デフォルトの名無しさん
2010/01/25(月) 16:35:330185デフォルトの名無しさん
2010/01/25(月) 16:44:34pass 無し
formにpicturebox x1とbutton x3とtimer x1を貼り付けてイベントハンドラを
割り当ててくれれば動くと思うよ
0186デフォルトの名無しさん
2010/01/25(月) 17:19:21http://uproda.2ch-library.com/207979P9U/lib207979.png
FormのPaitイベントでDrawLineにArrowAnchor指定して物なんだけど
別の機能をちょっと足せばグラデーション+AntiAliasで描ける
0187デフォルトの名無しさん
2010/01/25(月) 17:27:000188デフォルトの名無しさん
2010/01/25(月) 18:38:030189デフォルトの名無しさん
2010/01/25(月) 19:47:44スレチ
0190デフォルトの名無しさん
2010/01/25(月) 20:39:07昨日はくだらない質問に対していろいろとありがとうございました。
氷点下の世界を旅して、思い切ってWPFの本を買いに行ってみたのですが、取り扱ってる店が1件もありませんでした……
佐川のお兄さんに運んで貰おうと思います。
>>178,179
吉里吉里ってそこまで高性能だったんですね。
あまり使う機会もありませんし、ハッシュは配列にキャストしてから〜ってのがうざったくて放置してました。認識改めます。
0191デフォルトの名無しさん
2010/01/25(月) 23:07:44それが悪いというんじゃなく、それくらい習熟するのは時間がかかる
0192デフォルトの名無しさん
2010/01/26(火) 00:14:08ListBoxほか大多数のScrollViewer系のコントロールで
パッドのフチを使ったスクロールができず困っていたのだけど、
今年に入ってSynapticsがScrybeというツールのCTPを公開し
その中に最新のタッチパッドドライバ15.0.0.1が含まれていて、
インストールしたところWPFアプリでもスクロールできるようになった!
http://www.uscrybe.com/index.html
PCメーカーのサポートページから入手できるタッチパッドドライバは大抵古いバージョンなので
WPFのスクロールで困ってる人はこっちをインストールしてみてくれ
以上チラシの裏でした
0193デフォルトの名無しさん
2010/01/26(火) 02:49:31つまりWPFのほうがより高度なものが作れるってこと?
0194デフォルトの名無しさん
2010/01/26(火) 08:05:08自分でHLSL書けるWPFのほうが高度だよ。サンプラーだって上限まで使えるしね。
ていうか、制御するコードにしてもVSとC#使えるんだから、そこらの簡易言語じゃ
勝負にならんでしょ。覚えることは多いけどね。
0195デフォルトの名無しさん
2010/01/26(火) 08:21:32そしたらもっと裾野広がるのに
0196デフォルトの名無しさん
2010/01/26(火) 09:36:54べたがきだと使い回しきかんだろうし。
0197デフォルトの名無しさん
2010/01/26(火) 09:49:21ツクールを作ってた人が楽になるだけだよね
後はツクールを使ってた人が高度な実装知識無しで組めるようになるので
頑張ってツクールが担当してたエリアまで食い込んでくるかも
windows ≒ IE
XAML ≒ HTML
C# ≒ Javascript
こんな感じじゃない?
0198デフォルトの名無しさん
2010/01/26(火) 09:50:21これより
VM ≒ IE
か
0199デフォルトの名無しさん
2010/01/26(火) 10:14:380200デフォルトの名無しさん
2010/01/26(火) 10:19:40VerticalAlignment, HorizontalAlignment
失礼しました
0201デフォルトの名無しさん
2010/01/26(火) 20:42:54例
<Button CommandParameter="ここで同xaml内にある複数のエレメントを渡したい"/>
0202デフォルトの名無しさん
2010/01/26(火) 21:49:28こんな感じのデータクラスを作って
public class Hoge {
public int ID { get; set; }
public string Data { get; set; }
}
XAMLでHogeのアセンブリを参照
<Window x:Class="WpfApplication1.Window1"
xmlns:d="clr-namespace:WpfApplication1"
ほいさっさ
<Button ...
<ButtonBase.Content>Ok</ButtonBase.Content>
<ButtonBase.CommandParameter>
<d:Hoge ID="1" Data="AAAAAAAA"></d:Hoge>
</ButtonBase.CommandParameter>
</Button>
0203デフォルトの名無しさん
2010/01/26(火) 21:53:48おぉ!これは素晴らしい!
ありがとう!
0204デフォルトの名無しさん
2010/01/26(火) 22:47:28public class Hoge : DependencyObject {
public DependencyProperty IDProperty = DependencyProperty.Register("ID", typeof(int), typeof(Hoge));
public DependencyProperty DataProperty = DependencyProperty.Register("Data", typeof(string), typeof(Hoge));
public int ID {
get { return (int)this.GetValue(IDProperty); }
set { this.SetValue(IDProperty, value); }
}
public string Data {
get { return (string)this.GetValue(DataProperty); }
set { this.SetValue(DataProperty, value); }
}}
これでBindingが使えるようになる。
<d:Hoge ID="0" Data="{Binding Source=button1, XPath=Content}"/>
0205デフォルトの名無しさん
2010/01/26(火) 22:49:49おぉぉ、なるほど!
Dependency関係がよくわからなかったけどこういう風に使うのか!
また一つ勉強になしました。
ありがとう!
0206デフォルトの名無しさん
2010/01/27(水) 10:21:45あんなに重いものかね?
プログラム作る上でネットブックをスペックの下限の指標にしてるんだが
動画配信中はその他ウインドウのReDrawすらままならないんだが
0207デフォルトの名無しさん
2010/01/27(水) 10:32:39書け
0208デフォルトの名無しさん
2010/01/27(水) 10:51:43CompositeApplicationGuidance-Oct2009の以下のクイックスタート用ソリューションの
プロジェクトのプロパティや、Resources.resxを開こうとすると、必ずVisualStudioが強制終了します。
(エラーメッセージやダイアログが一切表示されず突然落ちます。)
同じ現象にあった方や対処法をご存知の方、いらっしゃいませんか?
強制終了するソリューション(Desktop only - Open QS)
・Directory Lookup Modularity QuickStart
・View Injection QuickStart
強制終了せずプロジェクトのプロパティを表示できるソリューション
・Commanding QuickStart
・View Discovery QuickStart
・Hello World QuickStart
・Configuration Modularity QuickStart
・Commanding QuickStart
0209デフォルトの名無しさん
2010/01/27(水) 11:02:35プロジェクト内にResources.resxがないことが原因のようです。
お騒がせしました。
0210デフォルトの名無しさん
2010/01/27(水) 14:29:15WinFormsだとStackTrace使ったりFormClosingEventArgsにCloseReasonが
あったんだけど、WPFでどうやったらいいか分からない
0211デフォルトの名無しさん
2010/01/27(水) 14:38:530212デフォルトの名無しさん
2010/01/27(水) 14:51:29ありがと
0213デフォルトの名無しさん
2010/01/27(水) 20:47:45それともICommand等でバインドしてViewのコントロールをViewModelに渡すのが正しい作法?
0214デフォルトの名無しさん
2010/01/27(水) 20:48:27○ChildWindow
0215デフォルトの名無しさん
2010/01/28(木) 12:04:190216デフォルトの名無しさん
2010/01/28(木) 21:34:09コンパイルOK、実行も何も問題ないのでこの警告をやめさせたいのですが何か方法はありますか?
0217デフォルトの名無しさん
2010/01/28(木) 23:37:42ってぐぐったらでてきたわ。
おまえらは自作で作れたか?
0218デフォルトの名無しさん
2010/01/28(木) 23:41:06それくらいベクトルで描けよ
■ このスレッドは過去ログ倉庫に格納されています