Silverlight5 新新新新新新新 新新 新新 (@tanaka_733)
Silverlight5 新機能早めぐり
田中 孝佳 (@tanaka_733)
自己紹介
Twitter: @tanaka_733お仕事–最近お仕事では Silverlight 触ってないです
趣味で WP7 開発はしてますが– PaaS の開発をしています (Azure じゃないよ )– Java に加えて Node.js や Ruby 始めました
ブログやってます ( 最近テーマがカオス w)–銀の光と碧い空– http://techblog.hilife-jp.info/
今日のセッションは・・・
以前ブログに書いた記事– Silverlight 5 新機能のまとめ– http://
techblog.hilife-jp.info/2012/01/silverlight-5.html
これをもとに、新機能をおさらいしようというセッションです
サンプルアプリを公開してます
アプリはこちら– http://apps.hilife-jp.info/Silverlight5Samples/– 動画が重いので、 TrickPlay サンプルは除いています– Web サーバーは nginx を使ってます
GitHub に公開中– https://github.com/tanaka-takayoshi/Silverlight5Samp
les– 動画・音声コンテンツは除いています– Pull Request 歓迎– CodePlex の使い方がわかったら移すかも
Git めんどい、という方はこちらの zip を– http://
dl.dropbox.com/u/2842933/Silverlight5Samples.zip
Silverlight5 のライフサイクルお仕事に使うのなら知っておくべき情報
Silverlight5 のライフサイクル
Silverlight はツール–個別のタスクもしくは限定されたタスクを補助
するユーティリティーまたは機能メジャーバージョンのツールは最低限、サ
ポート終了の 12 ヶ月前に告知Silverlight ランタイムと Silverlight SDK
の最新版に対するアップグレードを提供–下位互換性がある–脆弱性対策・パフォーマンス改善を行う
Silverlight5 のライフサイクル
以下のうちどちらか早い方– 2021 年 12 月 10 日–次期バージョン (IE10?) のブラウザのサポー
ト ライフサイクル終了ブラウザごとのサポート対応は、
ブラウザの進化に合わせて更新
Silverlight5 のサポートブラウザ
Windows– 1.6GHz 以上の CPU かつ 512MB 以上の RAM– Win7 SP1 or Server 2008 R2 SP1 は
64bit ブラウザに対応– IE7~9– FireFox3.6+– Chrome12+
Mac– 1.83GHz 以上の CPU かつ 512MB 以上の RAM– FireFox3.6+– Safari4+
http://www.microsoft.com/getsilverlight/locale/en-us/html/installation-win-SL5.html
メディアサポートの改善メディアサポートは Silverlight の強みの 1 つ
低レイテンシなオーディオの再生
効果音が使いやすくなりました今まで–MediaElement のみ–起動に時間がかかる
これから–Microsoft.Xna.Framework.Audio.SoundEf
fect クラスを使えば OK
サンプル
SoundEffectView.xaml
音声ファイルのビルドアクションは「リソース」でSoundEffectInstance を using 節でくくってはだめ
再生速度の変更
MediaElement で速度が変更できます–いわゆる TrickPlay
PlayBackRate プロパティで変更–ドキュメント上、値の制限はなし
変更すると RateChanged イベントが発生
サンプル– TricPlayView.xaml
その他
H.264 形式メディアの H/W デコーディング– H.264 形式でプロテクトされていないメディアのデ
コーディングに関して、パフォーマンスが改善しました
DRM Key のローテーティングと Live TV の再生– DRM Key のローテーティングを可能にし、
Live TV の再生を可能にしました。アプリケーションによるメディアの制限– DRM 配信+クライアント側の X509 認証によって、
指定したアプリケーションだけが再生可能なメディアを配信できる。
テキストサポートの改善テキストの配置の自由度が増しました
テキストのトラッキングとレディング
文字間隔の調整– CharacterSpacing プロパティ
行間の調整– LineHeight および LineStackingStrategy
プロパティhttp://
techblog.hilife-jp.info/2011/09/silverlight-5-6-advancements-in-text.html
サンプル– TextSpacing.xaml
RichTextBlock とオーバーフロー
読み取り専用のリッチテキストのためのRichTextBlock コントロール
RichTextBlock に収まらないコンテンツを RichTextBlockOverflow で表示
http://techblog.hilife-jp.info/2011/09/silverlight-5-6-advancements-in-text.html
サンプル
OverFlowView.xamlこういう配置が可能になります
そのほか
OpenType と Pixel Snapped – Text テキストをより鮮明にします
外字の表示–外字の表示がより安定的に可能に–参考記事
「お名前を正しく表示できるSilverlight」
印刷–ベクター印刷が可能に
次世代ビジネスアプリケーションの構築
Silverlight5 の肝となる新機能
PivotViewer
PivotViewer が SDK に入りました大量のデータを可視化使い方はちょっとめんどい・・・–それに見合うだけの価値あり
参考記事– http://tonychampion.net/blog/index.php/
series/pivotviewer-basics/
–※英語です
PivotViewer のサンプル
PivotViewer.xaml
ダブルクリックの検出
SL4 まではダブルクリックイベントがありませんでした。。。
実現する場合はアプリ側で対応– Click イベントで直前のイベントの
ソースと時刻を保持しておいて比較SL5 では、 MouseButtonEventArgs に
ClickCount プロパティが追加–MouseLeftButtonDown でチェック
ダブルクリックのサンプル
DoubleClickView.xaml
イベントハンドラではなく、コマンドっぽく使いたい場合は・・・
CustomTrigger を作ってみましょう
サンプル– Triggers/ClickTrigger.xaml
ブログ記事– http://
techblog.hilife-jp.info/2011/09/silverlight-5-3-clickcount.html
Rx 版– http
://techblog.hilife-jp.info/2011/09/custom-clicktrigger.html
ItemsControl テキスト検索
Listbox と ComboBox において、キーをタイプすることで頭出し検索を可能にします。– TextPath 添付プロパティで、検索に使用するプロパティを指定可能
参考記事– Silverlight 5 の新機能その8
コンボボックスのキー入力移動とSaveFileDialogのデフォルト値
サンプル
ItemSearchView.xaml
ViewModel
ViewModel のDescription プロパティを検索キーに指定
ダイアログの初期値
OpenFileDialog を開くときの初期ディレクトリを指定– InitialDirectory プロパティを使用
SaveFileDialog を開くときの既定のファイル名を指定– DefaultFileName プロパティを使用
ブログ記事– Silverlight 5 の新機能その8
コンボボックスのキー入力移動とSaveFileDialogのデフォルト値
DataBinding 関連WPF に近づいた DataBinding
の前に DataBinding のおさらい
JavaFX(Swing に代わる次世代 JavaUI)や knockout.js にも採用されている概念
View Data
依存関係プロパティ プロパティ
Binding
依存関係プロパティの役割とは?
他のデータに基づいてプロパティの値を計算する方法を提供すること
他のデータって?–ユーザー設定などの外部プロパティ– Resource や Style などのテンプレート–他のコントロールのプロパティ–そして、 DataBinding 対象のクラス
Silverlight における Binding のモード
OneTime– Binding 時に Data のプロパティで依存関係プロパティを更新
OneWay– OneTime に加え、
Data のプロパティの変更時に依存関係プロパティを更新
TwoWay– OneWay に加え、依存関係プロパティの変更時にData のプロパティを更新
Silverlight における Binding のモード
View Data
依存関係プロパティ プロパティ
Binding 時に Reflection でデータ取得
INotifyPropertyChanged を実装し、OneWay もしくは TwoWay ならば、
プロパティの変更通知を受け取る
TwoWay 時は View 側の変更でData のプロパティをReflection により変更
DataBinding のデバッグ
XAML でバインディングにブレークポイントを設定して、データ バインディングをデバッグ
DataContextChanged イベント
FrameworkElement.DataContextChanged イベントで、DataContext が変更された通知を受けることができます
Ancestor RelativeSource Binding
親コントロールのプロパティを Binding することができます
ListBox の Item に CheckBox を入れて選択状態と Check を連動させる場合などに有用
サンプル– AncestorBindingView.xaml
ブログ記事– Silverlight 5 の新機能その2 「Ancestor
RelativeSource Binding」
UpdateSourceTrigger 列挙体の追加
今までの TextBox– Binding された Text の変更は、
TextBox のフォーカスを抜けたとき–リアルタイム Validation をしたい場合などは面倒
UpdateSourceTrigger にPropertyChanged が追加
サンプル– TextUpdateView.xaml
そのほかの機能追加
暗黙的な DataTemplateStyle で Setter.Value プロパティが
使用可能にカスタムマークアップ拡張– IMarkupExtension(Of T) インターフェイス
を使用して、カスタムマークアップ拡張を作れます
グラフィックの改善3D が使えるようになりました…が、はまりどころが
3D グラフィックス
ハードウェア アクセラレーションが適用された 3-D グラフィックを使用する機能を導入
XNA Games Studio 4.0 グラフィックス ライブラリのコアを導入– レンダー ターゲット– XNA ビルトイン エフェクト– 深度 / ステンシル バッファー– マルチ サンプル アンチエイリアシングのサー
フェイス構成設定DrawingSurface コントロールで描画
開発するには・・・
さおさんのブログが入り口にいいかと– http://
blog.livedoor.jp/haruka_sao/archives/51953482.html
が、 Express ユーザーは要注意!–そのままだとできません–テンプレートが出てこない・・・– Content の読み込みが鬼門
おすすめしませんが、以下の手順で
Express ユーザーが開発するには
サンプルプロジェクトを元にします– Silverligh5 Toolkit をインストール–下記のフォルダの zip を解凍
C:\Program Files (x86)\Microsoft SDKs\Silverlight\v5.0\Toolkit\dec11\Source
–適当に選んで VWD Expres で開く– Content プロジェクトは開かない
VC# Express か テキストエディタで。。。
起動するには
URL をファイルパス (file://) ではなく、http:// で開くようにすること– aspx か html をデバッグ起動の対象に指定
最初の起動時は失敗する。–動かした状態で、–右クリック > Silverlight を選択–アクセス許可 タブ–該当 URL の 「 3D グラフィックス : … 」
を許可に設定
ここから先は時間があれば・・・
信頼されたアプリケーションにおける機能の追加
セキュリティ上の制約が緩和されます
複数Window のサポート
信頼されたブラウザー外実行アプリケーションで、複数Window を表示可能
非モーダルのダイアログ ボックスなどが作成できます
ブラウザ内における完全な信頼
いままでブラウザ外実行でしか使えなかったいくつかの機能がブラウザ内でも使える
WebBrowserNotificationWindow
制限されないファイルシステムへのアクセス
System.IO が使えますファイルシステムのどの場所でも
アクセス可能
ネイティブ統合
P/Invoke のサポート
Silverlight5 のパフォーマンス改善パフォーマンスもあがりました
パフォーマンス改善一覧
ネットワークのバック グラウンド スレッドを使用することによって、ネットワークの待機時間が削減されます。 これは、クライアントの HTTP Web 要求を使用するシナリオで有用です。
ユーザー コントロールとリソース ディクショナリの XAML パーサーの改善。
64 ビットのブラウザーのサポート。ハードウェアのデコードと H.264 メディアの保護され
ていないコンテンツでの表示のパフォーマンスが向上します。
Silverlight アプリケーションの起動時間を改善するためのマルチコア JIT のサポート。