Visual Studio 2013 C# + XAML 入門

Slides:



Advertisements
Similar presentations
情報処理 第8回第8回第8回第8回. 目次 (1) スタイルの利用 – スタイルの概要 – スタイルの適用 (1) – 「スタイル」ウィンドウを開く – スタイルの適用 (2) – スタイル適用のセオリー – すべてのスタイルを表示 – スタイルの書式を変える (1) – スタイルの書式を変える (2)
Advertisements

Microsoft PowerPoint IT講習会 /9 (Mon) テックサポーター 佐藤 諒.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
情報基礎演習I(プログラミング) 第9回 6月22日 水曜5限 江草由佳
応用コース:ワープロを活用する WORD2000 1回目 基礎コースの復習(第1章と付録) 2回目 文字の入力(第2章と第4章)
~Universal Windows Platform, cocos-2dxゲーム開発の基礎~
大杉 直樹†, 神谷 年洋‡, 門田 暁人†, 松本 健一† †奈良先端科学技術大学院大学 情報工学科 {naoki-o, akito-m,
エクセル(1)の目次 起動法、ブック、シート、セル ブックの開き方 エクセル画面 マウスポインターの種類 シート数の調節 データの入力法
情報処理実習 第05回 Excelマクロ機能入門 操作マクロ入門.
情報処理 第8回.
2017/3/2 情報処理 第8回.
Microsoft PowerPoint98 Netscape Communicator 4.06[ja]
情報処理 第7回.
2017/3/7 情報処理 第8回.
コントロールパネル ◎コントロール パネル: コンピュータのさまざまな機能を設定するための画面
ゲームプログラミング講習 第1章 DXライブラリ入門
Win32APIとMFC H107102 古田雅基 H107048 佐藤一樹 H107126 山下洋平.
コントロールパネル ◎コントロール パネル: コンピュータのさまざまな機能を設定するための画面
C#によるWindowsFormApplication入門
情報理工学部 情報システム工学科 ラシキアゼミ3年 H 岡田 貴大
コンポーネントの再利用に必要な情報 えムナウ (児玉宏之)
コンポーネントの再利用に必要な情報 えムナウ (児玉宏之)
Microsoft PowerPointを使ってみよう
アプレット (Applet)について.
エクセル(1)の目次 起動法、ブック、シート、セル ブックの開き方 エクセル画面 マウスポインターの種類 シート数の調節 データの入力法
F5 を押すか、または [スライド ショー] > [最初から] をクリックして、コースを開始してください。
Visual Studio LightSwitchの概要
はじめてのASP.NET 楽しいアプリ制作の会 #1 TWorks.
【トップページ-TOPICSの登録・編集】
JSFによるWebアプリケーション開発 第6回
マイクロソフト Access を使ってみよう 第1回
マイクロソフト Access を使ってみよう 第4回
プログラミング演習3 第2回 GUIの復習.
プログラミング 設計資料 メンバー:.
簡単PowerPoint (PowerPoint2007用)
経営工学基礎演習a PowerPointの利用.
ホームページ作成・更新講座 夏のコンピュータ学習会 画像
第2回 Microsoft Visual Studio C++ を使ってみよう
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
Borland Delphi 6 でビジュアルプログラミング
プロジェクト演習Ⅱ インタラクティブゲーム制作 イントロダクション2
Microsoft PowerPoint IT講習会 /5 (Wed) テックサポーター  佐藤 諒.
MVP for VB が語る C# 入門 初音 玲.
MVP for VB が語る C# 入門 初音 玲.
情報処理 第8回.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
Windows PowerShell Cmdlet
プログラミング応用 printfと変数.
VBA ( Visual BASIC for Application) を使えるようにする方法
EclipseでWekaのAPIを呼び出す
オブジェクト指向 プログラミング 第十四回 知能情報学部 新田直也.
プログラミング演習3 第2回 GUIの復習.
3.1 PowerPoint の概要 PowerPointを使ってできること
ゲームプログラミング講習  第3章 ゲーム作成 ブロック崩しを作ります ゲームプログラミング講習 第3章 ゲーム作成.
0.2 プロジェクトの準備 DXライブラリを使うための準備.
インタラクティブ・ゲーム制作 プログラミングコース 補足資料
フォトムービーを作ろう 【初めの準備】 ■ 写真を10枚くらい用意をして、マイドキュメントの 中にファイルを作り保存をしておこう
表計算ソフトを使って 万年カレンダーを作ろう!
高度プログラミング演習 (01).
表計算 Excel 演習 1.Excel を使ってみる.
vc-2. Visual Studio C++ のデバッガー (Visual Studio C++ の実用知識を学ぶシリーズ)
情報基礎演習I(プログラミング) 第8回 6月8日 水曜5限 江草由佳
サブゼミ第7回 実装編① オブジェクト型とキャスト.
画面への描画 Graphics オブジェクト 紙 ペン Pen オブジェクト Brush オブジェクト 画面のピクセルをカプセル化
vc-1. Visual Studio C++ の基本操作 (Visual Studio C++ の実用知識を学ぶシリーズ)
Visual Studio 2013 の起動と プロジェクトの新規作成 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
How To WPF アプリケーション Part4 By 中博俊.
Cp-1. Microsoft Visual Studio 2019 C++ の使い方 (C プログラミング演習,Visual Studio 2019 対応) 金子邦彦.
第0.5回: ~Unity Editorの操作方法~
How To WPF アプリケーション Part3 By 中博俊.
Presentation transcript:

Visual Studio 2013 C# + XAML 入門 大田 一希

注意事項 記載の内容は個人の見解であり、所属する企業を代 表するものではありません。

もくじ Visual Studio overview アプリの作成と実行 プロジェクトの作り方 プログラムの実行方法 おススメのひな形プロジェクトの作り方 アプリの作り方 C# 実例:フィードリーダー まとめ

Visual Studio overview Windows上の最強のプログラミング環境

作れるアプリケーション(代表的なもの) デスクトップアプリケーション C++, C#, VB, F#

Webアプリケーション クライアント側 HTML5+CSS3/JavaScript サーバー側 ASP.NET ASP.NET HTTP

Windows ストア アプリ Windows 8以降用の全画面表示アプリ(1画面に2つ, 3 つ表示も可能) ストアで配布可能 開発言語 C#/XAML VB/XAML JS/HTML5+CSS3 C++/XAML, DirectX

LightSwitch Office app, Workflow Windows phone etc… ネイティブ C/C++ WinForm C#/VB WPF C#+XAML VB+XAML WebForm C# VB HTML CSS JS MVC C# VB HTML CSS JS WebAPI C# VB .NET XAML/C# XAML/VB Web HTML5/JS ネイティブ XAML/C++ デスクトップアプリ Webアプリ Windows ストア アプリ Visual Studio 作れるもの全体像 + 今回の範囲

アプリの作成と実行

アプリケーションの単位 ソリューション プロジェクト Visual Studioでプログラムを作るときの大きな単位 プロジェクトを複数持ってる プロジェクト 1つのアプリケーション(exe, dll, appx)を作るためのソース コードをまとめたもの

ソリューション(*.sln) プロジェクト1 (ストアアプリ) Hoge.cs Hoge.xaml Foo.cs プロジェクト2 (クラスライブラリ) Moge.cs Bar.cs プロジェクト3 (クラスライブラリ) Foooooo.cs

最初はシンプルにプロジェクト1つ ソリューション(*.sln) プロジェクト1 (ストアアプリ) Hoge.cs Hoge.xaml Foo.cs

最初はシンプルにプロジェクト1つ コンパイル パッケージング (自動でしてくれるので 覚えなくてもOK) 実行・デバッグ ソリューション(*.sln) プロジェクト1 (ストアアプリ) Hoge.cs Hoge.xaml Foo.cs コンパイル パッケージング (自動でしてくれるので 覚えなくてもOK) 実行・デバッグ

プロジェクトの作り方 Visual Studio ファイル→新規作成→プロジェクト

プロジェクトの作り方 インストール済み → テンプレート → Visual C# → Windows ス トア → グリッドアプリケーション(XAML) アルファベットと数字で 好きな名前をつける

プロジェクト完成 基本的なアプリケーションのひな形が完成

プロジェクトの実行方法

実行方法は3通り ローカルコンピューター シミュレーター リモートコンピューター (今回は割愛します)

実行方法(ローカルコンピューター) ローカルコンピュータを選択(or F5)

実行方法(ローカルコンピューター) 画面全体に表示されます!?

実行方法(シミュレーター) シミュレータに切り替えて

実行方法(シミュレーター) シミュレータをクリック(or F5)でシミュレータが 立ち上がってアプリケーションが動きます

ローカルコンピューターとシミュレーターの比較 実際の動作を確かめることができる シミュレーター 動作は本物と変わらないとおもう 解像度を変えて動作させることができる 位置情報を疑似的に与えることができる タッチ非対応端末でもタッチ操作を再現できる タップ、スワイプ、回転、ピンチ Visual Studioを見ながら動作させることができる

おススメのひな形作成方法

おススメのひな形作成方法が何故必要か 新しいアプリケーション(XAML) グリッドアプリケーション(XAML) 何もなさ過ぎて辛い グリッドアプリケーション(XAML) ハブアプリケーション(XAML) 分割アプリケーション(XAML) 色々有りすぎて辛い あると便利なクラス 邪魔なクラス

作り方 グリッドアプリケーション(XAML)を作成 GroupDetailPage.xamlを削除 GroupedItemsPage.xamlを削除 ItemDetailPage.xamlを削除 DataModelフォルダを削除

作り方 プロジェクトの右クリックメニューから追加→新し い項目

作り方 基本ページをMainPage.xamlという名前で作成

App.xaml.csを書き換える MainPageを初期表示にする typeof(GroupedItemsPage)を typeof(MainPage)に書き換える

これを土台に自分のオリジナルアプリケーションに仕上げていく 余計なもののないひな形の完成 画像/テキスト Webからの情報 色々な コントロール これを土台に自分のオリジナルアプリケーションに仕上げていく

参考 この手順を実施したプロジェクトテンプレートあり ます この手順を実施したプロジェクトテンプレートあり ます Windows ストア アプリのプレーンなプロジェクトテンプ レート http://okazuki.hatenablog.com/entry/2014/03/23/202650

アプリの作り方

もくじ XAMLとC#の役割 画面の作り方 クラス XAMLとクラス Binding テンプレート機能

XAMLとC#の役割(復習) 見た目(XAML)と処理(C#) XAML 画面 Button GridView ListBox AppBar アニメーション etc… C# 処理 画面操作への応答 クリック ホールド etc… 計算ロジック データ取得 Twitter Facebook RSS XAMLへの更新通知 連携

画面作成 ツールボックスから画面にドラッグアンドドロップ マウスで位置を微調整

画面作成 プロパティウィンドウ(右下に出てるはず)で細かい 設定 よく使うもの Contentプロパティ Marginプロパティ プロパティウィンドウ(右下に出てるはず)で細かい 設定 よく使うもの Contentプロパティ 表示する内容を設定 Marginプロパティ 左・上・右・下の余白 HorizontalAlignmentプロパティ VerticalAlignmentプロパティ 上下左右のどちらかに寄せるか、真ん中か、いっぱいにするか Widthプロパティ Heightプロパティ 幅と高さを指定できる

よく使うコントロール Button TextBlock Image 押すやつ 文字を表示するやつ 画像を表示するやつ TextBlock

よく使うコントロール AppBar CommandBar AppBarButton 画面の上と下に出るWindows ストア アプリの右クリック メニュー的なもの CommandBar ボタンを並べるだけに特化したAppBar AppBarButton AppBarに置くための専用の丸いボタンコントロール

よく使うコントロール GridView 横スクロールでコンテンツを表示するやつ

Paddingを15に指定して中にImageを配置した例 よく使うコントロール(レイアウト系) Border 枠の中にコントロールを配置する MarginやPaddingで余白をつけて中にコンテンツを配置する Paddingを15に指定して中にImageを配置した例

よく使うコントロール(レイアウト系) StackPanel 縦並び・横並びでコントロールを配置していく 左 Orientation: Vertical 右 Orientation: Horizontal

よく使うコントロール(レイアウト系) Grid(一番よく使います) マス目を区切って、その中にコントロールを配置する

Binding

Bindingとは コントロールのプロパティと、クラスのプロパティ の値の同期をとる仕組み コントロールのプロパティと、クラスのプロパティ の値の同期をとる仕組み ページのDataContextプロパティに設定したクラスのプロパ ティとコントロールのプロパティの同期をとる仕組み

Bindingとは ページ DataContextプロパティ TextBlock Personクラス Name:たなか Textプロパティ 同期 ターゲット ソース

Bindingの方向 一方通行(デフォルトの挙動) OneWay ソース ターゲット 双方向 ソース ターゲット TwoWay

バインドの仕方 DataContextに設定するためのクラスを定義する

// データの入れ物のクラスを定義(INotifyPropertyChangedを実装するのはお約束) public class Person : INotifyPropertyChanged { private string name; // 名前 public string Name get { return name; } set { name = value; OnPropertyChanged(); } // クラスの変更をXAMLへ通知するためのおまじない } // クラスの変更をXAMLへ通知するためのおまじない public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName]string propertyName = null) var h = this.PropertyChanged; if (h != null) h(this, new PropertyChangedEventArgs(propertyName));

MainPage.xaml.csの書き換え DefaultViewModelプロパティの型をPersonに変える private Person defaultViewModel = new Person { Name = "たなか" }; /// <summary> /// これは厳密に型指定されたビュー モデルに変更できます。 /// </summary> public Person DefaultViewModel { get { return this.defaultViewModel; } }

デザイナ用のDataContextの設定 デザイナにDataContextにPersonが入っていることを 伝えるために、pageRootを選択して書式メニューか ら[デザイン時のDataContextの設定]を選択

デザイナ用のDataContextの設定 DesignInstanceに設定 DataContextに設定する クラスを選択 IsDesignTimeCreatableをチェック (おまじない的い)

バインドの仕方 バインドしたいコントロールを選択 プロパティウィンドウでバインドしたいプロパティ の右側の■から「データバインディングの作成」

バインドの仕方 バインドの種類をデータ コンテキストに設定 パスにDataContextに設定し たクラスのプロパティが出 てくるので選択

寄り道 XAMLでは、以下のようなコードが追加されています <TextBlock x:Name="pageTitle" Text="{Binding Name}" … IsHitTestVisible="false" …/>

実行して動作を確認 DataContextに設定したクラスの値がコントロールに 表示される

クラスの値を書き換えてみる CommandBarをBottomAppBarに置いてAppBarButton をPrimaryCommandsに設定する ドキュメントアウトラインのBottomAppBarとCommandBar のPrimaryCommandsの右クリックメニューから追加できる

クラスの値を書き換えてみる AppBarButtonをダブルクリックしてクリック時の処 理を生成 ダブルクリック 処理のひな形が作成される private void AppBarButton_Click(object sender, RoutedEventArgs e) { } ダブルクリック 処理のひな形が作成される

クラスの値を書き換えてみる クリック時の処理にDefaultViewModelのプロパティ を書き換える処理を追加 private void AppBarButton_Click(object sender, RoutedEventArgs e) { // DefaultViewModel(Personクラス)のNameを書き換える this.DefaultViewModel.Name = "クリックしました"; }

動作確認 ポイント:画面のデータを直接書き換えてないのに画面のデータが更新されている。 起動直後 AppBarのボタンを押す 画面の文字が書き換わる ポイント:画面のデータを直接書き換えてないのに画面のデータが更新されている。

画面作成 ContentTemplate(ItemTemplate)プロパティ 難易度が高いけどよく使うので覚えないと辛い Windows ストア アプリでよくみる下のような見た 目を作るときに必須 犬の写真 アンセム 犬の写真 アンセム 犬の写真 アンセム 犬の写真 アンセム

データをどういう形で見せるかひな形を定義 テンプレート機能とは データの見た目を定義する機能 犬の写真 {Binding Name} {Binding Picture} データをどういう形で見せるかひな形を定義 犬の写真 アンセム データを流し込む Dogクラス Name: アンセム Picture:

テンプレートの作り方 GridViewなどで右クリック 追加テンプレートの編集→生成されたアイテムの編集→空 アイテムの編集 追加テンプレートの編集→生成されたアイテムの編集→空 アイテムの編集 作成後に、もう一度編集するには「現在の編集」を選ぶ

テンプレートの名前を付ける 名前大事なので、わかりやすい名前をつけましょう

テンプレート編集画面 非常に味気ない画面が出ます ここをクリックでページのデザインに戻る

テンプレートの編集 普通のページと同じように編集

データのバインド ImageコントロールはSourceプロパティに画像を指定 TextBlockプロパティはTextプロパティに文字列を指定 デザイン時のDataContextを設定することで GUI上からバインドもできます。 {Binding Name} {Binding Picture} データをどういう形で見せるかひな形を定義

navigationHelper_LoadStateメソッドがページ表示時の処理を書くところ データの流し込み GridViewに名前をつけてItemsSourceにデータを設定 navigationHelper_LoadStateメソッドがページ表示時の処理を書くところ 100件ぶんのDogデータを生成して設定 Dogデータを格納するクラス

画像を設定して実行 実行 Assetsフォルダにdog.pngを置く GridViewにテンプレートで指定した形でデータが表示される

C# ストアアプリ開発で覚えておいてほしいこと

C#の情報は C# によるプログラミング入門 http://ufcpp.net/study/csharp/

データと処理の塊のクラス プロジェクトの右クリックメニューで新規項目追加

名前をつける わかりやすい名詞をつけましょう

クラスの構造 公開範囲 名前 継承元 プロパティ(クラスの持つデータ) プロパティ(クラスの持つデータ) メソッド(処理) // データの入れ物のクラスを定義(INotifyPropertyChangedを実装するのはお約束) public class Person : INotifyPropertyChanged { private string name; // 名前 public string Name get { return name; } set { name = value; OnPropertyChanged(); } // クラスの変更をXAMLへ通知するためのおまじない } // クラスの変更をXAMLへ通知するためのおまじない public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged([CallerMemberName]string propertyName = null) var h = this.PropertyChanged; if (h != null) h(this, new PropertyChangedEventArgs(propertyName)); プロパティ(クラスの持つデータ) プロパティ(クラスの持つデータ) メソッド(処理)

クラスの構造 コンストラクタ 最初に必ず呼ばれるメソッド // データの入れ物のクラスを定義(INotifyPropertyChangedを実装するのはお約束) public class Person : INotifyPropertyChanged { public Person() } コンストラクタ 最初に必ず呼ばれるメソッド

MainPageもクラス MainPage.xaml.csを見てみよう

MainPageもクラス MainPage.xaml.csを見てみよう

たくさんのデータを扱うコレクション プログラムでは、1つだけのデータを扱うことはほ とんどない。 以下のように定義する プログラムでは、1つだけのデータを扱うことはほ とんどない。 Twitterのタイムラインしかり、Facebookのタイムラインし かし、LINEの会話データしかり、etc… 以下のように定義する ObservableCollection<入れるクラスの名前>

たくさんのデータを扱うコレクション MainPageにpeopleという名前で ObservableCollection<Person>を作ってAddPeopleメ ソッドで追加をするコード例

コレクションとGridViewコントロール コレクションをGridViewのItemsSourceプロパティに バインドすると、コレクションの内容を元に GridViewが表示されます。 表示内容はItemTemplateで定義した見た目になります

イベントとイベントハンドラ アプリケーションは 例 「コントロールで○○されたときにする××をする」の積 み重ね ○○ = イベント 「コントロールで○○されたときにする××をする」の積 み重ね ○○ = イベント ×× = イベントハンドラ 例 ボタンを「クリック」されたら「メッセージを表示」する

コントロールのイベント コントロールを選ぶ プロパティの雷マークをクリック ダブルクリックで イベントハンドラ作成 コントロールの イベント一覧

コントロールのイベント イベントハンドラ

覚えておこう(async, await) awaitは、時間のかかる処理の完了を待つ asyncはawaitを書くメソッドにつける メッセージボックスでユーザーがボタンを押すまで待つ ネットワークの先のデータをとってくるときに、取れるま で待つ Windows RuntimeのAPIで***Asyncという名前になっている ものに対して使う asyncはawaitを書くメソッドにつける private async void Button_Click(object sender, RoutedEventArgs e) { var file = await ApplicationData .Current.LocalFolder.GetFileAsync("sample.txt"); }

最後に覚えておくといいポイント MainPage.xaml.cs navigationHelper_LoadStateメソッド ページ表示時の処理 navigationHelper_SaveStateメソッド ページから離れる時の処理 ボタンをダブルクリックして作られるメソッド ボタンをクリックしたときの処理 クラス名と同じ名前のメソッド クラスが作られるときに最初に呼ばれる処理

実例 TODOリスト

デモ 時間があれば、軽いRSS表示アプリを作ってみよう と思います。

まとめ

これくらい出来ればとりあえずOK 新規作成 実行 クラスの作成 データバインド クリックイベントの処理 コレクションの扱い

参考 Windows デベロッパー センター http://msdn.microsoft.com/ja- jp/windows/br229518.aspx