トップページtech
1001コメント282KB

WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2009/12/27(日) 10:58:30
あたらしいユーザーインターフェースシステム、Windows Presentation Frameworkについ
て語るスレ。.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/
0175デフォルトの名無しさん2010/01/24(日) 23:28:21
・・・環境にもよるんだろうけど作るだけなら吉里吉里でも
使えばよかろうに
0176デフォルトの名無しさん2010/01/25(月) 00:02:01
でもADVみたいなのにWPFはありだと思うけどなぁ。
UIかっこよくしてなんぼって感じもするし。
0177デフォルトの名無しさん2010/01/25(月) 00:34:22
>>174
やれるとしても当分先だと思いますが、これは確かに面白そうですよね。
たとえ今回の件にそぐわないとしても、近いうちにWPFには手をつけてみようかなーと思い始めてきました。
数値計算とかばかりやってきた身としては、もう少し普及して間口が広くなってほしいってのも本音ですけどね……

>>175
ADVみたいなものって説明が悪かったですね。
雰囲気としてはそれっぽいものではあるのですが、某レトロゲームのシステムを踏襲+拡張したものなので、
簡易的なものじゃちょっとまかなえないんです。分かりにくくてすみません。
0178デフォルトの名無しさん2010/01/25(月) 02:21:15
WPFと吉里吉里とで作れるゲームの幅は変わらないと思うよ
0179デフォルトの名無しさん2010/01/25(月) 03:55:47
吉里吉里はJavaScriptライクな言語TJS2の実行環境+クラスライブラリといった体裁だから、やろうとおもえば結構がっつり組めるよ

でもWPF製のゲームも見てみたいから頑張れ
0180デフォルトの名無しさん2010/01/25(月) 15:07:56
>>171
こういうの見るとモチベーションが上がるな。
上がって何をするかというと、2chとMSDNを往来することなのだが。
0181デフォルトの名無しさん2010/01/25(月) 15:14:07
こういうのは早いのになんでDrawingContextは遅いの?
もっと早く線描けないの?
0182デフォルトの名無しさん2010/01/25(月) 15:27:21
>>181
処理が違うから?
大量の色情報に対して同じ処理を高速にやってるだけだし
上画像のピクセルのアルファ値を高速に変えればできる処理なんで
GPUのもっとも得意とするところじゃん

DrawingContextで描画するような内容ってピクセルのアルファ値かえるだけのような
話じゃないしね
0183デフォルトの名無しさん2010/01/25(月) 16:27:31
c#でも画像の合成表示ならできたな
ちらつきとか抑える方法はよくわからんけど
サンプルソース居る?

というか配布する際どれを渡せばいいんだろうw
.netのソースって開発環境のパスが埋もれてるとか聞いたけど
0184デフォルトの名無しさん2010/01/25(月) 16:35:33
*.Cs とか *.xaml とかでいいんじゃね?
0185デフォルトの名無しさん2010/01/25(月) 16:44:34
http://uproda.2ch-library.com/2079536UQ/lib207953.zip
pass 無し

formにpicturebox x1とbutton x3とtimer x1を貼り付けてイベントハンドラを
割り当ててくれれば動くと思うよ
0186デフォルトの名無しさん2010/01/25(月) 17:19:21
あと最近いじっててこんなのもできた
http://uproda.2ch-library.com/207979P9U/lib207979.png

FormのPaitイベントでDrawLineにArrowAnchor指定して物なんだけど
別の機能をちょっと足せばグラデーション+AntiAliasで描ける
0187デフォルトの名無しさん2010/01/25(月) 17:27:00
なるほど
0188デフォルトの名無しさん2010/01/25(月) 18:38:03
デバッガでエラーが起きた場所が分からなくてつらい
0189デフォルトの名無しさん2010/01/25(月) 19:47:44
>>185
スレチ
0190デフォルトの名無しさん2010/01/25(月) 20:39:07
遅くなってしまい申し訳ありません。168その他です。
昨日はくだらない質問に対していろいろとありがとうございました。

氷点下の世界を旅して、思い切ってWPFの本を買いに行ってみたのですが、取り扱ってる店が1件もありませんでした……
佐川のお兄さんに運んで貰おうと思います。

