xaml の勉強不要! wpf アプリケーションは作れます

48
わわわわわわ わわわわわ #21 わわわわ わわ わわ Microsoft MVP for Development Tools Visual C# .Net わわわわわわわわわわわわわわわ わわわわわわ XAML わわわわわ WPF わわわわわわわわわわわわわ

Upload: ursa-schmidt

Post on 30-Dec-2015

152 views

Category:

Documents


0 download

DESCRIPTION

XAML の勉強不要! WPF アプリケーションは作れます. えムナウ(児玉 宏之) Microsoft MVP for Development Tools Visual C# .Net ユーザーエクスペリエンス研究所 わんくま 同盟. WPF アプリケーション. アジェンダ. 自己紹介 はじめに 簡単なアプリケーションを作ってみる Binding 概要 Linq to SQL とのバインディング アニメーション 3 D グラフィック まとめ. WPF アプリケーション. 自己紹介. 福井県越前市(武生市)出身、東京都杉並区在住。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

えムナウ(児玉 宏之)Microsoft MVP for Development Tools Visual C#.Net ユーザーエクスペリエンス研究所わんくま同盟

XAML の勉強不要! WPF アプリケーションは作れます

Page 2: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

• 自己紹介• はじめに• 簡単なアプリケーションを作ってみる• Binding 概要• Linq to SQL とのバインディング• アニメーション• 3 D グラフィック• まとめ

WPF アプリケーションアジェンダ

Page 3: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

• 福井県越前市(武生市)出身、東京都杉並区在住。• ソフトウェア業務歴 28 年・フリ-技術者歴 20

年以上、でも「永遠の 28 歳」。• 4 Bit ワンチップからワークステーションまで

のソフトを開発、開発言語も多種多様。• 最近は SQL サーバー + Windows Forms や

WPF の Visual C# ソフト開発が多い。• Microsoft MVP for Development Tools Visual

C# を 4 年連続で受賞。• INETAJ 理事、 INETAJ スピーカビューロー登録。• わんくま同盟他でスピーカ経験多数。

WPF アプリケーション自己紹介

Page 4: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

• WPF や Silver Light の解説やデモを見て興味を持った方も多いと思います。

• しかし、 XAML を見て、大変そうだなってしり込みしている人も多いと聞きます。

• そこで、 Expression Blend と Visual Studio のコラボレーションで XAML を書かないで WPF アプリケーションの開発が行えることを見てほしいと思います。

WPF アプリケーションはじめに

Page 5: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーション簡単なアプリケーションを作ってみる• まず Expression Blend を起動して新しいプロ

ジェクトを作成します。

Visual C# と Visual Basic

が選択可能です。

Page 6: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーション簡単なアプリケーションを作ってみる• こんな画面が表示されます。

Page 7: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーション簡単なアプリケーションを作ってみる• こんなコントロールがあります

Page 8: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーション簡単なアプリケーションを作ってみる• 資産ライブラリにもコントロールはあります

Page 9: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーション簡単なアプリケーションを作ってみる• コントロールを配置します。

Page 10: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーション簡単なアプリケーションを作ってみる

• プロパティを修正します。修正した(された)プロパティは白丸が付きます。

修正内容は右クリックメニューでリ

セット可能です(もちろん

UNDO も可能)。

Page 11: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーション簡単なアプリケーションを作ってみる

• イベントを作成します。

ここでプロパティとイベントを切り替え

ます。

空白状態からダブルクリックで自動的に作成されます。

Page 12: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーション簡単なアプリケーションを作ってみる

• Visual Studio が起動します。 自動的に Visual Studio が起動されて作成されたイベントが表示されます。

Page 13: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

• こんな風に Expression Blend でコントロールを配置していってプロパティを変更して画面を作成します。

• イベント処理は Visual Studio でプログラムを作成していきます。

• 簡単な画面はこのようにして作成できます。• Expression Blend と Visual Studio の切り替

え時には必ず保存してください、切り替えたときに変更があったことを自動的に認識して再読み込みのダイアログが出て再読み込みします。

WPF アプリケーション簡単なアプリケーションを作ってみる

Page 14: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

DEMO簡単なアプリケーションを作ってみ

るえムナウ(児玉 宏之)Microsoft MVP for Development Tools Visual C#.Net ユーザーエクスペリエンス研究所わんくま同盟

Page 15: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

• Windows Presentation Foundation (WPF) データ バインディングは、アプリケーションがデータを提供し、 UI と結びつけることで、柔軟な UI 表現、 ビジネス ロジックと UI の明確な分離を実現します。

• データ フローの方向やソースの更新の要因を選択でき、表示のためのデータ変換や格納時のデータの検証を行えます。

WPF アプリケーションBinding の概要

Page 16: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションBinding の概要

• Binding オブジェクトでコントロールのプロパティとデータソースのプロパティを結びつけます。

Textプロパティ

PersonNameプロパティ

TextBlockMy DataSource( Person クラ

ス)

Binding オブジェクト

