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

WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part8

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2010/12/05(日) 22:08:33
あたらしいユーザーインターフェースシステム、Windows Presentation Frameworkについて語るスレ。
.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/
0925デフォルトの名無しさん2011/03/15(火) 22:02:16.25
>>922
直接URL渡せばWMPで再生できるなら再生できるよ
>>924
XAMLも一緒ならUserControlでいい
カスタムコントロールはXAML(テンプレート)とコードを分離できるコントロールを作るためのもんだ
0926デフォルトの名無しさん2011/03/15(火) 22:33:15.69
MSのガイドラインに沿ったもの作ろうとすると途端にしんどいな
0927デフォルトの名無しさん2011/03/15(火) 23:01:20.41
>>925
UserControlの継承はやり方がよくわからんです。
継承元(一元化したい部分を含んでいる)はコードのみで書かないとうまくいかない感じです。
0928デフォルトの名無しさん2011/03/15(火) 23:06:02.25
・共通部分をまた別のUserControlとして括り出せないか
・コードをビヘイビアとして再利用できないか
を検討してね
0929デフォルトの名無しさん2011/03/15(火) 23:15:44.07
>>928
上が一番簡単そうだけど管理が煩わしそう。
下は今回のケースなら適用できそうです。
XAMLはResourceとして括れるだけ括ってみます。
0930デフォルトの名無しさん2011/03/15(火) 23:19:12.21
>>929
プレイヤーを起動すれば?
0931デフォルトの名無しさん2011/03/17(木) 01:07:26.98
DOBON.NET の中の人は
WPF攻略しないの?
0932デフォルトの名無しさん2011/03/17(木) 01:55:35.10
簡単な方のビヘイビア(添付ビヘイビア)だとインスタンスフィールド持てないので困った。
めんどうだけどBlendの方のビヘイビア使うべきか。
0933デフォルトの名無しさん2011/03/17(木) 04:04:36.19
どぼんのひともう死んでるんじゃないの?
情報も古いままだし、初心者とって紛らわしい使えないサイト
0934デフォルトの名無しさん2011/03/17(木) 08:56:08.38
初心者は>>908のサイト見てれば基本的なことは分かる。
これテンプレに入れといてもいいかもしれない。
0935デフォルトの名無しさん2011/03/17(木) 22:14:40.14
Commandが失敗したことってどう通知したらいいんだろう
0936デフォルトの名無しさん2011/03/18(金) 02:28:51.68
WPFの資料が少ない最大原因は
Expression Blendとかいうのがなかったらきつすぎるから。Visual StudioだけでやるならWindows Form のほうがいいし。
ごく一部の専門家が使うイメージだ。
解説ペーjなんて作っても
WPFやるならExpression Blendを買おう。
これ買ったこと前提ですすめます
なんてやったら、そもそもそんなの買うようなのは解説ペーjなんてなくてもMicrosoftのページでいいだろうし全然よんでもらえないし
かといってExpressionなしでやるのも
なにこれ?XAMLでアニメーションとか依存プロパティとかテンプレート作るのコード複雑になりすぎてちょっと無理ある
でもアニメーションとか使わないんだったらWindows Formでよくね?ってなるし。
0937デフォルトの名無しさん2011/03/18(金) 02:45:02.42
書き込む前に推敲した方がいい
0938デフォルトの名無しさん2011/03/18(金) 06:33:26.31
>936
WPFでも、Formsで実現できるレベルの事しかしないならBlendなんか要らん。
つか、使ってもたいして楽にならんよ。
0939デフォルトの名無しさん2011/03/18(金) 09:46:01.12
>>935
バインディングの失敗とは違って
制御はコードにあるんだからどうとでも
好きにできるだろ
0940デフォルトの名無しさん2011/03/18(金) 12:45:08.22
アニメーションなんかより

レイアウトエンジンの有無
半透明のサポート

の方がよっぽど需要。
これらはBlendが無くても十分役立つ。
0941デフォルトの名無しさん2011/03/18(金) 15:04:29.42
Blendのテストデータを自動生成する機能だけはVSにも欲しい
バインディングの設定自体はVSのデザイナでも十分やれるけど、
BlendがVMのデータを適当に自動生成してくれて、プレビューしながらUI作れるのは便利
0942デフォルトの名無しさん2011/03/18(金) 15:39:53.35
うむ
BlendはVS2010以上に重いし
0943デフォルトの名無しさん2011/03/18(金) 16:54:47.30
そろそろ仮想PC上にWindowsとBlend体験版をインストールしなおす時期だお…
0944デフォルトの名無しさん2011/03/18(金) 17:37:18.25
昨日削っていいから無料版Blend出して欲しい
0945デフォルトの名無しさん2011/03/18(金) 17:50:23.39
BlendExpress