>>178,179
吉里吉里ってそこまで高性能だったんですね。
あまり使う機会もありませんし、ハッシュは配列にキャストしてから〜ってのがうざったくて放置してました。認識改めます。

0191デフォルトの名無しさん2010/01/25(月) 23:07:44
むしろWPFを使いこなせてないから同レベルくらいに見えるんだろう
それが悪いというんじゃなく、それくらい習熟するのは時間がかかる
0192デフォルトの名無しさん2010/01/26(火) 00:14:08
ほとんどのノートPCで使われてるSynapticsのタッチパッドドライバがWPFと相性悪いらしく、
ListBoxほか大多数のScrollViewer系のコントロールで
パッドのフチを使ったスクロールができず困っていたのだけど、
今年に入ってSynapticsがScrybeというツールのCTPを公開し
その中に最新のタッチパッドドライバ15.0.0.1が含まれていて、
インストールしたところWPFアプリでもスクロールできるようになった!
http://www.uscrybe.com/index.html

PCメーカーのサポートページから入手できるタッチパッドドライバは大抵古いバージョンなので
WPFのスクロールで困ってる人はこっちをインストールしてみてくれ
以上チラシの裏でした
0193デフォルトの名無しさん2010/01/26(火) 02:49:31
>>191
つまりWPFのほうがより高度なものが作れるってこと?
0194デフォルトの名無しさん2010/01/26(火) 08:05:08
>>171の例1つとっても、画像使うか既定プリセットしかないきりきりより、
自分でHLSL書けるWPFのほうが高度だよ。サンプラーだって上限まで使えるしね。

ていうか、制御するコードにしてもVSとC#使えるんだから、そこらの簡易言語じゃ
勝負にならんでしょ。覚えることは多いけどね。
0195デフォルトの名無しさん2010/01/26(火) 08:21:32
綺麗なのだけじゃなく、スピード重視のローレベルな描画メソッド充実させてほしいな
そしたらもっと裾野広がるのに
0196デフォルトの名無しさん2010/01/26(火) 09:36:54
どっちにしてもWPF使ってツクールみたいなの作るはめになるんだと思うけどな。
べたがきだと使い回しきかんだろうし。
0197デフォルトの名無しさん2010/01/26(火) 09:49:21
>>196
ツクールを作ってた人が楽になるだけだよね

後はツクールを使ってた人が高度な実装知識無しで組めるようになるので
頑張ってツクールが担当してたエリアまで食い込んでくるかも

windows ≒ IE
XAML ≒ HTML
C# ≒ Javascript

こんな感じじゃない?
0198デフォルトの名無しさん2010/01/26(火) 09:50:21
windows ≒ IE
これより
VM ≒ IE
0199デフォルトの名無しさん2010/01/26(火) 10:14:38
Imageに画像のセンタリングをやめさせる方法はありますか?
0200デフォルトの名無しさん2010/01/26(火) 10:19:40
自己解決
VerticalAlignment, HorizontalAlignment
失礼しました
0201デフォルトの名無しさん2010/01/26(火) 20:42:54
パラメータに複数のエレメントを渡したい時はどのようにすればいいのでしょうか?


<Button CommandParameter="ここで同xaml内にある複数のエレメントを渡したい"/>
0202デフォルトの名無しさん2010/01/26(火) 21:49:28
>>201
こんな感じのデータクラスを作って
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
>>202
おぉ!これは素晴らしい!
ありがとう!
0204デフォルトの名無しさん2010/01/26(火) 22:47:28
補足、作法にのっとるなら依存関係プロパティ
public 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
>>204
おぉぉ、なるほど!
Dependency関係がよくわからなかったけどこういう風に使うのか!
また一つ勉強になしました。
ありがとう!
0206デフォルトの名無しさん2010/01/27(水) 10:21:45
そういえばGyaOがヤフーに行ってから動画配信がSilverLight使ってるんだが
あんなに重いものかね?