Page 17: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションBinding の概要

• データの方向を決めることができます。

Dependency Property

Property

ターゲット ソース

OneTime

OneWay

TwoWay

OneWayToSource

Binding オブジェクトBindingMode プロパティ

BindingMode で Default はテキスト ボックスやチェック ボックスなど編集可能な場合は TwoWay 、それ以外のほとんどのプロパティはOneWay 。

Page 18: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションBinding の概要

• ターゲットのコントロールのプロパティの更新タイミングを設定できます。

Dependency Property

Property

ターゲット ソース

OneTime

OneWay

TwoWay

Binding オブジェクトBindingMode プロパティ

OneTime はアプリケーションの起動時またはデータ コンテキストの変更時OneWay ・ TwoWay はプロパティ変更時

Page 19: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションBinding の概要• ソースのプロパティの更新タイミングを設定で

きます。

Dependency Property

Property

ターゲット ソース

TwoWay

OneWayToSource

Binding オブジェクトBindingMode プロパティ

Binding.UpdateSourceTrigger プロパティ PropertyChanged の場合ターゲットプロパティ変更時、LostFocus の場合ターゲットがフォーカスを失った時、Explicit の場合アプリケーションが UpdateSource を呼び出した時。

Page 20: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションBinding の概要• DataContext や ItemsSource で扱うデータ

をまとめて設定できます。

TextBlock.Textプロパティ

TextBlock.Textプロパティ

TextBlock.Textプロパティ

TextBlock.Textプロパティ

TextBlock.Textプロパティ

TextBlock.Textプロパティ

IDプロパティふりがな

プロパティ氏名

プロパティ誕生日

プロパティ都道府県 IDプロパティ郵便番号

プロパティBinding オブジェクト

顧客クラスインスタンス

Binding オブジェクト

Binding オブジェクト

Binding オブジェクト

Binding オブジェクト

Binding オブジェクト

顧客 ListView. ItemsSource(親要素)

代入

Page 21: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションBinding の概要

• Expression Blend のデータソース– XML データ ソース

• XML 形式のデータを提供できるローカルまたはリモートの XML ファイル

– 共通言語ランタイム (CLR) オブジェクト データ ソース• ObservableCollection クラスが提供• IEnumerable インターフェイスと

INotifyCollectionChanged インターフェイスと INotifyPropertyChanged インターフェイスを実装したクラス

• Linq to SQL データ

Page 22: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションBinding の概要

• WPF のデータソース– Expression Blend のデータソースの2つ– ADO.NET データ

• ADO.NET DataView は、 IBindingList を実装し、バインディング エンジンがリッスンする変更通知を提供

– DependencyObject• WPF のコントロールは全て DependencyObject • 任意の DependencyObject の依存関係プロパティにバイ

ンド、コントロールのプロパティ間のバインディングに主に使用

• Blend ではプロパティウィンドウからデータバインドで設定可能

Page 23: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションLinq to SQL とのバインディング• Visual Studio で WPF アプリケーションを作

成。

WPF アプリケーション

.NET Framework 3.5

Page 24: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションLinq to SQL とのバインディング• プロジェクトに LINQ to SQL クラス追加。

LINQ to SQL クラス

Page 25: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションLinq to SQL とのバインディング• データ接続からテーブルをドラッグ。

テーブルをここにドラッグ

Page 26: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションLinq to SQL とのバインディング• データコンテキストが自動生成。 リビルドして

反映させます

Page 27: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションLinq to SQL とのバインディング• Expression Blend で同じプロジェクトを読み

込みます。• ListBox を追加して listbox1 と名前を付けておきます。

• Blend に 作成した LINQ to SQLクラスを追加するには、 データ+ CLR オブジェクト をクリックします。

データ + CLR オブジェクト

Page 28: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションLinq to SQL とのバインディング• ListBox に表示したい

テーブルを選択して、CLR オブジェクトデータソースを作ります。

LinqToSQL アセンブリの

LinqToSQL 名前空間のOrders クラス

Page 29: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションLinq to SQL とのバインディング• ここでは複数の項目を

まとめてバインドする為データソースのクラスを選択し DataTemplateの定義を押します。

CustomerDS データソース

Customers クラス

バインドの方向ソースの更新タイミング規定値・値コンバータ

を指定できます

Page 30: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションLinq to SQL とのバインディング• 表示したい項目を選ぶと自動的にデータテンプ

レートを作成します。

CompanyNameContactName

を表示させます。

Page 31: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーション

public partial class Window1 : Window

{

private DataClasses1DataContext

dataContext = new DataClasses1DataContext();

public Window1()

{

InitializeComponent();

this.listbox1.ItemsSource = dataContext.Customers;

}

} ItemSource にCustomers を設定します

ローカルにDataContext を用意します

Page 32: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

• クラスのプロパティと UI のプロパティを Binding オブジェクトで結びつければ、データバインディングできます。

• クラスのインスタンスを UI の DataContext や ItemSource に設定して、クラスのプロパティ名と UI のプロパティ名 を結びつければ、データバインディングできます。

