アクセスカウンタ

zoom RSS テーマ「Silverlight」のブログ記事

みんなの「Silverlight」ブログ


MVVM Light Toolkitを使ってみよう。その2 MVVMの復習

2010/10/02 21:24
さて、ぼーっとしているうちに日があいてしまいましたが、MVVM Light Toolkitの使い方を説明する前に、MVVMについて復習しておきましょう。

■ MVVMとは?
Model-View-ViewModelの頭文字をとった、アプリケーションのUI分離パターンの一つです。
UI分離パターンを使うと、各層の依存関係が薄くなり、アプリケーションの修正、複数人数での分散開発、単体テストのしやすさなどの面で利点があります。
また、ExpressionBlend 4からは、デザインツール側でもMVVMがサポートされていることから、デザインツール側でアプリケーションをデザインする際にも各層が分離されているということが重要になってきます。

MVVMでは、有名なMVC(Model-View-Controller)をベースに、バインド機能をより使いやすい形に変換したパターンになっています。

MVC、MVPの詳しい説明に関しては、猪股さんの解説が分かりやすいのでこちらへw。
http://matarillo.com/general/uipatterns.php

実はMVVMの考え方は、この中で解説されているアプリケーションモデルにとても似ています。MVVMでは、MVCが苦手としているModelのデータとViewのデータの同期と、Modeleがもつメソッドの呼び出しなどを、ViewからViewModelへのバインド経由で実行するといった形を取ります。
ViewModel経由でバインドされることで、ModelとViewModelはViewから切り離され、テストや分散開発がしやすい状況になるわけです。

■ 何はともあれ、最初のMVVMアプリケーション
まずはMVVMがどんなものかを理解するためにも、MVVM Light Toolkitを使わないで簡単なMVVMの更新処理を書いてみましょう。



○どんなサンプル?
今回サンプルにするのは、ユーザーの編集画面です。このサンプルでは入力されたデータを保存したり、読出したりするサンプルです。
サンプルではViewModelにロードされたユーザー情報と、データの保存、読み込みと行ったコマンドを、Viewにバインドしユーザーのアクションに応じてViewModelからModelの情報を操作します。



○Model-(データとデータに対する振る舞い)
モデルは特定のドメイン(領域)の問題を解決するために分析されたデータモデルです。
今回は単にユーザーを識別するIdや名前、郵便番号のデータを持つエンティティークラスです。特にこのモデルに対する振る舞いは定義していません。

    public class ユーザー
  {
       public int Id { get; set; }
       public string 名前 { get; set; }
       public string 郵便番号 { get; set; }
   }


○ViewModel -(ViewにバインドしてModelの操作を行う)
Viewに対してバインドを行うモデルとモデルに対するコマンド、他のViewModelに対するメッセージなどを公開します。
プロパティーの実装
View側では、ViewModelで公開されたプロパティーに対してバインドを行うため、ViewModelではユーザークラスをプロパティーとして公開します。
またView側での変更通知を有効にするため、INotifyPropertyChangedインターフェイスを実装します。
public class UserViewModel: INotifyPropertyChanged
   {
       public UserViewModel()
       {
           if (ユーザー == null)
               ユーザー = new ユーザー();
       }

       #region プロパティー
       // Viewにバインドするため、ユーザーモデルをプロパティーとして公開する。
       private ユーザー _ユーザー;
       public ユーザー ユーザー
       {
           get { return _ユーザー; }
           set
           {
               if (ユーザー == value)
                   return;
               _ユーザー = value;
               RaisePropertyChange("ユーザー");
           }
       }
       #endregion

       #region INotifyPropertyChanged
       public event PropertyChangedEventHandler PropertyChanged;
       public void RaisePropertyChange(string propertyName)
       {
           if (PropertyChanged == null)
               return;
           PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
       }
       #endregion

       #region コマンド
       // コマンド
       #endregion
   }


コマンドの実装
プロパティー同様に、Viewからバインドするコマンド(OnSave、OnLoad)を定義し、RelayCommand経由でそれぞれの処理(Saveメソッド、Loadメソッド、)に関連付けます。
コマンド自体はICommandインターフェイスを実装しているクラスである必要がありますが、コマンドごとにクラスを定義するのも大変なので、更新処理をデリゲートとして定義できるRelayCommandクラスを作成しています。(RelayCommandについては後述)
また、SaveメソッドとLoadメソッドはサンプルとして固定データを読み込んだり、Viewで入力されたデータを表示するようにしています。実際にはWCFやWCF RIA Servicesなどを使って、サーバー側のサービス経由でデータの操作を行ないます。
public class UserViewModel: INotifyPropertyChanged
   {
       public UserViewModel()
       {
           if (ユーザー == null)
               ユーザー = new ユーザー();

           OnSave = new RelayCommand(Save, parameter => true);
           OnLoad = new RelayCommand(Load, parameter => true);
       }

       #region プロパティー
       #endregion
       #region INotifyPropertyChanged
       #endregion

       #region コマンド
       public RelayCommand OnSave { get; private set; }
       public void Save(object parameter)
       {
           // 入力されたデータを表示する。
           // 実際はサービスの呼び出しを行ってデータをサーバー側に保存する。
           MessageBox.Show(string.Format(
                   "Id={0}\n名前={1}\n郵便番号={2}",
                   ユーザー.Id, ユーザー.名前, ユーザー.郵便番号));
       }

       public RelayCommand OnLoad { get; private set; }
       public void Load(object parameter)
       {
           // 固定データをユーザークラスにロードする。
           // 実際にはサービス経由でユーザーを検索する。
           ユーザー = new ユーザー
           {
               Id = 1,
               名前 = "かるあ",
               郵便番号 = "181-0013",
           };
       }
       #endregion
   }


○View-(Silverlightの画面)
ViewはViewModelを表示するためのユーザーインターフェイスです。