プログラム作る上でネットブックをスペックの下限の指標にしてるんだが
動画配信中はその他ウインドウのReDrawすらままならないんだが
0207デフォルトの名無しさん2010/01/27(水) 10:32:39
OSを
書け
0208デフォルトの名無しさん2010/01/27(水) 10:51:43
VisualStudio2008ProSP1(Silverlight3 Tools for VS2008SP1 -JPN導入済、OS:XP)で、
CompositeApplicationGuidance-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
>>208です
プロジェクト内にResources.resxがないことが原因のようです。
お騒がせしました。
0210デフォルトの名無しさん2010/01/27(水) 14:29:15
WPFでWindowが閉じられる原因ってどうやったらわかりますか?

WinFormsだとStackTrace使ったりFormClosingEventArgsにCloseReasonが
あったんだけど、WPFでどうやったらいいか分からない
0211デフォルトの名無しさん2010/01/27(水) 14:38:53
http://social.msdn.microsoft.com/Forums/en/wpf/thread/549a4bbb-e77b-4c5a-b724-07996774c60a
0212デフォルトの名無しさん2010/01/27(水) 14:51:29
WndProc使うしか無いのか…

ありがと
0213デフォルトの名無しさん2010/01/27(水) 20:47:45
ChildFormのthis.DialogResultはViewに対する操作だからView側で処理して良いのかな?
それともICommand等でバインドしてViewのコントロールをViewModelに渡すのが正しい作法?
0214デフォルトの名無しさん2010/01/27(水) 20:48:27
×ChildForm
○ChildWindow
0215デフォルトの名無しさん2010/01/28(木) 12:04:19
Modelを触らない操作だからViewでOK
0216デフォルトの名無しさん2010/01/28(木) 21:34:09
同一ソリューション内の他のプロジェクトをclr-namespaceを使ってXAML内で参照すると"CLR名前空間が定義されていません"と警告が出ます。
コンパイルOK、実行も何も問題ないのでこの警告をやめさせたいのですが何か方法はありますか?
0217デフォルトの名無しさん2010/01/28(木) 23:37:42
WPFでhttp://daisuke-watanabe.com/350/みたいなローディングの画面は簡単に作れますか?

ってぐぐったらでてきたわ。
おまえらは自作で作れたか?
0218デフォルトの名無しさん2010/01/28(木) 23:41:06
ラスターイメージ使ったら負けだろ
それくらいベクトルで描けよ
0219デフォルトの名無しさん2010/01/29(金) 10:08:13
>>217
WPFでそういうことをやろうとも思わなかったけど
DirectXでやれたようなことがむき出しになってるので
できないことはないだろうな

