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

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん2010/08/22(日) 21:11:53
一向に普及しないユーザーインターフェースシステム
Windows Presentation Frameworkについて語るスレ。
パワフルで柔軟すぎるのが敗因か? 正直ついていけないよね…。

Visual Studio 2010
ttp://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

関連スレ
Microsoft Silverlight その6
ttp://pc12.2ch.net/test/read.cgi/tech/1271580489/

過去スレ
WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part6
http://hibari.2ch.net/test/read.cgi/tech/1274423236/
WPF(XAML, XBAP, .Net3.5)GUIプログラミング Part5
http://pc12.2ch.net/test/read.cgi/tech/1261879110/
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/

コードを貼る場合は以下のサイトの利用をお勧め。
run codeのチェックは外しておきましょう。
http://ideone.com/
0850デフォルトの名無しさん2010/11/29(月) 20:18:41
俺もデータバインディングやって触ってみたけど、
XaML
0851デフォルトの名無しさん2010/11/29(月) 20:20:07
やべ途中で切れた
XAML手書きでやってるのが多いね
VS2010のデザイナでどうやるのかよくわかんね
デザイナでできる事をわざわざ手書きでやりたくないしな・・
0852デフォルトの名無しさん2010/11/29(月) 20:39:08
デザイナなんて飾りです
0853デフォルトの名無しさん2010/11/29(月) 20:40:09
デザイナって
プロパティウィンドウのこと?
0854デフォルトの名無しさん2010/11/29(月) 22:50:42
デザイナーもIntelliSenseもVisual Studio 2010の一部です!
0855デフォルトの名無しさん2010/11/30(火) 00:08:02
俺のした勉強の仕方。
>>847 で概要チェック。
後は Expression Blend いじりながら Binding, Template, Animation まわり
の知識を固めていく。( 〜ブログ放浪〜 )
最後に MSDN。