ViewModelのインスタンス化
View側でViewModelを利用するためにxmlnsでxmlの名前空間(9行目)を定義します。
同時にStaticResourceとしてlocal:UserViewModelを定義(12行目〜14行目)することで、Viewが実態化したさいにViewModelも実体化されます。
<navigation:Page
   x:Class="PlaneMVVMApplication.Views.Hello.HelloView"
   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
   xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
   mc:Ignorable="d"
   xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
   xmlns:local="clr-namespace:PlaneMVVMApplication.Views.Hello"
   Title="HelloView Page">

   <UserControl.Resources>
       <local:UserViewModel x:Key="viewModel" />
   </UserControl.Resources>
   <Grid x:Name="LayoutRoot" DataContext="{StaticResource viewModel}" Height="120" Width="250">
   </Grid>
</navigation:Page>


プロパティーとコマンドのバインド
GridのDataContextに、StaticResourceとして定義したUserViewModelをバインドし、TextBoxやTextBlockにユーザーの各プロパティー情報をバインドします。

また、読み込みや保存と行ったボタンに対し、ViewModelで公開したOnLoadやOnSaveといったRelayCommandをバインドします。
   <Grid x:Name="LayoutRoot" DataContext="{StaticResource viewModel}" Height="120" Width="250">
       <!-- RowDefinitions, ColumnDefinitionsの定義 -->
       
       <TextBlock Text="Id" Grid.Column="0" Grid.Row="0" />
       <TextBlock Text="{Binding ユーザー.Id}" Grid.Column="1" Grid.Row="0" />
       
       <TextBlock Text="名前" Grid.Column="0" Grid.Row="1" />
       <TextBox Text="{Binding ユーザー.名前, Mode=TwoWay}" Grid.Column="1" Grid.Row="1"/>

       <TextBlock Text="郵便番号" Grid.Column="0" Grid.Row="2" />
       <TextBox Text="{Binding ユーザー.郵便番号, Mode=TwoWay}" Grid.Column="2" Grid.Row="2"/>

       <StackPanel Orientation="Horizontal" Grid.Column="1" Grid.Row="3">
           <Button Content="読み込み" Command="{Binding Path=OnLoad}" />
           <Button Content="保存" Command="{Binding Path=OnSave}"  />
       </StackPanel>
   </Grid>

Silverlight 3まではButtonコントロールはICommandインターフェイスを実装していなかったので、コマンドバインディングを使いたいときはMVVM Light ToolkitやPrismが提供するコマンドバインディングを利用する必要がありました。



○サンプルの実行結果
読み込みボタンをクリックすると、ViewModelに定義したLoadメソッドが呼び出され、ユーザーがViewに表示されます。

また、保存ボタンをクリックすると、ViewModelに定義したSaveメソッドが呼び出され、Viewで修正したデータが表示されるのを確認できます。


バインドの機能を利用してUIとViewModelのデータとコマンドをバインドすることで、Viewで入力されたデータの詰め替えとメソッドの呼び出しロジックがSilverlightのコードビハインドからなくなったことを確認できると思います。

○RelayCommand
コマンドバインドでバインドできるコマンドは、ICommandインターフェイスを実装したクラスである必要があります。
ただ、保存や読込といったコマンドごとにクラスを作っていくのは大変なので、多くの場合RelayCommandというユーティリティークラスを各自定義してコマンドをバインドします。

RelayCommandのサンプル
   public class RelayCommand : ICommand
   {
       public event EventHandler CanExecuteChanged;
       private Func<object, bool> _canExecuteAction;
       private Action<object> _executeAction;

       public RelayCommand(Action<object> executeAction, Func<object, bool> canExecuteAction)
       {
           this._executeAction = executeAction;
           this._canExecuteAction = canExecuteAction;
       }

       public bool CanExecute(object parameter)
       {
           return _canExecuteAction(parameter);
       }

       public void Execute(object parameter)
       {
           _executeAction(parameter);
       }

       public void RaiseCanExecuteChanged()
       {
           if (CanExecuteChanged != null)
           {
               CanExecuteChanged(this, EventArgs.Empty);
           }
       }
   }


○次回予告
Silverlight 4になり、ボタンなどの一部のコントロールにコマンドバインディングがサポートされましたが、それ以外のイベントに対するコマンドのバインドはサポートされていません。

また、ViewModelのベースクラスやRelayCommandなど自前で作る必要がありますし、ViewModelの定型コードを書くためのスニペットなども複数人で開発する際は書かせないでしょう。ここらへんを楽にしてくれるのが今回紹介するMVVM Light Toolkitというワケですね。
ということで、次回から実際にMVVM Light Toolkitを使ってどんなふうに実装していくかを見ていきます。

○参考
日本語
Model-View-ViewModel デザイン パターンによる WPF アプリケーション
設計パターン - モデル - ビュー - ビューモデル (MVVM: Model-View-ViewModel) の問題点とその解決策
英語
Getting Started with the MVVM Pattern in Silverlight Applications - Dan Wahlin's WebLog
UNDERSTANDING THE MODEL-VIEW-VIEWMODEL PATTERN
記事へナイス ブログ気持玉 7 / トラックバック 1 / コメント 0


MVVM Light Toolkitをインストールしてみる。

2010/09/11 23:26

こんにちは、もう夏も終わりですね。かなり久々なエントリーです。

MVVM Light ToolkitはWPFやSilverlight、Windows Phone 7でMVVMでアプリケーションを作成するためのフレームワークです。

なんとなく、こいつを使ってサンプルでも作ってみるか!!という感じなので数回ほどMVVM Light Toolkitを取り上げてみます。

 

0.MVVM Light Toolkitのダウンロード

MVVM Light Toolkitの2010/09/11時点の最新版はV3 SP1

http://mvvmlight.codeplex.com/

 

1.MVVM Light Toolkitのバイナリーを展開