というかWPF使わなくてもVC#でも可能なレベルだろ
個人的にはそのアニメーションすらCPUパワーの無駄とか
思ってしまう
0220デフォルトの名無しさん2010/01/29(金) 11:21:42
http://www.dotup.org/uploda/www.dotup.org602930.png
こんなんでいいだろ
0221デフォルトの名無しさん2010/01/30(土) 00:44:46
>>220
わたし女子中学生だけどそれはないわ
0222デフォルトの名無しさん2010/01/30(土) 10:23:14
>>220
あたし女子小学生だけどそれはないね
0223デフォルトの名無しさん2010/01/30(土) 10:26:29
ぼく女子高生だけどそれはない
0224デフォルトの名無しさん2010/01/30(土) 10:43:06
男子相撲部だけどごっつあんです
0225デフォルトの名無しさん2010/01/30(土) 13:20:27
http://www.dotup.org/uploda/www.dotup.org606221.png
わがままなおっさんたちだな
0226デフォルトの名無しさん2010/02/02(火) 13:45:51
MVVMって流行だけどさ、
例えば、読み込むModelが複雑かつ長大な入れ子構造になっている様なとき、
ViewModelを作るコーディング時間と、実行時のコストって大変なものになると思うけど、
それでも分離しなくてはならないの?
0227デフォルトの名無しさん2010/02/02(火) 14:05:59
>>226
テストによる品質保持にかかるコストがそれらを上回るなら。
0228デフォルトの名無しさん2010/02/02(火) 14:19:23
ModelがINotifyPropertyChangedをしっかり実装してるなら、
そのままか同型のコピーをViewModelやViewに引き回しても問題ない。
0229デフォルトの名無しさん2010/02/02(火) 15:40:50
最近はそれを見越して始めから依存関係プロパティ付けて実装することが多いな・・・
0230デフォルトの名無しさん2010/02/02(火) 22:04:52
WPFはまだ仕事では使ってないけどみんなはどう?
0231デフォルトの名無しさん2010/02/02(火) 22:12:19
当分縁がなさそう。
クライアントアプリを開発する案件がそもそも無いっす。
0232デフォルトの名無しさん2010/02/04(木) 01:28:18
クライアントアプリを開発する人に聞いてるんだと思うよ
0233デフォルトの名無しさん2010/02/04(木) 06:35:44
そういう人が居ないんじゃない?
0234デフォルトの名無しさん2010/02/04(木) 07:04:51
よく”まだ”使ってませんって聞くけどいつになったら使う日が来るんですか?
0235デフォルトの名無しさん2010/02/04(木) 08:21:35
VS2010、.NET4のbetaがとれたくらいか、
VS2010SP1、.NET4.5がでるころ
0236デフォルトの名無しさん2010/02/04(木) 08:24:51
Win2kが根絶されるまでは無理ぽ
0237デフォルトの名無しさん2010/02/04(木) 13:34:40
タブページとかXPで表示するとひどい目に遭うけどね
0238デフォルトの名無しさん2010/02/04(木) 20:00:09
NT6が天下を取る頃
0239デフォルトの名無しさん2010/02/05(金) 01:12:51
楽だから選択権があれば使ってるよ
でも重いから客には嫌われてるみたい
0240デフォルトの名無しさん2010/02/05(金) 02:22:05
directx9が満足に動かないビジネス機じゃ重いかもな
0241デフォルトの名無しさん2010/02/05(金) 07:52:21
・・ということは私を含めみんな趣味レベルでWPFやってるってことか・・・。
主流になってくれとまでは言わんが、日の目を見ることなく自然消滅ということにはならんことを祈る
0242デフォルトの名無しさん2010/02/05(金) 08:45:02
いや、趣味レベルでやってるのはあんただけだとおもうぞw
0243デフォルトの名無しさん2010/02/05(金) 09:12:23
VS2010、Expression Encoder 3、Evernoteとかビジネスアプリの事例も増えてきてる
0244デフォルトの名無しさん2010/02/05(金) 09:33:08
MDXやXNA臭がするのは事実
0245デフォルトの名無しさん2010/02/05(金) 09:38:54
> XNA臭
するするwwww
0246デフォルトの名無しさん2010/02/05(金) 09:42:25
わざわざageて自演ですか?
0247デフォルトの名無しさん2010/02/08(月) 22:32:50
>>228
そこまでやったら、Modelを直接バインドしたいなw
0248デフォルトの名無しさん2010/02/08(月) 22:49:34
エッセンシャルWPFのP324にあるTreeViewとHierarchicalDataTemplateの
例がさっぱり分かんねーーーーー。
Binding Path='.'ってなんぞ。
0249デフォルトの名無しさん2010/02/08(月) 22:58:47
そこにバインドされているDataContext自体。
0250デフォルトの名無しさん2010/02/08(月) 23:01:54
綺麗さよりもスピード重視したWPFがあればいいのに
0251デフォルトの名無しさん2010/02/08(月) 23:02:37
DirectXで直接ゴリゴリやればいいじゃん
0252デフォルトの名無しさん2010/02/08(月) 23:10:06
DirectXわかんない
0253デフォルトの名無しさん2010/02/08(月) 23:14:50
WPFはバインドで動的にリフレクションの黒魔術で
エロイムエッサイムしている時点でどうがんばっても速度は限界があるだsろ。
0254デフォルトの名無しさん2010/02/08(月) 23:17:57
フレームワーク全体としてはともかく描画だけなら速くできるだろ
そこ分離するためにDrawingみたいなちょっと低レベルなレイヤがあるんだから
0255デフォルトの名無しさん2010/02/08(月) 23:35:42
>>247
そこまでやったら、俺のItemを美人Modelに直接バインドしたいなw
0256デフォルトの名無しさん2010/02/09(火) 00:10:06
面白いと思って書いてるんだろうか
0257デフォルトの名無しさん2010/02/09(火) 00:17:26
たくさんレス付いてると思ってわくわくしながらリロードしてるんだろな
0258デフォルトの名無しさん2010/02/09(火) 00:28:51
少しつれた...
0259デフォルトの名無しさん2010/02/09(火) 00:30:59
今時こんなレスでも釣れたって言うのか
0260デフォルトの名無しさん2010/02/09(火) 05:07:34
十分大漁です(´・ω・`)
0261デフォルトの名無しさん2010/02/09(火) 06:08:29
>>249
DataType="{x:Type io:DirectoryInfo}"で指定した型をコンバーターで返しているから、
返ってきたDirectoryInfo[]もHierarchicalDataTemplateの対象になってるってことですか?
IsExpandとかどう処理してんのか謎。

snipet
<UserControl.Resources>
<HierarchicalDataTemplate DataType="{x:Type io:DirectoryInfo}">
<HierarchicalDataTemplate.ItemsSource>
<Binding Path='.'>
<Binding.Converter>
<local:GetFileSystemInfoConveter />
</Binding.Converter>
</Binding>
</HierarchicalDataTemplate.ItemsSource>
<TextBlock Text="{Binding Path=Name}" />
</HierarchicalDataTemplate>
</UserControl.Resources>

<TreeView ItemsSource="{Binding}" />
0262デフォルトの名無しさん2010/02/09(火) 06:58:15
> <HierarchicalDataTemplate DataType="{x:Type io:DirectoryInfo}">
> <HierarchicalDataTemplate.ItemsSource>
> <Binding Path='.'>
型を返しているんじゃなくて、DataType=...は、「この型を表示要素に変換するDataTemplateだよ」と書いているだけ。
リソースに書いてあるデータテンプレートがあれば、明示的にデータテンプレートを書かなかった場合に
その型のインスタンスをバインドしたときに自動的に適用される。

> 返ってきたDirectoryInfo[]もHierarchicalDataTemplateの対象になってるってことですか?
このコンバータはDirectoryInfoから、IEnumerable<DirectoryInfo>に変換するのかな?
ならば、上と同様に型が一致すれば適用される。あとは再帰的に。
0263デフォルトの名無しさん2010/02/09(火) 10:40:42
>>262
後出しになってすいません。
コンバータはreturn ((DirectoryInfo)value).GetDirectories();です。
レスありがとうございます。理解が進みました。
0264デフォルトの名無しさん2010/02/10(水) 00:48:39
VS2010RC出たね
WPFは作る方は楽なんだろうけど
使う方から見ると悪夢だな
0265デフォルトの名無しさん2010/02/10(水) 00:50:17
>>264
そう?
0266デフォルトの名無しさん2010/02/10(水) 10:30:27
VS2010に関して言えばレンダリングにWPF使ってるだけなので
WPFだから特に楽って事もないだろう
0267デフォルトの名無しさん2010/02/10(水) 15:12:52
WPFでフリーソフト作ってるけどWinXPは動作保障外にしてる
間違ってないよね俺
0268デフォルトの名無しさん2010/02/10(水) 15:19:44
>>267
間違ってます
0269デフォルトの名無しさん2010/02/10(水) 15:21:37
フリーソフトで動作保証なんてあるんか?
0270デフォルトの名無しさん2010/02/10(水) 15:24:47
>>269
上手く動かなくても知らんってこと
0271デフォルトの名無しさん2010/02/10(水) 15:46:09
フリーソフトなんだから好きにしたらいいよ
0272デフォルトの名無しさん2010/02/10(水) 19:30:19
XPなんて臭いもん外すだろ…>>267は正しい
0273デフォルトの名無しさん2010/02/10(水) 19:33:19
WPFを使っているとXPとVista/7で細かい部分で挙動が違うことがままあるからなぁ…
XPを保証外ってのは賢明だな。
0274デフォルトの名無しさん2010/02/10(水) 19:36:04
XPは臭いのか

まあそれはいいとして確かにXP->Vistaでかなり変わってるからなあ
■ このスレッドは過去ログ倉庫に格納されています