・・・・そうなったらおれも使う
0946デフォルトの名無しさん2011/03/18(金) 19:21:02.77
無料版を出すくらいならVisualStudioに統合してくれと思うが。
0947デフォルトの名無しさん2011/03/18(金) 20:56:55.34
同意
全く分けてる意味無いと思う
こんなもんプログラム書けない人が使えるわけないわ
ビヘイビアとかInteractionRequestとか、どんどん本末転倒な方向に進んでる
0948デフォルトの名無しさん2011/03/18(金) 21:54:58.29
WPFはオワコン
0949デフォルトの名無しさん2011/03/18(金) 22:08:22.83
プログラマが作業の手間を軽減させるのであればいいソフトだ。
デザイナーはDesign使ってろってこった。
0950デフォルトの名無しさん2011/03/18(金) 22:16:13.60
デザイナとの分業とか、夢見てちゃだめだと思うわ。
デザイナ向けツールはあっても良いけど、VS単体でプログラマが作業できるようにならないと、WPFなんて絶対流行らんわ。
0951デフォルトの名無しさん2011/03/18(金) 22:20:45.10
分担するということは人件費がかかるということ
そんなことできる会社が日本のどこにある
0952デフォルトの名無しさん2011/03/18(金) 22:23:03.40
絵で描いてもらえればそれでいい
0953デフォルトの名無しさん2011/03/18(金) 22:32:24.18
Blendのデータストアとかアホかと思う
結局XAMLでプログラミングしてるだけじゃん
0954デフォルトの名無しさん2011/03/19(土) 11:02:58.84
折れ線の描画方法をおしえてください
0955デフォルトの名無しさん2011/03/19(土) 11:03:42.62
Polyline
0956デフォルトの名無しさん2011/03/20(日) 04:01:40.82
VisualState内のStoryboardで、
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="RenderTransform.X" Storyboard.TargetName="LayoutRoot">
<EasingDoubleKeyFrame KeyTime="0" Value="{Binding ActualWidth, ElementName=LayoutRoot}"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
こんなふうにValueに動的に値をいれたいんだけど、Storyboard内ではBindingは使えないらしい。
ウィンドウサイズによって値が変わるので動的にやりたいんだけど何かいい方法ないですかね?
0957デフォルトの名無しさん2011/03/20(日) 21:26:04.30
OuterGlowBitmapEffectって.net4.0でビルドすると表示されない?
MSDNではBlurEffect使えって書いてあるけど
元絵とブラーさせたやつを重ねるのはメンドクサイ
何か良い方法はありませんか?
0958デフォルトの名無しさん2011/03/22(火) 09:29:10.94
Freezableを分かりやすく解説してくれ
0959デフォルトの名無しさん2011/03/22(火) 12:03:42.97
クリリンのことかー!
0960デフォルトの名無しさん2011/03/22(火) 15:43:52.28
ドキュメントに書いてるだろ・・・
0961デフォルトの名無しさん2011/03/22(火) 16:10:17.04
>>956
添付プロパティとして親のサイズに対する比率(0-1)で要素の位置を指定できるPanelを自作するとか
ピクセルシェーダならそういう条件での移動は簡単にできるので、移動させるだけならさすがにやりすぎだと思うけど
他にもエフェクトかけたりするならついでに移動もピクセルシェーダでやってしまう手もある
>>957
DropShadowEffect{ShadowDepth=0}
0962デフォルトの名無しさん2011/03/22(火) 16:25:39.63
>>961
なるほど、カスタムパネル、ピクセルシェーダー。目から鱗です。
Canvas並の機能のGrid軽量版をつくろうかと思ってたのでまずはカスタムパネルやってみます。
0963デフォルトの名無しさん2011/03/22(火) 17:32:43.80
MainViewのメニューコマンドでいろいろなダイアログをモーダルで開くタイプのアプリケーションを
MVVMで作成しようとしています。
このとき、MainViewModelのコマンドからダイアログ(HogeDialog)を開くにはどうするのがいいんでしょうか。
(1) HogeDialogを先に作り、HogeDialogの中でHogeDialogModel(ViewModel)を作る
(2) MainViewModelでHogeDialogModelを先に作り、HogeDialogを後付けする
どちらにしても、HogeDialogをMainViewModel内で直接newすると
VMがVに依存することになってしまうので、HogeDialogはMainViewModel以外の場所で作る必要がありますよね。
それを考えると、(2)の方が(1)よりも構造がシンプルでVM間のデータの受け渡しも楽になると思うのですが
webでよく見かけるのは(1)の方ですよね。
そもそも単体テストを楽にするのが目的なんだから、(2)のようにVM同士を依存させるのは避けて
必要なものだけInteractionRequestなどを通して間接的に渡した方がよいということなんでしょうか。
0964デフォルトの名無しさん2011/03/22(火) 19:13:17.24
>>961
DropShadow使ったらいいのか…
ありがとう、できました。
0965デフォルトの名無しさん2011/03/22(火) 20:17:33.37
DropShadow だとタイトルバーみたいなグロー効果でないんだけど
0966デフォルトの名無しさん2011/03/22(火) 20:25:14.96
この話題定期的に出るNE!
09679642011/03/22(火) 20:52:21.59
パッと見できたと思ったけど
下のと比べると薄い…
ttp://msdn.microsoft.com/ja-jp/library/system.windows.media.effects.outerglowbitmapeffect.aspx
0968デフォルトの名無しさん2011/03/22(火) 22:08:50.87
アニメーションが使いやすいな