GalaSoft.MvvmLight.Binaries.V3.zip を展開して、とりあえず次のフォルダーに配置する。
(UACの制御がかかると思うので注意。)

    C:\Program Files\Laurent Bugnion (GalaSoft)\Mvvm Light Toolkit

 

2.Visual Studioのテンプレートを展開

GalaSoft.MvvmLight.Templates.V3.VS10.zip を展開して、ユーザーテンプレートフォルダーに配置する。
ユーザーテンプレートフォルダーは、Visual Studio 2010の場合、デフォルトではここ。

%UserProfile%\Documents\Visual Studio 2010\Templates\

Visual Studio 2010の場合は、ここで確認する。
Visual Studio のメニュー[ツール]⇒[オプション]⇒[プロジェクトおよびソリューション]⇒[ユーザー プロジェクト テンプレートの場所]
Visual Studio のメニュー[ツール]⇒[オプション]⇒[プロジェクトおよびソリューション]⇒[ユーザー アイテム テンプレートの場所]

 image

3.スニペットの展開

GalaSoft.MvvmLight.Snippets.V3.zip を展開して、ユーザーのコードスニペットフォルダーに配置する。

ユーザーのコードスニペットフォルダーは、Visual Studio 2010の場合、デフォルトではここ。

%UserProfile%\Documents\Visual Studio 2010\Code Snippets\Visual C#\My Code Snippets

Visual Studio 2010の場合は、ここで確認する。

Visual Studio のメニュー[ツール]⇒[コードスニペット マネージャー]⇒言語をC#に変更⇒My Code Snippetsを選択

image

4.Expression Blend のテンプレートの展開

GalaSoft.MvvmLight.Templates.V3.Blend4.zip または、GalaSoft.MvvmLight.Templates.V3.Blend3.zipを展開して、Expression Blendのテンプレートフォルダーに配置する。

%UserProfile%\Documents\Expression\Blend4 (または、Blend3)

5.確認

Visual Studio や Expression Blendで新しいプロジェクトを作成しようとすると、プロジェクトテンプレートにMVVM Light Toolkitのテンプレートが追加されます。

image

image

 

と、今日はここまで。

記事へブログ気持玉 / トラックバック / コメント


DataAnnotationsでリソースから文字列を取得する。

2010/05/09 15:36

まぁ、そのまんまなんですが。リソースに指定できるフォーマットがよくわからなかったのでまとめておく。



リソースからのエラーメッセージの取得


DataAnnotationでエラーメッセージをリソースから取る時は、各検証属性のErrorMessageResourceNameプロパティーとErrorMessageResourceTypeプロパティーに値を設定すればいい。たとえばRangeAttributeのエラーメッセージをリソースから取得する場合はこんな風にする。




[Range(typeof(int), "20", "150", ErrorMessageResourceName = "RangeErrorMessage", ErrorMessageResourceType=typeof(ErrorMessage))]
public string Age
{
 get { return _age; }
 set
 {
   Validator.ValidateProperty(value,
     new ValidationContext(this, null, null) { MemberName = "Age" });
   _age = value;
   OnPropertyChanged("Age");
 }
}

こうすれば、ErrorMessageResourceに定義したRangeErrorMessageの文字列をエラーとして表示してくれる(※1)。RangeErrorMessageが「年齢は20から150の間で入力してください。」のように定義されていれば


image

検証結果はこう表示される。


image

※1) リソースはアクセス修飾子を「Public」にしておかないと、リソースが見つからないという実行時エラーが発生するので注意。



リソースからのエラーメッセージの取得


とはいえ、検証対象のプロパティー名「年齢」とか、値の範囲対象となる「20」や「150」はリソースにじかに書きたくない。この場合はこんな風にリソースを定義すればいい。

image 

 

エラーメッセージの整形

検証属性を使ったエラーメッセージの表示は、各検証属性のFormatErrorMessageメソッドに定義されたフォーマットで整形が行われるので、各検証属性のこのメソッドの定義を確認すればいい。たとえばRange属性の場合、リソースの文字列に対して、検証が失敗したコントロールの名称(Display属性が定義されていればそのName)、Range属性に指定した最小値と最大値の3つをもとに整形が行われている。各検証属性でどのような整形が行われているかはこんな感じになっている見たい。

No検証属性123
1RequiredAttributeエラー対象の名前  
2RangeAttributeエラー対象の名前最小値最大値
3RegularExpressionAttributeエラー対象の名前正規表現パターン 
4StringLengthAttributeエラー対象の名前最低長最大長
5CustomValidationAttributeエラー対象の名前検証メソッドから
返されたメッセージ
 


あわせて読みたい(自作自演)。値の検証に関しては4ページから。


Silverlight 3で強化されたスタイルと値の検証

記事へブログ気持玉 / トラックバック / コメント


Silverlight4 リリース

2010/04/16 11:23

予定通りSilverlight4がリリースされましたね。このバージョンから正式なChromeのサポートが追加されたので、記念スクリーンショット。

image

ランタイムのダウンロードは以下から

http://www.microsoft.com/japan/silverlight/download.aspx

 

Visual Studio 2010のSilverlight開発ツールであるSilverlight4 Toolsは現在RCで公開中のようです。

http://go.microsoft.com/fwlink/?LinkID=177428

上のリンクだと、ブラウザの言語設定が日本語の場合、Beta2にとばされる。。。下のリンクだと直に英語版に飛ぶ

http://www.microsoft.com/downloads/details.aspx?FamilyID=bf5ab940-c011-4bd1-ad98-da671e491009&displaylang=en

 

Silverlight 4 SDKはRTMされてるみたい。

http://go.microsoft.com/fwlink/?LinkID=169408

 

ドキュメント類はここ(オンラインはまだ4じゃないかな?日本語だから?)

⇒ Microsoft Silverlight 4 Online Document

http://msdn.microsoft.com/ja-jp/library/cc838158(v=VS.95).aspx