まあ、WinForms の時もこんな感じで勉強、ってか慣れていったが。。
素養のある人は MSDN 直でもわかるのかね。
0856デフォルトの名無しさん2010/11/30(火) 00:17:54
Blendなって持ってネーヨ (´・ω・`)
0857デフォルトの名無しさん2010/11/30(火) 00:40:09
つ【学生】
0858デフォルトの名無しさん2010/11/30(火) 00:51:19
解説サイト見てちょっと改変して分かった気分になって、エッセンシャルWPF読んだらよく分からなくて
ブログ放浪してやっと自分がやってた事が理解できるようになって、最後にMSDN見て納得した。

その後Blendも買って楽しいWPFライフ←今ここ
0859デフォルトの名無しさん2010/11/30(火) 02:50:27
<setter property="なんとか"/>

このなんとかの部分インテリセンスきかねぇ
クソだな
0860デフォルトの名無しさん2010/11/30(火) 04:31:01
依存関係プロパティをもっていれば
INotifyPropertyChange
を実装する必要はないんですか?
0861デフォルトの名無しさん2010/11/30(火) 08:55:23
持てるなら。
0862デフォルトの名無しさん2010/11/30(火) 10:20:42
持たせてみせよう。
0863デフォルトの名無しさん2010/11/30(火) 10:23:48
プロパティ。
0864デフォルトの名無しさん2010/11/30(火) 10:31:37
>>859
最新の Silverlight Tools 入れたら IntelliSense 効くようになる。
0865デフォルトの名無しさん2010/11/30(火) 11:30:42
コマンドってなんやん
イベント利用したら

Button1Click+=(sender,e)=>MessageBox.Show("Hello World");

これだけでいいのに
なんかICommandインターフェースを実装してExecuteがどうたらこうたらやらなきゃいけなくてわけわからん
なんでイベントがダメでコマンドならいいんだ?俺には難しすぎる
0866 ◆Jzt/EX0TGY8T 2010/11/30(火) 11:48:37
>>865
別にコマンドは無理して使わなくてもいい

コマンドじゃなくてイベントだと
例えばボタンが押された処理動作を
メニューやホットキーなど複数の条件から呼び出したい場合
それぞれイベントハンドラを記述していくことになる
だが、コマンドを作っておけば、XAMLでコマンド名を書くだけでいい
それ以外はバインディングなどをイベントハンドラで処理する場合
値が正しいかどうかのチェックで動作を変える場合も
イベントだと自前で実装することになる
コマンドなら雛形があるのでそれにあわせて書けばいい

今のおれがわかるのはこれぐらいだな
0867デフォルトの名無しさん2010/11/30(火) 12:02:05
>コマンドじゃなくてイベントだと
>例えばボタンが押された処理動作を
>メニューやホットキーなど複数の条件から呼び出したい場合
>それぞれイベントハンドラを記述していくことになる
>だが、コマンドを作っておけば、XAMLでコマンド名を書くだけでいい

それはイベントだって同じじゃあないの
Methodというメソッドを作って
<Button Click="Method"/>
<Menu Click="Method"/>
ホットキーはしらんけど
<KeyPress="Method"/>
多分こんな感じでしょ
イベントハンドラはひとつで
XMLのほうでイベントハンドラ名を書くだけでいいっしょ
0868 ◆Jzt/EX0TGY8T 2010/11/30(火) 12:13:20
>>867
そういえばそうだな
Winフォームと比べてたわ

あとは、CanExuteがfalseの場合
呼び出しもとのコントロールが自動で無効になるとか
イベントだとEnable=falseとかしないとだめでしょ
0869デフォルトの名無しさん2010/11/30(火) 12:15:06
>>865
デリゲートがシリアライズしづらいからクラスでラップしちゃって Java みたいになってる。
あと、コマンドには実行可否の判定(CanExecute)がつきものなので。
0870デフォルトの名無しさん2010/11/30(火) 12:16:45
>>867
それはでも、コマンドである必要ない。

ユーザーからの入力イベントの他に、
ちゃんと意味論的なレイヤーのイベント(今コマンドでやってるようなこと)をデリゲートで処理ってのもできたはず。
やっぱ、CanExecute とシリアライズのしやすさの問題でわざわざ ICommand インターフェイスにしてあるんだと思う。
0871デフォルトの名無しさん2010/11/30(火) 12:30:33
イベントに実行できるかどうかの判定を持たせたものがコマンド
ってもんでいいのかなぁ・・・

コマンドの説明見ても、「上書き保存」は、既存のファイルが無かったらできないようにする
「切り取り」は、テキストが選択されてないとできないようにする
とかそんなサンプルばっかりだし
0872 ◆Jzt/EX0TGY8T 2010/11/30(火) 12:35:03
>>871
結局MVVMで依存しないようにするにはコマンド使うことになるわけで
そういうのが必要ない場合はイベントで普通に書けばいいんじゃない
0873デフォルトの名無しさん2010/11/30(火) 12:46:02
要するにイベントハンドラだけでは書きづらいような部分について、
新たにコマンドという概念を追加して
XAML上で使えるようにしたってことだな。
0874デフォルトの名無しさん2010/11/30(火) 13:27:05
シリアライズってのはどゆこと?逐次化?
0875デフォルトの名無しさん2010/11/30(火) 13:35:30
>>874
バイナリ列とかXML文字列に変換って意味<シリアライズ(直列化)。

コードビハインドなしのXAML中にかけるのは、直列化可能なものだけなのよね。
デリゲートは実は直列化できなくて、
XAML のイベントへの代入は結構内部的に微妙なことしてる
(XAML から自動生成される .g.cs の方にイベント追加の += が生成されてる)
0876デフォルトの名無しさん2010/11/30(火) 13:43:35
>>875
なるほど、たしかにビハインドのないカスタムコントロールではXAMLにイベントを書けない。
コマンドはプロパティで扱えるのでXAMLでかけるということだな。
プロパティが直列化できるのはMSがそう設計したから?イベントも同じように出来なかったのかな。
0877デフォルトの名無しさん2010/11/30(火) 14:27:35
デリゲートは中身メソッドだからなぁ。

プロパティ = 見かけ上はデータ → 直列化可能
イベント = デリゲート = 中身メソッド → ダメ

という感じ。

なんというか、初期化子使って
var obj = new Type { X = ... }
みたいに書けるものだけが XAML 化可能。
0878デフォルトの名無しさん2010/11/30(火) 15:42:31
コマンドはロジック側がビューに依存するのを避けるためにあるんだよ。
イベントだとイベントハンドラを登録する際にロジックがビューに依存してしまう。
コマンドは結局、ビューがロジックのpublicメソッドを呼んでるのと同じなんだけど
それをXAMLだけで宣言的に書けるようにしてある。
0879デフォルトの名無しさん2010/11/30(火) 15:47:01
XAMLとコードビハインドは同じViewとみなしてやっても問題ない。
0880デフォルトの名無しさん2010/11/30(火) 15:50:56
>>878
お前なんか勘違いしてるだろ

>>879
だよな、イベントでまったく不都合はない
08818782010/11/30(火) 16:15:23
コードビハインドをViewと見做すのはわかってるよ。
>>878でロジックがビューに依存すると言ったのは、VとVMの間の接続をそのままイベントに置き換えてしまった場合。
VのイベントハンドラでVMのメソッドを呼ぶようにすれば問題はないけど
それをXAMLだけでやれるようにしようとすれば、コマンドバインディングが必要になる。
0882デフォルトの名無しさん2010/11/30(火) 16:18:33
あんまりXAML側で何でもやる、というのは避けたほうがいいと思うけどなぁ。
デザインとメタデータに徹しさせて。
多国語対応するなら文字列リソースも分けないといけないし。
0883デフォルトの名無しさん2010/11/30(火) 16:26:41
あったまわりーから話の流れがつかめんが、イベントハンドラって種類によっては引数ちゃうやん?
イベントハンドラの場合、シグネチャ一緒やったらイベントハンドラ流用できっけど、シグネチャちゃうやつのイベントの場合やと
同じ処理したいって時は、いったんそいつのイベントハンドラ関数作ってからその関数内で同じ処理呼びださにゃならん。
コマンドにすりゃ、シグネチャ関係無しにどのイベントに対しても使える。って理解でOK?
0884デフォルトの名無しさん2010/11/30(火) 16:29:12
用語に酔ってる素人って事までわかった
0885デフォルトの名無しさん2010/11/30(火) 16:37:58
遅延バインドではいけないのですか?
0886デフォルトの名無しさん2010/11/30(火) 16:44:33
>>882
ユーザーコントロールとかビヘイビア作って XAML にそいつを書くってやり方すれば、
XAML 肥大化させず、かつコードビハインドにコード書く必要なくせる。

>>883
それは微妙。
イベントハンドラーの引数揃えりゃいいじゃん。
ICommand だって、パラメーター色々変えたいけどやむを得ず object 型だし。

そうでなくて、デリゲートはメソッドへの参照だというのがネックで、
XAML 化/XAML 中への記述がしにくいのよ、.NET のデリゲートの仕様的に。
0887デフォルトの名無しさん2010/11/30(火) 16:45:48
>>885
データバインディング自体が遅延バインドだけどもね。

遅延バインド/dynamic な動作は極力プログラマーの目に触れない方が安全。
だから、それをフレームワークの内側に閉じ込めて直接見えなくしてるのが WPF。
0888デフォルトの名無しさん2010/11/30(火) 17:05:14
イベントって Button.Click += this.OnClick; みたいに登録するでしょ?
つまりthisのクラスはButtonに依存するんだわ。
それをもしV-VMに置き換えたら V.Hoge += ((VM)this).OnHoge; となって
thisのクラス(VM)がVに依存してしまう。
0889デフォルトの名無しさん2010/11/30(火) 17:09:19
>>888
それも、データバインディングでイベントハンドラー登録ができれば解決したものの、
結局そこで >>886 の話になる。

XAML 中に書けるイベントハンドラー(のメソッド)はコードビハインド中のものに限られる。
ここが一番のネック。
0890デフォルトの名無しさん2010/11/30(火) 17:15:07
結論、イベントで問題なし
つまりWPFは必要ない
0891デフォルトの名無しさん2010/11/30(火) 17:19:47
>>890
XAMLとコードビハインドの関係が
イベントハンドラを介してつながるのが未だ主流、という話をしてるだけで、
誰もWPFが必要ないとは言ってないだろ。

日本語が読めないのか。
0892デフォルトの名無しさん2010/11/30(火) 17:20:00
流れ全く無視ワラタwwww
0893デフォルトの名無しさん2010/11/30(火) 17:24:36
なんか話の軸が色々あるね

・今利用者が多いの
→ コードビハインド中にイベントハンドラー直書き

・じゃあ、コマンドって?
→ イベント処理をデータバインディング使ってビューから分離するときに使う
 ここでネックになるのは、イベントだとビューから分離できない
 (ただし、ビューからの分離っての自体、アプリ規模がそこそこ大きくないと有効性低い)

・なんで Action とかでなく ICommand なの?
→ CanExecute も持たせたいから
 デリゲートの方がシリアライズしにくいから
0894デフォルトの名無しさん2010/11/30(火) 17:25:40
>>891-892
昨晩騒いで涙目になってた人でしょ
0895デフォルトの名無しさん2010/11/30(火) 19:18:38
>>888
thisのクラスはここでいうとコードビハインドのクラスでしょ。つまりXamlで宣言してる
ルート要素と同じインスタンス。
なのでXamlとコードビハインドはセットでViewなので、
V-VMでいうと
コマンドなら<Button Command={Binding hoge... } />と、XamlでVMの機能を呼び出すのに対し、
イベントなら、コードビハインドのハンドラ内でVM.hoge();と呼び出すことになる。
呼び出す場所がXamlかコードかの違いだけで、VとVMの結びつき自体は変わらないと思うんだが。
0896デフォルトの名無しさん2010/11/30(火) 19:29:01
>>895
クラスの依存か、インスタンスの依存かはちゃんと区別しないと。

インスタンスの依存は絶対起きる。これは当たり前。

切りたいのはクラスの依存。
で、そのためには dynamic にやる。

もちろん、コードビハインドで dynamic に VM 操作してしまえば依存は切れる。
けども、極力ユーザーに dynamic なコードは書かせたくなくて、
出来ればデータバインディングを使いたい。
(dynamic はフレームワークの内側に隠ぺいする。)
0897デフォルトの名無しさん2010/11/30(火) 19:36:48
つまり、WPFは使うなってことだな
0898デフォルトの名無しさん2010/11/30(火) 19:38:22
>>896
クラスの依存とインスタンスの依存の違いを教えて。
コマンドでもイベントでも、VがVMのインスタンスを持つのは同じ、
そしてどちらもそのインスタンスに対して呼び出しを行ってる。
0899デフォルトの名無しさん2010/11/30(火) 19:45:24
例えば、

ViewModel vm;
void ButtonClick(sender, e) {
vm.DoWork();
}
とかやってしまうと、View が ViewModel 参照しちゃってるでしょ、アセンブリ的に。
で、

void ButtonClick(sender, e) {
dynamic vm = DataContext;
vm.DoWork();
}
なら ViewModel の参照要らない。

データバインディングがやってることは後者(に近い)。
0900デフォルトの名無しさん2010/11/30(火) 19:47:07
これで何がいいかというと、DataContext をダミークラスに差し替えてテストができる。

interface とか継承ベースの強い型付けはテスト用のダミー差し替えがしにくい。
結局、リフレクションとかに頼った dynamic な挙動させたくなる。

でも、一方で、それは利用者の目には触れさせたくなくて、
出来ればフレームワークの内部に隠ぺいしたい。
0901デフォルトの名無しさん2010/11/30(火) 22:18:14
要するに大規模開発じゃなければ
ibentoでいい
0902デフォルトの名無しさん2010/11/30(火) 22:20:32
commandやビヘビヤーはblendで使うためのものだと自分を納得させた
0903デフォルトの名無しさん2010/11/30(火) 22:21:29
俺の場合は当分イベント利用で問題なさそうだ。
後からちまちまコマンドに書き換えても遅くはないだろう。
0904デフォルトの名無しさん2010/11/30(火) 22:28:08
コマンド面倒だから

>>899
ちょっと違うけどほぼ前者で
vm = DataContext as ViewModel;
ってやってた。
dynamicって何じゃー
0905デフォルトの名無しさん2010/11/30(火) 23:03:16
WPFすごすぎワロタ
0906デフォルトの名無しさん2010/11/30(火) 23:45:39
dynamicって遅延バインディングだからお勧めしないけどな。
ビルドは通るのに動かないなんて箇所を増やしてメンテできないだろ。
Bindingのエラーも潰すのが大変だっていうのに。
0907デフォルトの名無しさん2010/12/01(水) 00:30:20
>>904
as ViewModel したら結局クラス依存するからいまいち。
dynamic は C# 4.0 の機能で、内部的に動的コード生成して遅延バインド。

>>906
効率の意味で言ってるなら、メソッドキャッシュって仕組み持っててそこそこ早いよ。

ビルド時にチェック聞かないという意味で言うと、
どの道データバインディングしてる時点で内部挙動はリフレクション。

ただ、直接ユーザーの目に触れるかどうかって点では、触れない方がよくて、
その点、データバインディング使うとフレームワークの中に隠れてくれるのはありがたい。
0908デフォルトの名無しさん2010/12/01(水) 01:15:40

よく分からんが、ViewがViewModelにクラス依存したらダメなの?
Bindを使ってもdynamicを使っても結局ViewがViewModelにプロパティ名レベルでは依存するけど。
MVVMの動機の一つ「ViewModelの単体テストがしやすい」を考えると
ViewModel->Viewの依存を切っていることだけが重要だと思うが。

この動機で考えると、ViewのコードビハインドからViewModelを叩くこと自体はまったく不味くはないけど
密接に関連してしまい「ViewModelがViewの動作に依存する」になってしまうと不味い。
0909デフォルトの名無しさん2010/12/01(水) 01:54:16
coded-UI テストとかもあるし、View→ViewModelもやっぱ切りたいよ。

テスト抜きにしても、切れる依存は切りたい。
Java とかが DI とかに走りまくってるのも、静的な結合なくすためだし。

全くダメじゃなくて、程度の問題ではあるけども。
(依存あるコードの方が圧倒的に書きやすいので、そことのトレードオフ。)
0910デフォルトの名無しさん2010/12/01(水) 02:15:25
View->ViewModelはHogeViewがIHogeViewModelとかにだけ依存するようにすればよかろ。
どのみちVMはView専用なんだしテスト用のVMにだけ差し替えできれば夜露死。
0911デフォルトの名無しさん2010/12/01(水) 03:07:16
型チェックだけのためにインターフェイス継承は実装が面倒というのもあって。
実装自体じゃないな、その後の保守。

あと、継承ベースの型チェックはやっぱり依存度強い。
ダックタイピング的な型チェックでも、静的にチェックすることはやりようによってはできるんで、
そういう機能が C# に欲しかったりはする。
0912デフォルトの名無しさん2010/12/01(水) 03:22:28
念のために言っておくと、コスト/メリットのバランス考えると、
現状一番だと思うのは >>910 の言うようなインターフェイス挟むやり方。

で、>>911 は今後期待したい機能。
0913デフォルトの名無しさん2010/12/01(水) 03:35:30
テスト用とかが意味わからん
そんなもん必要ない
0914デフォルトの名無しさん2010/12/01(水) 03:36:13
アニメーションできた
単純にrectangleの色を変化させるとかLabelが動く程度なら難しいXML構文とかほとんど覚えなくていいから簡単だなぁ
0915デフォルトの名無しさん2010/12/01(水) 12:07:53
ListViewでデータの値に応じて表示したりしなかったりしたいんですけどどうしたらいいですか?
0916デフォルトの名無しさん2010/12/01(水) 12:09:52
スタイルを定義し、Style.TriggerでDataTriggerを定義。
0917デフォルトの名無しさん2010/12/01(水) 15:50:32
ちょっと意味不明なんだが教えてくれ

XAMLのほうで、Gridの中にRectangle(Name=rectangle1)とButton(Name=button1)を別々におく

で、C#のコードのほう

private void button1_Click(object sender, RoutedEventArgs e)
{
Duration d = new Duration(TimeSpan.FromMilliseconds(1000));
var a = new System.Windows.Media.Animation.DoubleAnimation(0, d);
rectangle1.BeginAnimation(Button.OpacityProperty, a); //ここでButtonのopacity
}

これ実行したら、button1を押すとrectangle1のOpacityが減っていって透明になるんだけど
なんでBeginAnimationの引数がButton.OpacityPropertyなの?
Rectangle.OpacityPropertyだとエラーでるんだけど。
なんでrectangle1のopacityに関するアニメなのに引数がButtonの依存プロパティなの?

どういうこと?
0918デフォルトの名無しさん2010/12/01(水) 16:03:36
んなこたないだろ
0919デフォルトの名無しさん2010/12/01(水) 16:08:46
>>917
気のせいじゃないの?
http://msdn.microsoft.com/ja-jp/library/ms605728.aspx
0920デフォルトの名無しさん2010/12/01(水) 16:47:48
>>864
VC#2010ExpressだけだとSilverlight Toolsインスコできなかった。書いてある通りだけど。
http://msdn.microsoft.com/ja-jp/library/cc838244%28VS.95%29.aspx

Visual Web Developer 2010 Expressの一番基本っぽいのだけ入れたらインスコできた。
http://www.microsoft.com/japan/msdn/vstudio/express/

xamlエディタがパワーアップしたにょろ!
0921デフォルトの名無しさん2010/12/01(水) 17:00:15
依存プロパティってなんでstaticなのに既存のインスタンスに影響持たせられるんだ

storyboad s= new storyboad();
Storyboad.setTargetProperty(なんとか);

Storyboadのstaticメソッド実行しただけなのに
これでなんかsのターゲットプロパティ変わってるし。
複雑怪奇すぎるぞwpf
0922デフォルトの名無しさん2010/12/01(水) 17:04:17
DependencyObjectから勉強しろ
0923デフォルトの名無しさん2010/12/01(水) 19:54:12
GridSplitterを使った時にさ、うまくGrid内に変化を納める方法ないの?
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" MinWidth="25" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Button Content="button1" />
<GridSplitter Grid.Column="1" Width="10" ResizeBehavior="PreviousAndNext" />
<Button Grid.Column="2" Content="button2" />
</Grid>
みたいなレイアウトで、スプリッターを左に持って行ったら、
スプリッターの移動は端っこで止まるけど、右のレイアウトがどんどん大きくなっていってしまう…
0924デフォルトの名無しさん2010/12/01(水) 22:29:32
>>923
ttp://www.netframeworkdev.com/windows-presentation-foundation-wpf/gridsplitter-drags-out-of-the-window-27306.shtml
0925デフォルトの名無しさん2010/12/01(水) 23:06:05
newしたい
0926デフォルトの名無しさん2010/12/02(木) 00:23:06
WPFのサイトってほとんどC#関連しかかかれてないね。
確かVisual Basic netでもWPFって使えたよね?
VBでWPFの人気がないのはなんでだろう
0927デフォルトの名無しさん2010/12/02(木) 00:25:48
WPFが使える、もしくは使おうと思うような人はそもそもVBなんて使わないから
0928デフォルトの名無しさん2010/12/02(木) 00:30:40
海外ソースの情報が多いというのもあるんじゃね
世界的にはC#のほうが多く使われてるから
0929デフォルトの名無しさん2010/12/02(木) 00:35:36
ググって出てきたサンプルがVBだとガックリ
0930デフォルトの名無しさん2010/12/02(木) 00:36:31
単純にVB使いがWPFについていけないんじゃない
0931デフォルトの名無しさん2010/12/02(木) 00:36:32
アニメーションやテンプレート、スタイルの単独での使い方はわかったが
スタイルとテンプレート合わせたり
スタイルとテンプレートとアニメーション合わせるともうわけわからん。

テンプレートで丸いボタンにして
ストーリーボードとかいうの使ってマウスカーソルが合わさると色が光って
スタイルでそれを全部のボタンに適用

みたいなことしたいんだがどうすればいいんだ。
0932デフォルトの名無しさん2010/12/02(木) 00:39:30
>>930
×VB→○VB6
×WPF→○OOP/CLR
だと思う
0933デフォルトの名無しさん2010/12/02(木) 00:58:01
WPFに限らず、漁って出てくる有益な情報はほぼ100%C#な気がする
有益な情報を発信できる人がVBしか使えないことはないだろうし、
そのうちでC#よりもVBのほうが好きって人はあんまりいないんじゃないかな
0934デフォルトの名無しさん2010/12/02(木) 01:01:47
>>931
一番いいのは、Blend で適当に何か書いてみて
生成されたコード眺めることなんだけどもね。

ほんと、Blend Express(無償)出ればいいのに。
0935デフォルトの名無しさん2010/12/02(木) 01:06:47
>>931
VisualStateManager使うのが正しいやり方だけど
正直VSMはBlendないときつい
0936デフォルトの名無しさん2010/12/02(木) 01:07:51
要するに
Visual Studio Expressだけしかもってない貧乏人は
アキラメロンってことか。
XAML PADとかいうのも使いづらい品
0937デフォルトの名無しさん2010/12/02(木) 01:14:55
やってできないことはないよ>VSM手書き
ただ明らかにデザインツール前提で非常にわかりにくい
0938デフォルトの名無しさん2010/12/02(木) 01:15:18
Blend高い(*´・ω・)(・ω・`*)ネー
趣味レベルの人向けのを5000円くらいで出してヨ
0939デフォルトの名無しさん2010/12/02(木) 02:21:56
自作のコントロール作って
それをVisual Studioのデザイナのツールボックスに追加するのはどうやんの?
0940デフォルトの名無しさん2010/12/02(木) 02:22:38
簡単なコードでコントロールができるのがかわいくして仕方がない
0941デフォルトの名無しさん2010/12/02(木) 02:25:08
>>939
リビルドで認識するはず
されない場合はIDEの設定を見てみて
0942デフォルトの名無しさん2010/12/02(木) 03:31:20
<Button.Background>
<StaticResource ResouceKey="なんとか"/>

