09/04/07 20:08:57
URLリンク(programmerpayback.com)
URLリンク(nk9klifelog.spaces.live.com)
OnApplyTemplateのオーバーライドがマトモに動作せずに、ChildなUserControlへの参照が取得できない例ってある?
642:デフォルトの名無しさん
09/04/08 18:26:56
>>641
呼ばれる順番を自分で十分にテストしてないので、今ちょっとはっきりは分からないけど
OnApplyTemplateがInitializeComponentの段階で呼ばれるんだとすると取れないんじゃない?
だからUserControlはTemplateと相容れないものなんだと解したんだけど。どうなんでしょう?
643:デフォルトの名無しさん
09/04/08 19:36:50
>>642
レスあり。いや、実は俺自身はまだ困ったことないんだけど、
それに近い話を聞いたことがあったので、何か他のことが原因なんじゃないかと思って。
ところで、UserControlはTemplateと相容れないってどういうことなんでしょうか?
URLリンク(pagebrooks.com)
URLリンク(bbs.wankuma.com)
URLリンク(d.hatena.ne.jp)
ここらへんひとまとまりでよくわかるサンプルとか欲しいというか、とっとと確認しなきゃいかんなあ。
「XAMLによって」デザイナとコーダが完全に分業できるようになるっていう理由もよくわからんし。
WinForm2は、記述量こそ多いものの、もっと簡単にいろいろやってたじゃないかと言いたくなるw
うだうだ言う前にとっとと確認しますすいません。
644:デフォルトの名無しさん
09/04/08 19:50:05
WinFormsではコントロールの見た目を自由にいじろうと思ったら
いちいちコントロールを継承しないといけないだろ
UserControlは基本的にテンプレートを使って見た目を差し替えることができない
再利用を考えずにXAMLべったりでてっとり早くコントロール作るためのもの
クラスライブラリ作ったりするなら使っちゃダメ
645:デフォルトの名無しさん
09/04/08 19:57:37
643だけど、他のことが原因というか、伝え聞いた話でほんとかどうかもよくわからんというのが真実だな。
あとどうでもいいけど、WinForm2のドキュメントエクスプローラみたいにというか、
XAMLをYAMLみたいにw書けたら、もう少し見やすいのにとか思ったりする。
646:デフォルトの名無しさん
09/04/08 20:00:30
>>644
おお、すばやいレスあり。後からUserControlにテンプレート適用とかできないの?
647:デフォルトの名無しさん
09/04/08 21:14:36
おっと名無しさんで混乱してきたぞ。>>642だけど。
>>643 UserControlに関する詳細なドキュメントってどこにも存在しないから、
おそらく誰も完全には分からない。少なくとも使う側では。
特にSilverlightに関しては実験例もない。ここはひとつ人柱になってもらうしか。
>>642は自分で前にUserControlにテンプレートは適用できないんだろうか
思って試してみたことがあって、結局出来なかったという経験にもとづくレスでしかないので
正しいかどうかは不明。でも、UserControlはインスタンスが生成されるがかなり遅く、
メインのLoaded以降あたりで、その前に適用されるTemplateでアクセスすることは出来ず
適用できないとかそんな感じだろうというのが自分の達した結論。
>>646 後からTemplateも考えたけど、結局その道は無かった気がする。
TemplateはおそらくVisualツリーの生成段階でしか適用できないんだろうよ。
単なる枝の差し替えだったら後から出来ても良さそうなんだけどね。
ただ、これは全てSL2での実験だから、SL3で違うことになってたら申し訳ない。
648:デフォルトの名無しさん
09/04/08 21:15:39
デザインとロジックを分けるのは、冗長になるのは確か。パフォーマンスも低下する。
でも、ロジックのコードに一切触れることなく、XAMLだけで色や概観のみならず
VisutalStateまで含めた全デザインの変更を可能にしてしまいましょうってのが
分離で、そうするためには欠かせないTemplate。でも、こうしておけば、
コードのコの字も解らないデザイナとも一緒に仕事が出来るという点において素晴らしい。
UserControlでも何でもできるけど、完全再利用&カスタマイズ可能な
コントロールとするためにはControlでやるしかないんだとおも。
649:デフォルトの名無しさん
09/04/08 21:53:33
UserControlがテンプレートに対応してないのは制限じゃなくて使い分け
650:643
09/04/08 22:05:20
>>647
コードで確認もせず質問したのに、大変参考になる情報ありでした。
UserControlはPanelをクラス化して再利用に使うみたいなもので、
入れ物にすぎないUserControl自体にはデザイン適用できないけど、
その子要素のControlにはデザイン適用できるだろうとか安直に考えてた。
なんで、OnApplyTemplateメソッドが気になったりしたわけだけど、それも的外れかな。
とりあえずまず書いて確認してみる。
651:デフォルトの名無しさん
09/04/08 22:18:53
>その子要素のControlにはデザイン適用できるだろうとか
そのコントロールがテンプレートに対応してるなら親がUserControlだろうとできるに決まってるだろ
PageだってUserControlなんだしできないわけがない
652:デフォルトの名無しさん
09/04/08 22:44:09
>>649
それは、絶対的に出来ないのではないってこと?どっち?
UserControlベースでもTemplate使う道があるんであれば、
それはそれで意外と役に立つ訳で、そこが重要だよ。
>>650
ヘルプすら見られない状況において過去の記憶のみを頼りに書いてるもので、
まったくの嘘かも知れないから確認して下さい。
てか、何かこういうことだってのを発見したら教えて下さい。
653:デフォルトの名無しさん
09/04/08 23:09:35
>>651
良く分かってないですね。UserControlの中にControlを置いたものに
テンプレートが適用できるってのは良いよ。それは普通の使い方だ。
Controlの中にUserControlを置いたときに、
それがいつ初期化されるかってところで、UserControlを含む
ControlにTemplateが適用できないんじゃないかというのがこの問題。
まあ、素直に中身は全てControlでやれば済むのかもしれないけど、
UserControlの簡易さってのは捨てがたく、絶対的に相容れないものなのか否か。
654:643
09/04/08 23:27:51
>>652
同感です。慎重なご意見に感謝します。
>>653
俺としてはControlにUserControlを持たせるようなことはしたくないが、
実際にそういう使い道ってあるの?
自分からした質問なのに、話をずらすようで申し訳ないけど。
655:デフォルトの名無しさん
09/04/08 23:49:51
>>654
完全なデザインとの分離にはならないけど中間的な分離によって、
パフォーマンスを最大化する場合なんては生じるね。
Controlにしてすべて外部に持たせるととにかく冗長になるけど、
UserControlであれば、かなりすっきり書ける。
でもカスタマイズ性は確保したいといったところ。
もちろん、こんなの一般にはおすすめ出来ないが。
656:デフォルトの名無しさん
09/04/09 01:40:38
Threadを起こして、その中からUserControl派生のクラスのインスタンスをnewしようとしたら
UnauthorizedAccessExceptionがInitializeComponentで発生してしまうんだけど、
そういうもの??
657:デフォルトの名無しさん
09/04/09 01:57:12
>>607
> 高度なものは総じてクローズドであってしかるべき。
実に気持ち悪いご意見だw
658:デフォルトの名無しさん
09/04/09 08:26:52
>>657
まぁ無能な乞食には絶対受け入れられない価値観ではあるよね。
659:デフォルトの名無しさん
09/04/09 10:34:51
>>653
>>655
一般にはおすすめできないって、自分でもやったことなさそうじゃないか。中間的な分離って何だ?
具体例も必然性もないようだから、そういうことはすべきじゃないと思う。
660:デフォルトの名無しさん
09/04/09 10:43:55
>>656
.NETでは、UIを生成したスレッドではない別のスレッドからそのUIへアクセスするには、
いろんな手順とか決まりごとがあるんだが、それに反してない?
URLリンク(social.msdn.microsoft.com)
661:656
09/04/10 13:20:25
new してるだけなんですけどねー。
それが駄目なのかもしれませんね。
決まりごと調べてみます。
662:デフォルトの名無しさん
09/04/11 13:40:58
逃げられすぎ。もうだめかもわからんね。
663:デフォルトの名無しさん
09/04/11 15:48:21
silverlightでは別スレッドでコントロールを表示する方法が無いので
newした段階で例外が送出されるみたいだな
UIスレッドのコントロールの子にした段階で例外が出るより、デバッグがやりやすくていいね
664:デフォルトの名無しさん
09/04/12 20:15:33
>>662
?
665:デフォルトの名無しさん
09/04/12 21:25:50
>>664
Flash厨の発症です
666:デフォルトの名無しさん
09/04/14 13:00:20
>>645
×:ドキュメントエクスプローラ → ○:ドキュメントアウトライン
667:デフォルトの名無しさん
09/04/14 14:17:11
URLリンク(www.infoq.com)
>CBS College Sportsを通じ、SilverlightはNBA、NCAAのイベントを
>放送し、BlockbusterのMovieLinkおよびNetflix’ Instant Watchの
>ストリーミングを提供する。
コスト抑える、とか一言で言われてしまいそうなのだけど
そこまで高度ではあるけど可用性に難がある環境…これは
受け入れられるんだろうか…
668:デフォルトの名無しさん
09/04/16 22:11:37
マイクロソフト、研究部門Live Labsをリストラ―研究者を半数に削減
現在の経済情勢が一因
URLリンク(www.computerworld.jp)
マイクロソフト、フライトシミュレーターゲーム開発部門を閉鎖
URLリンク(www.technobahn.com)
IEの市場シェアが過去最低を記録―3月末時点で66.8%
ライバルのFirefoxは22%で過去最高に
URLリンク(www.computerworld.jp)
669:デフォルトの名無しさん
09/04/16 22:19:50
また性懲りもなく現われたよコイツ。