⇒ Microsoft Silverlight 4 Offline Document(英語)

http://msdn.microsoft.com/ja-jp/library/cc838158(v=VS.95).aspx

 

また、デザインツールであるExpression Blend 4は現在RCで公開中です。

http://www.microsoft.com/downloads/details.aspx?FamilyID=88484825-1b3c-4e8c-8b14-b05d025e1541&displaylang=en

記事へかわいい ブログ気持玉 1 / トラックバック 0 / コメント 1


NavigationFrameworkで違うアセンブリに含まれるページに移動する

2010/03/29 00:05
グローバルサミットぐらいに調べてから寝かしてたらすっかり漬かっていたので、とりあえず引っ張りだしてみる。

本当は違うアセンブリ(dll)を動的に読み込んで、そのアセンブリに含まれるページに移動させようと思ったんだけれど、どうも単にアセンブリを読み込んで移動するだけではだめらしい。とりあえず前段として他のアセンブリに移動するためにはこんな風に記述する。


<StackPanel>
  <HyperlinkButton NavigateUri="/DynamicAssembry;component/Page1.xaml" Content="違うアセンブリ"/>
</StackPanel></pre>StackPanel


で、まぁマッピングをしておくとすっきりするかな。

<navigation:Frame x:Name="ContentFrame" Source="/Home">
  <navigation:Frame.UriMapper>
   <uriMapper:UriMapper>
    <uriMapper:UriMapping Uri="" MappedUri="/Views/Home.xaml"/>
    <uriMapper:UriMapping Uri="/{assemblyName};component/{path}" MappedUri="/{assemblyName};component/{path}" />
    <uriMapper:UriMapping Uri="/{pageName}" MappedUri="/Views/{pageName}.xaml"/>
   </uriMapper:UriMapper>
  </navigation:Frame.UriMapper>
</navigation:Frame>


こんな風になる。

<HyperlinkButton NavigateUri="/DynamicAssembry;Page1.xaml" Content="違うアセンブリ" />


C#とかから遷移する場合もHyperLinkButtonと同じように使える。ページマッピングが定義されている場合にそっちをゆうせんするのも同じ。

DLLを動的に読み込んでって出来るのかな。単なるメソッドのコールは問題ないんだけれどページに移動すると、ページがないとかって怒られるんだよね。XAPにしてから読み込むとうまくいくっぽいから、DLLのマニフェストとかそのあたりだと思うんですけれど。。。

あっ、こっちはえいごだけれど絵つきで分かりやすいかも。
http://www.davidpoll.com/?p=88
記事へなるほど(納得、参考になった、ヘー) ブログ気持玉 2 / トラックバック 0 / コメント 0


HTML5に対するSilverlight、Flashの優位性

2010/03/26 11:12

CodeZineのこの記事を見ていて、あっこれはFlashに限らずブラウザーのプラグインとして提供されるもの(例えばSilverlight)に関して当てはまるなーと思ったので、こちらにもメモを

遂に登場したAdobe Flash Builder 4〜担当者が語るAdobe技術での開発メリット〜

この記事の中で触れられているHTML5に対するRIA技術のメリットは次の3つ

  1. 革新を起こすスピードが早いこと。
  2. 起こした革新を開発者に短時間で採用してもらえること。
  3. ブラウザとの一貫性を担保できる

そう、HTML5って標準規格なんで実装自体はブラウザーの開発元に依存されるのでどうしてもブラウザーによって動きが変わってしまう。まぁ、ブラウザーで一貫性を担保できるってのはホントか??と疑問に思うところもあるわけだけれど。

さらに標準規格ゆえ、一度決めるとおいそれと変更ができない(はず)。その点、企業手動であるFlashやSilverlightは今利用者が何を求めているかを吸い上げることができるし、標準規格ゆえの方々の思惑から自由になれるので対応が早いってのはうれしい。

記事へなるほど(納得、参考になった、ヘー) ブログ気持玉 8 / トラックバック 0 / コメント 0


Silverlight のサポートライフサイクル

2009/12/15 17:14

マイクロソフトのサポートオンラインで、Silverlightに関するサポートライフサイクルのお知らせが掲載されています。(Microsoft? Silverlight? サポート ライフサイクル ポリシーのお知らせ)

これまで独自路線だったSilverlightも、ビジネス分野での利用を前提にサポートライフサイクルを他の製品同様、明確化したって感じでしょうか。

Silverlightのバージョン 無料サポート
Silverlight 1 2010/10/12まで
Silverlight 2 2010/10/12まで
Silverlight 3 メインストリーム

ふらふらしてたらこんなページに行き着きました。多分前にも見たことはあるとおもうんだけれど、忘れそうなのでメモっておきます。

マイクロソフト サポートオンライン Silverlight サポートページ

バージョン別機能比較

記事へブログ気持玉 / トラックバック / コメント


Silverlight3 の連載をしています。

2009/12/01 21:22

PDCでSilverlight4 Beta1 の発表が有ったわけですが。とりあえずリリースされている最新版であるSilverlight3の入門記事をCodeZineで連載しています。

現在は1回から3回まで公開されています。

■Silverlight徹底入門

  1. Silverlight 3がやってきた(1/4):CodeZine Silverlight 3がやってきた(1/4):CodeZine このエントリーをはてなブックマークに追加
  2. Silverlight 3に新しく追加されたコントロール(1/4):CodeZine Silverlight 3に新しく追加されたコントロール(1/4):CodeZine このエントリーをはてなブックマークに追加
  3. デザインツールの進化 ― Expression Blend 3入門(1/5):CodeZine デザインツールの進化 ― Expression Blend 3入門(1/5):CodeZine このエントリーをはてなブックマークに追加
  4. Silverlightのオフライン機能による新しい可能性(1/5):CodeZine Silverlightのオフライン機能による新しい可能性(1/5):CodeZine このエントリーをはてなブックマークに追加
  5. Silverlight 3で作る業務アプリケーションの要 「ナビゲーションフレームワーク」(1/6):CodeZine Silverlight 3で作る業務アプリケーションの要 「ナビゲーションフレームワーク」(1/6):CodeZine
  6. Silverlight 3で強化されたグラフィックとメディア機能(1/4):CodeZine Silverlight 3で強化されたグラフィックとメディア機能(1/4):CodeZine