このStaticResouceがインテリセンスで候補になーい!
Visual Studioの早期改善が求められる。
0943デフォルトの名無しさん2010/12/02(木) 03:37:53
関係ないけど、省略できる ResouceKey= や Path= を省略した場合に
値が属性と勘違いされて赤い字になるのがイヤ。
0944デフォルトの名無しさん2010/12/02(木) 04:29:22
現段階でWPFを使うのは時期早々
0945デフォルトの名無しさん2010/12/02(木) 04:34:31
ルーティングイベントがインテリセンスで出てこない

<Grid Button.Click="なんとか">
ここにボタンいっぱい配置するコード
</Grid>

↑のButton.Clickがインテリセンスで出てこない。
確かにまだ早い、のかも

でもWPFってVisual Studio 2005のころから(まだテスト段階だったらしいが)あるんだろ
それでもまだ早いって、相当遅れてるね。こりゃ、
0946デフォルトの名無しさん2010/12/02(木) 09:25:17
>>945
そのやり方に力入れてないからなぁ・・・
0947デフォルトの名無しさん2010/12/02(木) 09:26:13
というか、ForumなりConnectなりなんなりでフィードバック入れればいいのでは・・・
0948デフォルトの名無しさん2010/12/02(木) 12:01:23
Flexとか似たような技術の中ではWPFの開発環境はよくできてると思うよ
WinForms+VSが神すぎるだけ
そりゃVBやDelphiから続く系統の完成形なんだから比べたら可哀想
0949デフォルトの名無しさん2010/12/02(木) 13:20:17
個人輸入で買えば安いんじゃない
0950デフォルトの名無しさん2010/12/02(木) 14:18:58
外観はXAMLで
コードはC#で
が基本らしいけど
一部の外観はC#のほうで書いたほうがやりやすい。
レス数が950を超えています。1000を超えると書き込みができなくなります。