Storyboadで回転しながら拡大しつつ色を変化させて移動
なんてDirectXとかでやったらちょっとコードがごちゃごちゃするけどXAMLならスッキリかける
0969デフォルトの名無しさん2011/03/23(水) 11:54:36.84
>>968
そういうのはストーリーボード相当のものを自前で実装するからごちゃごちゃしませんよ。
0970デフォルトの名無しさん2011/03/23(水) 13:23:06.19
その理屈ならWPF相当のものをDirect3Dで自前で実装すればごちゃごちゃしないし
Direct3D相当の抽象化レイヤを自前で実装して直接ハードを叩けばごちゃごちゃしないね
0971デフォルトの名無しさん2011/03/23(水) 13:28:29.18
WPFやFLASHほど高機能ではないけどね。

アニメーションエディターは2DだとFlashやDirectorやアフターエフェクツから取り込んだりね。
ほとんどのところではベクター画像とりあつかってないよ。

3DだとMayaとかMaxのデータをそのまま再生できるようにしてりしてます。
0972デフォルトの名無しさん2011/03/24(木) 15:28:35.14
OnPropertyChangedって意外に重いのね
0973デフォルトの名無しさん2011/03/24(木) 15:49:25.44
UIの更新とかに比べたら誤差だからどうでもいい
0974デフォルトの名無しさん2011/03/24(木) 16:07:45.70
500個くらい値かえたら結構カクカク
0975デフォルトの名無しさん2011/03/24(木) 16:11:40.07
WinFormsのころはBeginUpdateってあったろ
それと同じこと
0976デフォルトの名無しさん2011/03/24(木) 16:13:52.03
UIの更新に時間がかかってるだけで
OnPropertyChangedは関係ないな
使い方が悪い
0977デフォルトの名無しさん2011/03/24(木) 16:24:11.62
どうすればいいの?
0978デフォルトの名無しさん2011/03/24(木) 16:34:57.71
わかりません
情報を出してください
0979デフォルトの名無しさん2011/03/24(木) 16:49:25.60
Rect(形状)と文字列(色の名前)のプロパティとをもつクラスAがあって
ObservableCollection<A> OCを用意して
ItemsControl内でRectangleGeometryでAのプロパティをBindingして箱パコパコ描いてて
MouseMoveでOCのヨウ素の文字列を書き換えてるだけ
0980デフォルトの名無しさん2011/03/24(木) 16:54:52.16
おい、おまえのプログラム放射線だしてるぞ!
0981デフォルトの名無しさん2011/03/24(木) 20:30:17.20
いまこんなの書いてるんだが
http://ideone.com/Zq6TX

CommandParameterの指定をもう少しマシにできないものか
CommandParameter="{Binding PlacementTarget.SelectedItems,RelativeSource={RelativeSource FindAncestor,AncestorType=ContextMenu}}"
じゃなくて別なアプローチで…