第1回ではSilverlightの歴史とSilverlight 3の開発環境の整え方を、第2回では追加されたコントロールの使い方をざっと紹介しました。そして今日公開された第3回は、Silverlight3の目玉の一つであるExpression Blend 3 With SketchFlow の新機能(もちろんSkechFlow込み)と、カスタムビヘイビアーの作成方法などを紹介しています。

Silverlight 4もかなり機能がてんこ盛りですが、Silverlight 3もなにげに新機能はかなりあるので次回以降もご期待下さい。

 

Silverlight 2の記事も絶賛公開中ですのでこちらもどうぞー

Silverlight 2で作成する業務アプリケーション入門のバックナンバー

記事へブログ気持玉 0 / トラックバック 0 / コメント 2


Silverlight 4 すげーー

2009/11/19 13:05

昨日はPDC09 2日目のキーノートでかなりTwitterも騒がしかったですね。
たぶんそのうちここでビデオの配信が始まるはず。 http://microsoftpdc.com/Sessions/Key02
事前にSilverlight関連の新機能については知る機会があったのですが、
実際あそこまで完成度の高いデモを見せられると、ホントSilverlightすげーーーー
と叫びたくなる気持ちわかってもらえたんじゃないかと。

 

先にダウンロード関連リンク

Silverligh4 ビデオ

この方のブログで大体のコードサンプルなどがすでに掲載されています。

そんで、昨日の発表の自分用メモ

プリンターやら、WebCamやら、WebブラウザーコントロールなんかはHTMLとのHTML-DOM連携でどうにかなってはいたけれど、Silverlightに正式に組み込まれることでブラウザー外実行時にもちゃんと動くようになったわけですね。
あとはブラウザー外実行の権限昇格時の強力さが、ほかのRIA技術とはまったくの別技術といっていい気がする。
COMInterOpやデバイスのイベント検知、ファイルシステムの操作なんてホント何でもありだよね。

 

#げ、スタイルの都合で、トップだと備考欄が見えない。。。

#備考欄にいろいろ書いたのでこちらにどうぞ

分類 追加、修正機能 備考
Media Webcam and Microphone 要望の多かったWebカメラとマイクのサポートですね。
  Multicast Streaming  
  Output Protection  
  Offline DRM 動画業者向け?これは人によってはうれしいかな?
  QuickTimeのIIS Smooth Streaming SmoothStreamingの技術は圧倒的
Application Development Printing HTML-DOM連携が必要なくなった
  Rich Text リッチテキストコントロール。
  Clipbord Access HTML-DOM連携が必要なくなった
  Right Click 右ボタンクリックのイベント補足、コンテキストメニューの表示
  Mouse Wheel Silverlight3でも対応はあったけれどさらに強化
  Drag/Drop デスクトップのファイルをSilverlightアプリケーションにドラッグ&ドロップして、ファイルの中身を表示するとか
  Bidi & RTL もちろん装飾情報などを込みで Wordなんかにもコピーできる。
  HTML Webブラウザーコントロール
  Commanding and MVVM コマンドバインディングの正式サポート
  Additional Controls Webブラウザーコントロールで表示した内容を、ブラシとして使える。Flashの動画をSilverlightでパズルにしたり
Data & Networking Share Assemblies Across SL and .NET 4 CLR4と互換のあるアセンブリ→通常の.NETで作成されたアセンブリをそのまま参照設定できる
  Data Binding Improvements  
  UDP Multicast Support  
  REST Enhancements  
  WCF Improvements  
  WCF RIA Services  
Visual Studio 2010 WYSIWYG Design Surface VS2008から格段に進化
  XAML IntelliSense Improvements  
  Data Binding, Layout, Styles 定義したデータソースをドラッグ&ドロップでUI作成、バインドするコントロールのUIやスタイルをマウスで変更したり
  REST Services Integration  
  WCF RIA Services Integration  
TrustedApplications Custom Window Chrome  
  Local File System ローカルファイルシステムへのアクセス
  Cross-Site Networking  
  Keybord in Full Screen Mode フルスクリーンでのキーボードサポート、ゲーム用かな?
  Hardware Device Access カメラがPCにUSBで接続されたら、イベントを検知してファイルをSilverlightアプリケーションで読み込むとか。。。
  COM Automation Support 何でもあり、Excel COM-InterOpしたり、C#4.0 のdynamic大活躍。まるでVB6を見ているようだ
New Sandboxed Feature Windowing APIs Windowの形やサイズを変えられる
  Notification Popups Windowsの通知エリアに通知を表示する。
  HTML Support  
  Drop Target デスクトップのファイルをSilverlightアプリケーションにドラッグ&ドロップして、ファイルの中身を表示するとか
Silverlight 4 Performance Twice as Fast  
  30% Faster Startup 起動が早い、サイズも5Mぐらいに収まるらしい
  New Profiling Support  
記事へ面白い ブログ気持玉 5 / トラックバック 0 / コメント 0


Visual Studio 2010 Beta2 と Silverlight Toolkit

2009/10/20 08:39

MSDN で Visual Studio 2010 の Beta2 が公開されています。

現在は英語版のみ。

Visual Studio 2010 and .NET Framework 4 Beta 2

 

同時にVisual Studio 2010に対応したSilverlight ToolkitのOctober 2009がリリースされています。

 

Silverlight Toolkit October 2009

記事へブログ気持玉 / トラックバック / コメント


