元スレMicrosoft Silverlight その7
silverlight覧 / PC版 /みんなの評価 : ○
701 = :
感だけどシリアル保存用のpublicクラス作ってそのクラスを使って保存用データを一旦作って
そいつを渡してみる
確かシリアライズってpublicクラスでプロパティなんかもpublicじゃないと使えなかったような
702 = :
おっと自分の質問忘れるところだった
<UserControl>
<Canvas>
<my:MyCanvas>
</my:MyCanvas>
</Canvas>
</UserControl>
MyCanvasが持ってるスライダーの値を使ってCanvasのスケールを操作したい場合の
バインディングってどう書けばいいんだろう
<ScaleTransform ScaleX="{Binding Path=Value,ElementName=[ここがわからん]}"/>
703 = :
>>700
IsolatedStorageSettings クラス
分離ストレージにキーと値のペアを格納する Dictionary<TKey, TValue> を提供します。
SiteSettings.SaveはiniファイルやCookieに相当する、
[AttribName: value]
形式の連想配列で表現できるようなデータを格納するクラスだから。
どんなデータを保存するか良く考えよう。
編集中のドキュメントを保存するならSystem.IOを使う。
あとデータメンバにインスタンス参照を含むようなものはシリアライズが難しいから、
それを文字列として表現できるかよーく考えよう。
704 = :
>>702
そこはドキュメント通りなら以下の通り。
バインド方向にもよるだろうけど。
> 対象となる要素の Name プロパティまたは x:Name 属性の値。
<Slider x:Name="scaleSlider"/>
...
<ScaleTransform ScaleX="{Binding Path=Value,ElementName=scaleSlider}"/>
705 = :
>>700
そのクラスおよび全ての基底からシリアライズできない型のメンバを排除する
具体的には、
1. シリアライズできないメンバを削除orシリアライズ可能な型に置き換え
2. クラスにDataContract属性を、シリアライズできるメンバだけにDataMember属性を付ける
なんだが、シリアライズするならモデルだろうからUIElement持っているのがおかしい
あ、自前のクラスでなくて、シリアライズできないものを派生しているのは論外だから
706 = :
>>704
MyCanvasというのがユーザーコントロールの場合はどうも無理ぽいですね・・・
しかしバインディングで対処できる箇所を書き換えてますがコードが減る減るw
707 = :
Binding.Converterで変換する際に一つ外部から要因を与えたい場合はどうすればいいのでしょうか?
double A 変換したい数値
double B Aを変換の際にかけたい数値
double C Binding.Converterの変換結果
Bはスケールなのでユーザーの操作で数値が変わる
708 = :
VMで何でも出来るんだから
Binding.Converterってあんまり出番ない気がするけど気のせい?
709 = :
>>707
リソース中に
<XxxConverter x:Key="xxx" B="111" />
って書いて、こいつを {StaticResource} で読めばいいんでは。
(XxxConverter 作るときにpublicなプロパティBを定義しとく)
>>708
それはそれでめんどくさいけどもね。
管理しないといけないPropertyChangedの量増えるし。
710 = :
>>709
<XxxConverter x:Key="xxx" B="111" />
このBの部分をさらにバインドで処理可能ですか?
712 = :
バインディング系で便乗
XAMLに
<TextBlock Text="{Binding Path=Power, Mode=OneWay}" />
があったとして、分離コードのほうでプロパティにPowerを含むオブジェクトをDataContext
に突っ込む
this.DataContext = 該当オブジェクト;
こうすると、DataContextに突っ込んだオブジェクトのPowerが増減するたびにXAMLが表示して
いるPowerも変化すると思うんだけどなんか間違ってる??
どうも動きがOneTimeになってそうなんだよな~読み込み時の値しか適用されない
713 = :
INotifyPropertyChangedは実装してる?
714 = :
>>713
なるほど、そんなことをしないといかんのか。
しかしこれプロパティがいっぱいあるクラスだとかなり大変じゃない?
715 = :
>>714
ツール化してる人もいるね
でもデータ保持クラスに決まった記述さえしてしまえば
あとは勝手にデータを参照更新してくれるんだから楽をするための
苦労と思えば・・・
コードをしこしこ書いてバグで悩むよりよっぽどいい
717 = :
>>706
MyCanvasが公開しているはずのスライダー値のプロパティにバインドするだけじゃないの?
ユーザーコントロールの子コントロールに外部からアクセスしようとか阿呆の所業
>>707
OneWayならMultiBindingで可能だけど、逆方向も必要ならVMの仕事だろうな
例えば、getter, setterにC=A*B, A=C/Bを考えている場合など
718 = :
>ユーザーコントロールの子コントロールに外部からアクセスしようとか阿呆の所業
うお・・・できないのか・・・
名前さえ付けとけば見えると思ったのにw
719 = :
出来なくはないがめちゃくちゃになりそうではないか・・・
720 = :
そんなユーザーコントロールの意義を真っ向から否定するようなことするくらいなら、
最初からユーザーコントロールなんて作らなければ良いと思う
721 = :
>>720
バインディングでコード量が減ったのでユーザーコントロールに分けてたのを
元に戻すことにしましたw
バインディング使うとほんとコード量減るw
チェックボックスの関連で質問が・・・
1) 起動して何もデータ追加なし
2) 制御点1個の曲線を追加
3) 2)で追加した曲線の制御点を移動
4) 2)で追加した曲線の塗りつぶしをONにする
5) マーカーどれでもいいので触ってみる
質問したいのは4)で塗りをONにするためのチェックボックスにチェックをつけると
FillCheckBox_Checkedイベントで画面の更新をしてるんだけど
同時にバインドしてあるデータの更新も期待してるんだけど遅れるのか4)で
チェックしたのに色が塗られない
でも5)のようにマーカーを移動するとバインドしてあるデータの更新は行われてるので
塗りが反映される
何か対策する方法は無いかな?
WPFとSilverLightではUpdateSourceTriggerの指定可能な項目にも違いがあって
PropertyChangedが無いようだし
722 = :
フリーのカラーピッカーってないんですかね?
無いのなら作ろうかと思うんですが需要あるかな?
724 = :
>>723
厳密ってのがなにかよくわからんがHSVなら一応そのアドレスのもなってね?
円形がいいってのならそれはだめだろうけど
725 = :
>>724
デバイス依存じゃなくて物理量定義のやつ。
AdobeRGBとかxyYとかL*a*b*とか。
726 = :
>>725
それもMs-PLで公開してくれるのかな?
727 = :
へーこんなライセンスあるのか
http://www.microsoft.com/japan/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx
Ms-PLなら使わせてもらおうw
勉強はしたけどw
728 = :
HSVのカラーピッカーってHを変えたら256x256回も毎度計算するんだろうか?
起動時に計算してプールするにしても無駄にメモリと時間食いそうだし
一般的な3DCGの頂点カラーさえ使えればポリゴン2枚で正方形作って
四隅の色だけ計算して後はピクセルシェーダーに担当させればよさそうなんだけど
SLってその辺どうなんだろ?
731 = :
Silverlightで作った物をアップするのにどこ使ってますか?
xapに対応したところってあんまり無いような・・・
732 = :
MIMEが登録されてなくても同じドメインからHTMLで呼び出す分には使えたと思うけど
733 = :
html埋め込みでxreaは行けるよ
734 = :
Silverlightのソフトウェア・シェーディングは意外なほどサクサク動いてくれたけど
Moonlightはもっと踏み込んで、シェーダにハードウェア・アクセレーションが効くらしい…。
http://www.infoq.com/jp/news/2010/11/Mono-GPU
あっちも独自の進化をしつつ頑張ってるな。
735 = :
>>732
silverlightそのものは一応呼び出してるんだけど真っ白なんだよね
右クリックするとsilverlight(S)ってでるので一応は読み込めてるんだと思う
>>733
それってxamlをhtml内に入れるだけってやつ?
737 = :
ピクセルシェーダはJITコンパイルでもやってるのかな
ベクトル化は当然としても、シェーダのバイトコードをインタプリタ実行してる割には速すぎる気が
738 = :
>735
ジオでOK
739 = :
>>738
ありがとう
拡張子偽装しないとEZアップロードできないけど
その辺を対策すればあっさり動いた
740 = :
>>737
何らかの特別扱いはしてるだろうね。
http://kodierer.blogspot.com/2009/08/silverlight-3-writeablebitmap.html
WriteableBitmapの10倍速い。
しかもマルチコア環境だと自動で並列化してくれる。
741 = :
>>737
Silverlightってコンパイル済みのシェーダーしか読めなくなかったっけ?
>>740
まあ、ピクセルベースで、ふちのギザギザも取らないでいい、
毎フレーム自分で計算してドットを埋めてくってのでいい
っていう条件下での話よ<10倍速い。
742 = :
KeyDownのテストをやろうと思ってコード書いたんだが
どうもFocusが取れてないようでKeyDownイベントが発生しない
んだけど特別なやり方ってあるのかな?
コンストラクタに
this.Focus();
と書いてもGotFocusイベントすら発生しない・・・
743 = :
>>742
http://msdn.microsoft.com/ja-jp/library/system.windows.uielement.focusable.aspx
744 = :
>>741
コンパイル済みのシェーダは中間言語だよ
.NETのCILと同じように、実行時にGPUのネイティブコードに変換される
Silverlightの場合はCPUで動くネイティブコードに変換されてると思われる
745 = :
mvvm実装疲れる
奥が深い分野だよね
746 = :
>>743
ありがとうございます
うまくいった・・・
>>745
まー慣れだよね
747 = :
Expression BlendはMVVMだけどコードビハインド使いまくってるね
Prismのドキュメントにもあったが、ビューの特定の実装に依存するような処理は
素直にViewに書くべきなんだろうな
748 = :
ふー
html関連を普段やらないので疲れた・・・
本当はブログにさくっと貼れるとよかったんだが
749 = :
>>745>>746
MVVMのスタイルに従うと、やるべき事が色々と事前に判っちゃうっつーか、
判っておかないと下手に取りかかれないから、面倒だけど作業が計画的になる
というメリットはあるよね。
750 = :
実行時にクラッシュすることがたまにあるんだけど調査用のログとかそういうのって
SLの場合どう拾えばいいんだろう?
類似してるかもしれないスレッド
- Microsoft Silverlight その9 (574) - [96%] - 2023/1/25 14:30
- Microsoft Silverlight その8 (996) - [96%] - 2011/11/12 23:46 ○
- Microsoft Silverlight その6 (1001) - [96%] - 2010/11/1 4:09
- Microsoft Silverlight その5 (984) - [96%] - 2010/4/16 20:20 ☆
- Microsoft Silverlight その4 (1001) - [96%] - 2009/12/5 9:05 ○
- Microsoft Silverlight 2.0 その3 (556) - [83%] - 2009/3/24 0:35 ○
- Microsoft Silverlight 2.0 その2 (1001) - [78%] - 2008/11/21 11:47 ○
- Microsoft Silverlight 2.0 (1001) - [74%] - 2008/5/12 6:08 ○
- Silverlight登場で.NET使い大勝利!!! Part2 (525) - [18446744073709551603%] - 2016/10/16 0:30 ○
トップメニューへ / →のくす牧場書庫について