これが駄目な理由はよく分からない
http://ideone.com/5BguP
0982デフォルトの名無しさん2011/03/24(木) 23:53:35.32
WPFとは全く関係ないけど、GUI以外軽視してるプログラムが多くて悲しい
ワープロソフトにたとえるなら保存するときはいちいちファイル→名前をつけて保存(or上書き保存)をクリックしなきゃならなくて
Ctrl+Sキーで保存する機能がない、みたいな。


プログラマはもっとユーザーインターフェースのこと考えようぜ。
0983デフォルトの名無しさん2011/03/24(木) 23:58:02.93
( ´_ゝ`)フーン
0984デフォルトの名無しさん2011/03/25(金) 02:35:38.80
てか、それ、MSは再三言ってることじゃない。
0985デフォルトの名無しさん2011/03/25(金) 09:06:22.82
WinFormsのころはBeginUpdateに相当するものはありますか?
実現できますか?
0986デフォルトの名無しさん2011/03/25(金) 13:08:34.04
CompositionTarget.Rendering使うと
あるプライベート変数が
イベントハンドラから見たときと
それと別のスレッドから見たときとで値が異なるということが起きてるのですがなぜでしょう?
0987デフォルトの名無しさん2011/03/25(金) 22:55:23.95
考えられるのは、自分の忘れてるところで書き換わってるか、
スレッドローカル属性付けちゃってるか?
0988デフォルトの名無しさん2011/03/25(金) 22:56:33.75
>>985
ViewModel側でObservableCollection使うのやめて、
自前で、自分の好きなタイミングでCollectionChanged起こすようなコレクション作ればいいんじゃないかな。
0989デフォルトの名無しさん2011/03/26(土) 08:13:41.66
まあ、やもやしている人が多い部分ではある。
http://togetter.com/li/116145
0990デフォルトの名無しさん2011/03/26(土) 08:24:35.69
見た目とコードの分離なんて机上の空論だよなw
まで読んだ
0991 忍法帖【Lv=4,xxxP】 2011/03/26(土) 08:52:44.19
美人デザイナーと仕事ができる可能性を残している
0992デフォルトの名無しさん2011/03/26(土) 13:55:01.55
>>989
アーキテクチャパターンを実装パターンと混同してるからそういうことになるんじゃないのかな。
MVCとかMVVMってどっちかって言うとアーキテクチャパターンなのに、
実装レベルの同一性で議論してないか、それ。
0993デフォルトの名無しさん2011/03/26(土) 15:24:16.55
でも純粋に実装抜きでアーキテクチャだけならMVPパターンと同じでしょ
ViewとPresenterの間の通信にWPFのバインディング機能を使えば便利じゃね?
というのがMVVMなんだから、どうしても実装抜きには議論できないと思う
0994デフォルトの名無しさん2011/03/26(土) 15:34:47.45
MVPよりMVVMのほうが単体テストしやすいような
0995デフォルトの名無しさん2011/03/26(土) 15:35:40.61
いやー、わざわざそれに名前付ける必要あったのかなとも思う。
正直、ステートフルで仮想化されまくりなGUI向けMVCって言い方でもよかった気がする。
0996デフォルトの名無しさん2011/03/26(土) 15:44:45.71
WPF用に作られた一般的なViewModelに対するViewを
もしWinFormsで実装するとしたら、Viewがdynamic型を通してViewModelを監視したり
ViewModelのコマンドを実行するようにすれば、V->VMの結合の強さもMVVMと全く同じになるけど
それをMVVMと呼ぶかというと…やっぱりMVPじゃないかなw
0997デフォルトの名無しさん2011/03/26(土) 15:46:28.14
>>995
「ステートフルで仮想化されまくりなGUI向けMVC」長いよw
0998デフォルトの名無しさん2011/03/26(土) 15:50:46.81
いや、もちろん、一般向けに言うときはMVCしか言わない。
どうせ細かい実装わかってない人にはそれで十分じゃなかったかなぁって。
0999デフォルトの名無しさん2011/03/26(土) 15:55:29.61
次ぎ立てるから黙れ
1000デフォルトの名無しさん2011/03/26(土) 15:58:28.12
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part9
http://hibari.2ch.net/test/read.cgi/tech/1301122694/
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。