タイトル 日 時
Expression Studio 3(英語版)がMSDNサブスクリプションダウンロードに登場
Expression Studio 3(英語版)がMSDNサブスクリプションダウンロードに登場 昨日Windows7と同時にRTMされたExpressionBlend3ですが、MSDNサブスクリプションダウンロードに英語版のExpressionStudioが登場しています。 Expression Studio は Expression Web, Expression Blend + SkatchFlow, Expression Design, Expression Encoderの統合パッケージです。日本語版は今回のReMixで9月提供がアナウンスされましたが、まだ少し時間があります... ...続きを見る

ブログ気持玉 0 / トラックバック 0 / コメント 1

2009/07/24 11:49
Silverlight 3 Tools の XAML プレビュー画面
Silverlight 3 Tools の XAML プレビュー画面 Silverlight 3 Tools では Visual Studio の XAML プレビュー画面がサポートされていないっていうのは確認してたんだけれど、実はサポートされていないだけで一応機能としては残っているようです。 ネタ元→ XAMLプレビュー画面 MSDNフォーラムでSilverlightSquareさんがリンクにあげているフォーラムの投稿によると、デザイナの下のフレーム上にカーソルを持って行くと、カーソルが矢印から垂直のカーソルに変わるからそこをドラッグして上げてみろと言うこと... ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 12 / トラックバック 0 / コメント 2

2009/07/22 15:46
Silverlight2 と Silverlight3 の開発環境の同居
先日のReMix Tokyo 2009 の日にSilverlight 3 Tools の日本語版が出たわけだけれど、前からアナウンスがあったようにRTM版の2 Tools でも、Visual Studio 2008ではSilverlight開発のマルチターゲッティングがサポートされないみたい。(Silverlight 3 Toolsをインストールすると、インストールの段階でSilvelright 2 Toolsはアンインストールされる。) しかもSilverlight 3 と 2 のマルチター... ...続きを見る

ナイス ブログ気持玉 1 / トラックバック 0 / コメント 0

2009/07/18 15:16
Silverlight 3 用のSilverlight Toolsが提供開始
今日のReMix Tokyo 09とあわせてか、先日リリースされたSilverlight3の日本語開発環境がリリースされています。 残念ながら、RIA ServicesやExpression Blend の日本語版はまだなようです。 Silverlight 3 Tools Microsoft Silverligh 3 ソフトウェア開発キット (SDK) リンク先が間違っていたので修正 ...続きを見る

ナイス ブログ気持玉 2 / トラックバック 1 / コメント 0

2009/07/16 08:07
.NET RIA Services を学ぼう
Silverlight 3.0 のRTWと同時に.NET RIA Servicesの新しい版が公開されました。.NET RIA ServicesはRIA(ASP.NET AJAXやSilverlight,WPF,WindowsForms)でn階層の業務アプリケーションを作成するためのデータ中心のアプリケーション基盤です。現在のところはSilverlightに対応しています。 少し前からちょこちょこさわっているんですが、July 2009 PreviewがGoLiveライセンスで提供されたりとだ... ...続きを見る

ブログ気持玉 0 / トラックバック 0 / コメント 2

2009/07/14 12:07
Silverlight Tools 3 では System.Web.Silverlight は別提供
今までASP.NETでSilverlightを利用する場合は、System.Web.Silverlight.dllに含まれる、asp:silverlight や mediaplayer なんかのサーバーコントロールを使ってSilverlightをWebFormに配置していたと思うんだけれど、Silverlight Tools(SDK) 3 からはこの System.Web.Silverlight は Silverlight Tools のリリースには含まれなくなったそうです。 Silverli... ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 4 / トラックバック 0 / コメント 0

2009/07/13 18:10
Silverlight 3.0 の開発関連ツールのインストールはもうちょっと待った方がいいかも
Silverlight 3.0 の開発関連ツールのインストールはもうちょっと待った方がいいかも 追記 Silverlight Tools 3.0 を入れる前に、Silverlight 2.0 の Silverlight Tools や Silverlight SDK をアンインストールしておくとこの問題は起きませんでした。Silverlight Tools 3.0 は Beta の時と同じように同居はできないようです。 Visual Studio 2010 からは、Silverlight のプロジェクトを作成するときにバージョンを選択できますが、Visual Studio 2008 ... ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 2 / トラックバック 0 / コメント 0

2009/07/10 11:50
Silverlight 3.0 リリース〜!
Silverlight 3.0 リリース〜! かねてから予告があったとおり本日Silverlight3.0のRTW版が公開されました。Silverlight2.0のときもだけれど、結構あっさり出たなーというイメージ。 次のULRでインストールが可能です。 Silverlightをインストール http://www.microsoft.com/silverlight/resources/install.aspx で、とりあえずまだ英語版なんだけれど、ほかの諸々のリソースのダウンロード先はここ。 Silverlight... ...続きを見る

ガッツ(がんばれ!) ブログ気持玉 1 / トラックバック 1 / コメント 0

2009/07/10 10:45
Silverlight 2 プロジェクトで、起動の方法を変える。
Silverlight 2 プロジェクトで、起動の方法を変える。 Visual Studio 2008 で Silverlight プロジェクトを作成した場合、こんなダイアログが出てきて、ビルド時にデバック用ページを自動的に作成してデバックを行うか、テスト用のページを作成するかを聞かれます。 これは後から変更できるんだけれど、MSDNにもこの変更方法がなかなか見つからない。というか、僕は見つけられなかったので、メモがてらかいておく。 Silverlightのプロジェクトのプロパティ-デバックの画面を見ると、テストページを自動的に生成するか、ページを指... ...続きを見る

ブログ気持玉 0 / トラックバック 0 / コメント 1