• ListBox や ListView などは、 DataTemplate でデータの表示を設定できます。

WPF アプリケーションBinding

Page 33: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

DEMOBinding

えムナウ(児玉 宏之)Microsoft MVP for Development Tools Visual C#.Net ユーザーエクスペリエンス研究所わんくま同盟

Page 34: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

• UI のプロパティを時間に合わせて変更していけば、 UI は簡単なアニメーションをしているように見えます。

• Expression Blend では、タイムライン上にキーフレームを作成しプロパティを変更することで、キーフレーム間の時間に指定されたプロパティ値を補間して、なめらかなアニメーションにしてくれます。

• アニメーションの開始や終了はトリガのイベントで指定します。

WPF アプリケーションアニメーション

Page 35: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションアニメーション• マウスをかざすと大きくなるボタンを作ってみ

ましょう。– 新しいプロジェクトを作成しボタンを配置します。

ボタンを配置します。

10x10 の大きさにします。

Page 36: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションアニメーション• マウスがボタンの描画領域に入ったときに発生

するイベントは MouseEnter です、トリガにボタンの MouseEnter イベントを作成します。

ボタンを選択します。

MouseEnter イベントを選択します。

+イベントをクリックしてイベントを追加し

ます。

Page 37: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションアニメーション• MouseEnter イベント発生時に実行するタイム

ラインを割り当てます。

+をクリックしてタイムラインを割り当てま

す。

タイムラインが存在しないので新規で自動作成されます。

Page 38: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションアニメーション• タイムラインが表示され記録オンの状態になり

ます。

注)このハードコピーは作業中の画面

です。

Page 39: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションアニメーション• MouseEnter イベント発生で 1秒後にボタンサ

イズを指定します。

ボタンを選択します。

タイムライン再生ヘッドを 1秒の位置にします。

Page 40: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションアニメーション• MouseEnter イベント発生で 1秒後にボタンサ

イズを既定の 10 から 128 にします。Width Height を 128

にします。

キーフレーム(白丸)が作成されます。

Page 41: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションアニメーション• MouseLeave イベント発生でタイムラインを停止しボタンの大きさを規定値 (10x10) にします。

タイムライン停止を選択します。

ボタンを選択します。

MouseLeave イベントを選択します。

タイムラインを選択します。

+イベントをクリックしてイベントを追加し

ます。

Page 42: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーションアニメーション• マウスをかざしたりはなしたりするとボタンの

大きさが変わります。マウスをかざすと。

徐々に大きくなり 1秒後にこの大きさに。

マウスをはなすと元通り。

Page 43: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーション3 D グラフィック• 3 D グラフィックは XAML形式や Wave front

3D形式が読み込めます。

プロジェクトを選択します。

既存のアイテムを追加を選択します。

Page 44: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーション3 D グラフィック

Wavefront 3 D ( obj ) や Wavefront 素材(mtl)

Page 45: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

WPF アプリケーション3 D グラフィック• プロジェクトの obj ファイルをダブルクリック

すると、 ViewPort 3 D ・カメラ・環境光・指向性ライトが自動的に作成されます。

読み込まれた3 D グラフィックが表示されま

す。

ViewPort3D オブジェクトが追加されます。

Page 46: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

DEMOアニメーションと3 D グラフィック

えムナウ(児玉 宏之)Microsoft MVP for Development Tools Visual C#.Net ユーザーエクスペリエンス研究所わんくま同盟

Page 47: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

• Expression Blend と Visual Studio のコラボレーションで XAML を書かないで WPF アプリケーションの開発が行えます。

• バインディングを使えばデータと UI を分離でき、表示のためのデータ変換や格納時のデータの検証を行えます。

• アニメーションを作成すれば Expression Blend で多種多様な視覚効果を追加できます。

• 3 Dオブジェクトも XAML 形式や Wave front 3D 形式から読み込めアニメーションもできます。

WPF アプリケーションまとめ

Page 48: XAML  の勉強不要!  WPF  アプリケーションは作れます

わんくま同盟 東京勉強会 #21

Resources.Net ユーザーエクスペリエンス研究所http://mnow.jp/

INETA JAPAN http://www.ineta.jp/

Microsoft Community Ring ホームhttp://www.microsoft.com/japan/powerpro/community/

わんくま同盟http://www.wankuma.com/

Microsoft Expressionhttp://www.microsoft.com/japan/products/expression/default.mspxMicrosoft Visual Studiohttp://www.microsoft.com/japan/msdn/vstudio/

Microsoft MSDNhttp://msdn2.microsoft.com/ja-jp/library/bb546194.aspxhttp://msdn2.microsoft.com/ja-jp/library/ms754130.aspxhttp://msdn2.microsoft.com/ja-jp/library/ms753307.aspxhttp://msdn2.microsoft.com/ja-jp/library/ms771633.aspxhttp://msdn2.microsoft.com/ja-jp/library/ms747122.aspx