2013年7月1日月曜日

[Sivlerlight][C#]テンプレートのコントロール取得

カスタムコントロールに限るけど、そのコントロールに割り当てられた Style で設定された ControlTemplate 内にあるコントロールを取得するには。

GetTemplateChild というメソッドに Template 内で定義したコントロールに割り当てられている Name を渡してあげると取得出来る。

ただし、Loaded の時点ではまだテンプレートが適用されていないので、OnApplyTemplate の処理後に GetTemplateChild を Call すると取得出来るようになる。




Visual Studio Image Library

ここからダウンロード出来るんだね。

http://www.microsoft.com/en-us/download/confirmation.aspx?id=35825



Silverlight 終了のお知らせ

現時点(2013/7/1)で、Silverlight 5 のデザイナツールは存在しない、、、という話。

Silverlight 5 のデザイナツールとして、「Expression Blend for Silverlight 5」がマイクロソフトから提供されていた。Preview版とはいえ、正式に使えるものだったのだが、使用期限が6/30までで、本日からは使えない。開いてみたら案の定、次のを買えっていうメッセージとともに終了した。

以前、調べた時に、Visual Studio 2012 には Blend が付属するけど Windows ストアアプリ限定だということで、しょうがなく Preview 版を採用したのだけれども、今、調べてみたら春頃にリリースされた VS2012 の Update2 というのを適応することで、WPF4.5/Silverlight5がBlend for Visual Studio で使えるようになったとある。ちなみに今は Update3 までリリースされている。

試しに、Web 用 Visual Studio Express 2012 を入れてみて、既存のプロジェクトを表示してみた。デザイナの UI は2010とは異なり、かなり Blend に近いものになっている。複雑なアニメーションなどがなく、配置程度であればこれで十分だ。しかし、、、画像関係が一切表示されない。どうも、ResourceDictionary に登録した BitmapImage を参照しているところが全部ダメのようだ。ちなみに Express 版には Blend for Visual Studio が含まれない。

さて、製品版の Professional を入れてみた。結果は同じだった。
Update 3を適用し、Blend for Visual Studio で開く。おぉ、UI は Expression Blend 4 とほぼ変わらない。が、こちらも同様に画像が表示されない。

WPF で同じコードを書いてみたら表示されたので、Sivlerlight のときだけダメっぽい。VS2010だと編集はしょぼいけど、表示は出来る。不具合なんだろうけど、、、結構困る。これからデザイナーの方に数百枚のXAMLを書いてもらわなければいけないのに、肝心のデザイナツールが存在しないのだから。手を止めてもらっている。。。

とりあえず  Visual Studio のフォーラムで質問したり、バグ報告を投げてみたりした。サポートに問い合わせたいのだけど、イマイチ問い合わせフォームに辿り着けない。。。

Windows 8 とか Silverlight とか、失策多くないっすか?>Microsoftさん



[Symfoware]遅延

Windows から Symfoware サーバに接続するにあたり、Symfoware クライアントとして、Symfoware .NET Data Provider を使っている。

サーバー側が複数あり、ほとんどが接続出来ない状態だと、接続出来るところが遅延する現象が発生した。

テストプロを作って調査したところ、接続待ちの処理があった場合、別スレッドで接続出来るところへ接続を試みると、待たされているようだ。マルチスレッドに対応していないのか?

試しにODBCで接続してみると、全く遅延せずに接続出来てしまった。

完全に SNDP の不具合だな。


[WPF]デザイナエラー


突然、Visual Studio の XAML のデザイナを開くと描画されなくて、下記エラーが出るようになった。

エラー 1 CLR 名前空間が定義されていません。'clr-namespace' URI が、アセンブリに含まれていない名前空間 'XXXXX' を参照しています。

なんか変えちゃったかな―。
プロジェクトのプロパティを見ると、プラットフォームが「Any CPU」から「x86」に変わっていて、選択項目に「Any CPU」が表示されない。
どうもこれが原因ぽい。

・ソリューションのプロパティを開き、構成プロパティ選択->構成マネージャを開く。
・対象のプロジェクトをのプラットフォームを新規作成にして、Any CPUを選ぶ。
 ⇒ふつうここで行けるっぽいけど、私の環境では
 「同じ名前のプラットフォームが既に存在するため、このプラットフォームを作成できませんでした。」
 と表示されたので、「x64」を新規作成した。
・プロジェクトのプロパティを開いて、プラットフォームを Any CPU(もしくはx64)、プラットフォームターゲットを「Any CPU」に変更。

したら表示されるようになった。

なんだったんだろーか。なんかプロジェクトが壊れている気がするけど、とりあえずなおったので放置。(問題の先送り)

Windows 7 の同時接続数


XPでは同時に接続できる数が10に制限されていたが、Vista/2008Serverからは無制限になった。

■Notable Changes in Windows Server 2008 SP2 and Windows Vista SP2
http://technet.microsoft.com/en-us/library/dd335036%28WS.10%29.aspx?ppud=4

「SP2 removes the limit of 10 half open outbound TCP connections. By default, SP2 has no limit on the number of half open outbound TCP connections.」

Windows 7 の情報がないけど、多分そうなんだろうね。
試してみないと。