2009/07/01 11:20
Silvelright + Prism のポッドキャスト
RSSを眺めていたら、Prism を使った Silverlight 開発のポッドキャストを公開しているページが合ったので眺めていた。動画だと英語がわからなくてもだいたい何をやっているかはわかるので、良い感じ。 Silverlight Prism Prism for Silverlight - An Intro to Composite Applications Silverlight3.0 なら Navigation Framework も良い感じなんだけれどね、Silverlig... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2009/05/17 15:15
Silverlight 3 のオフライン機能を突っついてみる その3
アプリケーションの状態を取得する。 Silverlight でアプリケーションが、Offline(Detach)なのか、OnLineなのかを調べるためには、Application の ExecutionState を調査する。 たとえば、プログラム起動時に、アプリケーションの状態を取得する場合は、App.xaml.cs 中で、this.ExecutionState の値を調査すれば解るし、各ページからアプリケーションの状態を調査する場合は、System.Windows.Application... ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 4 / トラックバック 0 / コメント 1

2009/04/14 11:14
SilverlightとWindowsFormsのServiceReferenceの違い
SilverlightとWindowsFormsのServiceReferenceの違い CodeZineのこの記事で作った方法だと、WindowFormsアプリケーションでサービス参照の追加時に非同期メソッドが追加されないんです。と質問を受けたのでちょっと確認。 通常、Visual Studio のサービス参照の追加から下のような画面を表示して、WebサービスやWCFサービスの参照設定を行う訳だけれど、Silverlightは非同期通信のみのサポートになるため、WindowsFormsなんかで作成するときと「詳細設定...」ボタンをクリックしたときの動作が変わります。 W... ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 1 / トラックバック 0 / コメント 2

2009/04/13 15:39
Silverlight 3 のオフライン機能を突っついてみる その2
アプリケーションのネットワーク状況を検知する。 Silverlight 3 では、起動している Silverlight 3 アプリケーションのネットワーク状況を取得するプロパティが有ります。現在のアプリケーションのネットワーク状況を主とする場合、System.Net.NetworkInfomation.NetworkInterface クラスの GetIsNetworkAvailable メソッドを使用して調査を行います。 また、イベントハンドラを登録しておけば、ネットワークの状況が切り替わ... ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 3 / トラックバック 0 / コメント 0

2009/04/13 14:54
Silverlight 3 のオフライン機能を突っついてみる その1
Silverlight 3 のオフライン機能を突っついてみる その1 Silverlight 3 Beta 1 では、ブラウザにロードしたSilverlightアプリケーションをコンピュータにインストールしてオフラインで動作させる機能が追加されています。 ちょっと時間ができたので、このオフライン機能をちょっと突っついて見ようと思います。 開発環境に関しては、こぐまさんの記事が注意点を含め詳しく書いているのでこちらを参照してもらうとして、さっそくSilverlight3のプロジェクトをつくってデバック実行してみました。 &#160; 早速実行 Vis... ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 5 / トラックバック 0 / コメント 1

2009/04/01 18:23
とあるエバンジェリストのプチMIX
CodeSeekの勉強会に行ってきた。(とはいっても仕事のせいでセッションはすべて終わった懇親会からの参加) もともとは MSのエバンジェリストの長沢さんが Oslo についてお話をしてくれるからということで、懇親会でお話だけでも出来ればと思っていったんだけれど、2次会以降はSilverlight関連では世界でもトップクラスの おにあく さんによる プチMIX09 がかなり濃かった。(聴衆は僕とtamaさんの二人だけ!!)話しても良いよーっていわれたところをメモとして残しておく。 米国のMI... ...続きを見る

驚いた ブログ気持玉 2 / トラックバック 0 / コメント 0

2009/03/22 16:34
Akamai で Silverlight のホストを開始
mixi の某氏の日記でこんなサイトが紹介されていました。 smoothHD&#160; Silverlight は高品質な動画に強いというイメージは前からあったんですが、こういったサイトを見せられるとやっぱり素直にすごいと思いますね。で、右上の方に Akamai のロゴがあったので軽く検索してみたら ITPro のニュースで取り上げられていました。 MicrosoftとAkamai,Silverlight技術採用のビデオ配信サービスで提携 これは動画関連は一気にくるかも ...続きを見る

ブログ気持玉 / トラックバック / コメント

2008/11/01 18:18
Expression Blend 2 SP1(日本語版) Release
Silverlight 開発環境(こぐまBLOGより) 出てるらしいです。来月仕事とは別に必要になるのでダウンロード中 ってことは、開発環境の方もそろそろかな。♪ &#160; Microsoft Expression Blend&#8482; 2 Service Pack 1 &#160; こっちも更新中 Silverlight(RTW) 関連のメモ ...続きを見る

ブログ気持玉 / トラックバック / コメント

2008/11/01 17:51
Jellyfish Deep Zoom
MIX Essensials で発表が合った、Deep Zoom のサーバ側環境&ライブラリの Jellyfish Deep Zoom が CodePlex で公開になっています。 MIX の時はセッション終了直後ひたすらセカンドファクトリーの東さんに質問をしていました。w(他の人ごめんなさい) &#8594;セカンドファクトリーのプレスリリース リリースページからソース、実行ファイル、データベース定義、ドキュメントがダウンロードできるようになっています。ドキュメントにはPDF形式でか... ...続きを見る

ブログ気持玉 0 / トラックバック 0 / コメント 1

2008/10/19 13:22
Silverlight(RTW) 関連のメモ
Silverlight(RTW) 関連のメモ RTM してるよ。 と、これだけではなんなんで、Visual Studio で Silverlight 開発を行うときに必要な物をメモっておきます。 順次追加予定。。。 &#160; 開発ツール Silverlight2.0 RTW ランタイム Visual Studio &#8594; Silverlight Tools for Visual Studio 2008 SP1 (英語) &#8594; Visual Studio 2008 ... ...続きを見る

ブログ気持玉 / トラックバック / コメント

