WPF(XAML, XBAP, .NET4.0)GUIプログラミング Part8
絵で描いてもらえればそれでいい
Blendのデータストアとかアホかと思う
結局XAMLでプログラミングしてるだけじゃん
折れ線の描画方法をおしえてください
955 :
デフォルトの名無しさん:2011/03/19(土) 11:03:42.62
Polyline
VisualState内のStoryboardで、
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="RenderTransform.X" Storyboard.TargetName="LayoutRoot">
<EasingDoubleKeyFrame KeyTime="0" Value="{Binding ActualWidth, ElementName=LayoutRoot}"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
こんなふうにValueに動的に値をいれたいんだけど、Storyboard内ではBindingは使えないらしい。
ウィンドウサイズによって値が変わるので動的にやりたいんだけど何かいい方法ないですかね?
957 :
デフォルトの名無しさん:2011/03/20(日) 21:26:04.30
OuterGlowBitmapEffectって.net4.0でビルドすると表示されない?
MSDNではBlurEffect使えって書いてあるけど
元絵とブラーさせたやつを重ねるのはメンドクサイ
何か良い方法はありませんか?
Freezableを分かりやすく解説してくれ
クリリンのことかー!
ドキュメントに書いてるだろ・・・
>>956 添付プロパティとして親のサイズに対する比率(0-1)で要素の位置を指定できるPanelを自作するとか
ピクセルシェーダならそういう条件での移動は簡単にできるので、移動させるだけならさすがにやりすぎだと思うけど
他にもエフェクトかけたりするならついでに移動もピクセルシェーダでやってしまう手もある
>>957 DropShadowEffect{ShadowDepth=0}
>>961 なるほど、カスタムパネル、ピクセルシェーダー。目から鱗です。
Canvas並の機能のGrid軽量版をつくろうかと思ってたのでまずはカスタムパネルやってみます。
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などを通して間接的に渡した方がよいということなんでしょうか。
964 :
デフォルトの名無しさん:2011/03/22(火) 19:13:17.24
>>961 DropShadow使ったらいいのか…
ありがとう、できました。
DropShadow だとタイトルバーみたいなグロー効果でないんだけど
この話題定期的に出るNE!
967 :
964:2011/03/22(火) 20:52:21.59
アニメーションが使いやすいな
Storyboadで回転しながら拡大しつつ色を変化させて移動
なんてDirectXとかでやったらちょっとコードがごちゃごちゃするけどXAMLならスッキリかける
>>968 そういうのはストーリーボード相当のものを自前で実装するからごちゃごちゃしませんよ。
その理屈ならWPF相当のものをDirect3Dで自前で実装すればごちゃごちゃしないし
Direct3D相当の抽象化レイヤを自前で実装して直接ハードを叩けばごちゃごちゃしないね
WPFやFLASHほど高機能ではないけどね。
アニメーションエディターは2DだとFlashやDirectorやアフターエフェクツから取り込んだりね。
ほとんどのところではベクター画像とりあつかってないよ。
3DだとMayaとかMaxのデータをそのまま再生できるようにしてりしてます。
OnPropertyChangedって意外に重いのね
UIの更新とかに比べたら誤差だからどうでもいい
500個くらい値かえたら結構カクカク
WinFormsのころはBeginUpdateってあったろ
それと同じこと
UIの更新に時間がかかってるだけで
OnPropertyChangedは関係ないな
使い方が悪い
どうすればいいの?
わかりません
情報を出してください
Rect(形状)と文字列(色の名前)のプロパティとをもつクラスAがあって
ObservableCollection<A> OCを用意して
ItemsControl内でRectangleGeometryでAのプロパティをBindingして箱パコパコ描いてて
MouseMoveでOCのヨウ素の文字列を書き換えてるだけ
おい、おまえのプログラム放射線だしてるぞ!
いまこんなの書いてるんだが
http://ideone.com/Zq6TX CommandParameterの指定をもう少しマシにできないものか
CommandParameter="{Binding PlacementTarget.SelectedItems,RelativeSource={RelativeSource FindAncestor,AncestorType=ContextMenu}}"
じゃなくて別なアプローチで…
これが駄目な理由はよく分からない
http://ideone.com/5BguP
WPFとは全く関係ないけど、GUI以外軽視してるプログラムが多くて悲しい
ワープロソフトにたとえるなら保存するときはいちいちファイル→名前をつけて保存(or上書き保存)をクリックしなきゃならなくて
Ctrl+Sキーで保存する機能がない、みたいな。
プログラマはもっとユーザーインターフェースのこと考えようぜ。
( ´_ゝ`)フーン
てか、それ、MSは再三言ってることじゃない。
WinFormsのころはBeginUpdateに相当するものはありますか?
実現できますか?
CompositionTarget.Rendering使うと
あるプライベート変数が
イベントハンドラから見たときと
それと別のスレッドから見たときとで値が異なるということが起きてるのですがなぜでしょう?
考えられるのは、自分の忘れてるところで書き換わってるか、
スレッドローカル属性付けちゃってるか?
>>985 ViewModel側でObservableCollection使うのやめて、
自前で、自分の好きなタイミングでCollectionChanged起こすようなコレクション作ればいいんじゃないかな。
見た目とコードの分離なんて机上の空論だよなw
まで読んだ
美人デザイナーと仕事ができる可能性を残している
>>989 アーキテクチャパターンを実装パターンと混同してるからそういうことになるんじゃないのかな。
MVCとかMVVMってどっちかって言うとアーキテクチャパターンなのに、
実装レベルの同一性で議論してないか、それ。
でも純粋に実装抜きでアーキテクチャだけならMVPパターンと同じでしょ
ViewとPresenterの間の通信にWPFのバインディング機能を使えば便利じゃね?
というのがMVVMなんだから、どうしても実装抜きには議論できないと思う
MVPよりMVVMのほうが単体テストしやすいような
いやー、わざわざそれに名前付ける必要あったのかなとも思う。
正直、ステートフルで仮想化されまくりなGUI向けMVCって言い方でもよかった気がする。
WPF用に作られた一般的なViewModelに対するViewを
もしWinFormsで実装するとしたら、Viewがdynamic型を通してViewModelを監視したり
ViewModelのコマンドを実行するようにすれば、V->VMの結合の強さもMVVMと全く同じになるけど
それをMVVMと呼ぶかというと…やっぱりMVPじゃないかなw
>>995 「ステートフルで仮想化されまくりなGUI向けMVC」長いよw
いや、もちろん、一般向けに言うときはMVCしか言わない。
どうせ細かい実装わかってない人にはそれで十分じゃなかったかなぁって。
次ぎ立てるから黙れ
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。