2008/10/14 16:41
Silverlightではじめるメディア配信の資料が公開中
Silverlight と言えばやはり Microsoft の大西さんですが、大西さんが以前担当された MSDN オフライン 「Silverlight ではじめるメディア配信」 の資料が内容を追記され公開されています。 Expression Media の使い方から Silverlight Streaming への配置、既存サイトとのマッシュアップまで、さすが Silverlight 1.0 から猛者ぶりを発揮しまくっている大西さんならではのスライドです。 Silverlight Strea... ...続きを見る

なるほど(納得、参考になった、ヘー) ブログ気持玉 6 / トラックバック 0 / コメント 0

2008/09/28 04:49
Expression Studio 2 Release
Microsoft Expression Studio 2 Released(David Hayden) より Expression Studio 2 がリリースされたそうです。 Expression Studio 1 との違いで大きいのは Silverlight1.0 に対応したExpression Blend かな。Expression Blend 2.5 は個別販売のみになるのかな? 2.0 からのアップグレードパスなんかがあればいいけれど、このあたりはどうなっているんだろう。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2008/05/02 14:03
なんだか騒がしくなってきたな。
Scott のブログで Silverlight2 のチュートリアル なんていうのが公開されているせいだろうけれど、Silverlight関連のブログが騒がしくなってきている。来週頭あたりに来るかな? ...続きを見る

ブログ気持玉 0 / トラックバック 0 / コメント 1

2008/02/23 11:40
マイクロソフトプレスの一部が無料観覧できるようになっています。
Free Microsoft Press E-Book Offer! マイクロソフトプレスの一部が無料で観覧できるようになっています。 中でも LINQ に関しては Appendix 以外のすべての章が観覧、ダウンロードできるようになっています。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2008/01/01 09:38
Silverlight 2.0 Beta では仕様がずいぶん変わるかも?
「Silverlight 1.0 でできること」(develop .net)より Silverlight 1.1 が 2.0 に名称変更になりましたが、現在のところ開発者が Silverlight のページやコントロールを作成する場合は Silverlight 1.1 Tools Alpha を使用する必要があります。 ただ、大野さんの話では、2.0 Beta ではこのあたりの仕組みが大きく変わるかも知れないということです。 ...続きを見る

ブログ気持玉 0 / トラックバック 0 / コメント 1

2007/12/18 13:28
Silverlight のMSDNオフラインセミナー
とりあえず RSS で Silverlight の MSDN オフラインが飛んできたので速効申し込みましたよ。 第 73 回 MSDN オフラインセミナー「Silverlight 1.0 & 2.0」 ...続きを見る

ブログ気持玉 0 / トラックバック 0 / コメント 1

2007/12/13 02:23
Microsoft Download Center Beta
新しいPCにいろいろインストールしようと Microsoft のダウンロードサイトをうろうろしてたら、 Microsoft Donload Center Beta 使ってみる?というダイアログが出てきたので、迷わず Try を選択!! ...続きを見る

ブログ気持玉 0 / トラックバック 1 / コメント 0

2007/12/07 00:15
Silverlight1.1 は Silverlight2.0 へ
Quick update on Silverlight (Somasegar's WebLog)より ...続きを見る

ブログ気持玉 / トラックバック / コメント

2007/11/30 07:25
Visual Studio 2008 RTM 用の Silverlight 1.1 テンプレート
Silverlight 1.1 Tools for Visual Studio 2008 available for download(Your Websites, Our Passion!)より ということで、Visual Studio 2008 ようのテンプレートが出ました。 ダウンロード→Microsoft Silverlight 1.1 Tools Alpha for Visual Studio 2008 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2007/11/27 15:28
Vista Smalltalk も DLR 対応しているみたい。
My "Lap Around Silverlight" Talk at TechEd (ScottGu's Blog)で DLR 上で動作する Smalltalk の話題が出ているけれど、これ前に何度か紹介した、Vista Smalltalk の Silverlight 版みたいですね。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2007/06/07 13:51
Silverlight 関連の後で見るリスト
処理が追いつかん。。。 これ GW 明けに読んだり見たりしたらどれだけ時間かかるんだろう。。。 ...続きを見る

ブログ気持玉 0 / トラックバック 0 / コメント 1

2007/05/03 18:56
VBx → VB10
What the heck is "VBx"? (Panopticon Central)より、 先日発表になった Silverlight1.1 と DLR に関連して VBx のお話が出ています。 やばい、、、こんな話を聞いたら Ask the Experts で聞きたいことが多すぎて困るじゃないか。。。 ...続きを見る

ブログ気持玉 0 / トラックバック 1 / コメント 0

2007/05/03 17:05
MIX07でいろいろ発表があったみたいです。
MIX07 - Keynoteより Mix07 の keynote において発表があったさまざまなことがエントリされています。 ...続きを見る

ブログ気持玉 / トラックバック / コメント

2007/05/01 17:37
Vista Smalltalk フラッシュ版も出てる
自分の Blog を見直していて以前 Vista Smalltalk のURLだけ紹介したことがあったんだけれど、今日久々にのぞいてみたら Beta1 がリリースされていました。 Vista Smalltalk ...続きを見る

ブログ気持玉 / トラックバック / コメント

2007/04/28 16:48
Silverlight ってなんだ?
Silverlight - The next generation web experiences(Somasegar's WebLog)より Silverlight というソリューションが発表されています。 ...続きを見る

ブログ気持玉 0 / トラックバック 2 / コメント 2

2007/04/16 15:32
[WPF/e] Vista?
Windows Vista - WPF/E Style! より、 WPF/e で作成されたサンプルですが、まるで WindowsVista のようなデスクトップのデモが紹介されています。 これで Aero が使えない PC でもあたらしい Vista が見えるかもw ...続きを見る

ブログ気持玉 / トラックバック / コメント

2007/03/19 00:41

トップへ | みんなの「Silverlight」ブログ

かるあ のメモ Silverlightのテーマ/BIGLOBEウェブリブログ
文字サイズ:       閉じる