読者です 読者をやめる 読者になる 読者になる

かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

UWPでカメラから動画撮影

UWP

UWPでカメラからの動画を録画する方法です。 CameraCaptureUIクラスを使用します。 VideoSettings.Formatで保存するタイプを指定してCapgureFileAsyncで録画とファイルへの保存を行います。 後は、FileSavePickerあたりで適当なファイルに出力してやればOKで…

特定サイトを閲覧するためのアプリを作る「Life with Windows 10 Mibileを題材に その2」

UWP

blog.okazuki.jp 真面目にアプリを作る方法を紹介しましたが、もう1つHosted Web appというものもあるので、こちらも紹介します。 これは、公式さんがやるといいかも? まず、JavaScriptのUWPのアプリを作ります。 css, js, WinJS, default.htmlはいらないの…

特定サイトを閲覧するためのアプリを作る「Life with Windows 10 Mibileを題材に」

UWP

(*´ω`*) どなたか「Life with Windows 10 Mobileビュアーアプリ」とかWindows 10 Mobile用に作ってくれないかなあ。。。ポソリ— Life with W10M 編集部 (@Life_w10m) 2016年3月16日 こんな呟きもあったので、簡単にですが、こういうアプリを作る方法を書いて…

UWPでEntity Framework 管理外のオブジェクトを変更監視に追加する

UWP

一旦DBからとってきたデータを暫く手元に置いておいて、後で更新したいということってありますよね。Entity Frameworkのデフォルトの挙動だと、DbSetから取得したデータに対する変更は監視して、いい感じにSaveChangesのときにDBに反映してくれます。 ただ、…

UWPでEntity Framework 追加・更新・削除

UWP

コードファーストでのテーブル定義もなんとなくわかったので、追加・更新・削除でもしてみたいと思います。 基本的な流れは、変更操作をした後SaveChangesメソッドを呼び出すという流れになります。SaveChangesを呼び出すとEntity Frameworkが、それまでの変…

UWPで画像ビューワー

UWP

UWPでMVVMが~とか考える前に初心者にとってもとっつきやすい(とっついたあとはガンバ!)というのを紹介したいと思います。 ということで、UWPアプリで簡単な画像ビューワーを作ってみましょう! プロジェクトの作成 プロジェクトの新規作成でVisual C# → …

UWPで音声認識

UWP

UWPで音声認識をするには、SpeechRecognizerクラスを使います。 使い方は非常に簡単でインスタンスを作って、CompileConstraintsAsyncメソッドを呼び出します。そのあと、音声認識をしたいタイミングでRecognizeAsyncかRecognizeWithUIAsyncを呼び出します。…

UWPでEntity Framework OneToOne

UWP

先日OneToManyやったので今日はOneToOneをやってみたいと思います。 こんな感じのクラスを定義します。 public class Person { public int Id { get; set; } public string Name { get; set; } public PersonDetail Detail { get; set; } } public class Per…

UWPでEntity Framework OneToMany

UWP

単体のテーブルの定義ではなく、テーブル間のリレーションの定義の仕方です。これもOnModelCreatingで指定します。例えば以下のような感じのクラスがあったとして public class Person { public int Id { get; set; } public string Name { get; set; } publ…

UWPでEntityFramework 2種類のコードファーストでのモデル定義方法

UWP

Entity Frameworkには、アノテーションでクラスに属性をつけてDBの定義を行う方法と、ContextクラスのOnModelCreatingメソッドでModelBuilderクラスを使ったFluentAPIの2種類の定義方法があります。 なんとなく、流れを見てる感じだとModelBuilderを使った定…

UWPでSQLiteを使う 準備編

UWP

UWPでのデータベースといったらSQLiteといった感じです。小規模なら、クラスのインスタンスをそのままJSON.NETでさくっとシリアライズ・デシリアライズでいいですが、データ量がちょっと多くなってくると、いつ終了してもいいように備えないといけないUWPで…

UWPでマイクから録音したい

UWP

MediaCaptureクラスを使ってやることが出来ます。 まず、MediaCaptureクラスの初期化処理が必要になります。OnNavigatedToあたりに書くといいでしょう。 private MediaCapture MediaCapture { get; set; } protected override async void OnNavigatedTo(Navi…

UWPで予定を追加したりしたい

UWP

UWPでは簡単に予定を追加したり削除したりできます。 AppointmentManagerクラスに各種メソッドがあります。 ShowAddAppointmentAsync : 予定を追加 ShowRemoveAppointmentAsync : 予定を削除 ShowAppointmentDetailAsync : 予定の詳細 ShowEditNewAppointmen…

ネットワークの接続状態を確認する

UWP

UWPでインターネットの接続状態を確認するには、NetworkInformationクラスを使います。 NetworkInformationクラスのGetInternetConnectionProfileでインターネット接続へのConnectionprofileクラスが取得できます。これに対して、GetNetworkConnectivityLeve…

UWPで印刷

UWP

基本的にWindows 8系の頃と変わってません。 OnNavigatedToで印刷系各種準備を行います。一見無意味に見えるPrintDocumentSourceの取得も意味があるので写経しましょう。 private PrintDocument printDocument; private IPrintDocumentSource printDocumentS…

UWPでユーザー名を取得する

UWP

Win8系の頃はUserInformationっていうクラスで取れてたんですがWin10では非推奨になったんですね。知りませんでした。 ということでWindows.System.Userクラスを使ってユーザー名を取ります。 手順としては、User.FindAllAsyncでユーザーを取得して、GetProp…

UWPでWin2Dを使ってオフスクリーンに描画する

UWP

画面に表示しない状態で描画したいときもあると思うのでやってみました。 手順としては、CanvasDevice.GetSharedDevice()でCanvasDeviceを取得して、それをもとにCanvasRenderTargetを作成します。CanvasRenderTargetができたらCreateDrawingSessionでCanvas…

UWPでWin2Dで描いた画像を保存しよう

UWP

こんな感じでいけました。 CanvasがCanvasControlの変数になります。 var picker = new FileSavePicker(); picker.FileTypeChoices.Add("png", new List<string> { ".png" }); var file = await picker.PickSaveFileAsync(); if (file == null) { return; } var size</string>…

PrismのViewModelでイベントの購読解除などの後始末をするタイミング

PrismのViewModelには画面遷移してきたタイミングで呼ばれるOnNavigatedToと画面から離れるときやサスペンド時に呼ばれるOnNavigatingFromメソッドがあります。ページが有効な間はイベントを購読したいというケースでは、OnNavigatedToでイベントの購読を行…

UWPで画像に文字を描いたりする

UWP

画像を表示するだけなら簡単なんですが、これに文字を描いたりとかするとなるとちょっとめんどうになります。 Win2D使うとお手軽にできるらしいので挑戦。 NuGetでWin2Dで検索してWin2D.uwpをインストールします。 XAMLに以下のようにCanvasControlを追加し…

UWPで画像を開いて表示しよう

UWP

FileOpenPickerとBitmapImageを使うことで簡単にできます。 表示だけならね! var picker = new FileOpenPicker(); picker.FileTypeFilter.Add(".jpg"); picker.FileTypeFilter.Add(".jpeg"); picker.FileTypeFilter.Add(".png"); var file = await picker.P…

UWPで色付きTextBlockを作ろう

UWP

Textプロパティに所定の書式に従った文字列突っ込んだらいい感じに色つけて表示してくれるTextBlockみたいなのが欲しくなることってないでしょうか。 そんな時は、TextBlockを1枚ラップしたカスタムコントロールかユーザーコントロールを作ると捗ります。今…

UWPで𩹉のような4バイト文字を扱う

UWP

Vistaからでしょうか。追加された4バイト文字とか2バイトに入りきらない文字たち。こいつら、stringとcharではうまく扱えません。 例を見てみましょう。 こんなXAMLを用意します。

UWPでTextBlock内にリンクを仕込む

UWP

TextBlockはTextプロパティに文字列を指定する以外に、InlinesにRun(テキスト)やHyperlink(名前の通りリンク)を埋め込んで、単純なテキスト以上の表示をすることが出来るようになっています。 例えば以下のようなXAMLを定義して

UWPでファイルのドロップをしたい

UWP

以下のような感じでいけます。 まず、ドロップのターゲットにAllowDropプロパティをTrueにします。そしてDropOverイベントでドロップされたときの見た目を調整したりします。そして、Dropイベントで、イベント引数のDataViewプロパティのContainsメソッドで…

UWPでPrismを使ったプロジェクトを単体テストする

PrismUnityApplicationなんかを継承してると、単体テストに失敗します。このIssueですね。 github.com Issueにある通りAppクラスにBindableAttributeを付ければ単体テストが実行できるようになります。 using Prism.Unity.Windows; using System.Threading.T…

UWPで単体テストプロジェクトを使おう

UWP

UWPでの単体テストの使い方を簡単に紹介したいと思います。 UWPでは、単体テストも実態はUWPアプリとして実装されていたりします。 とはいっても使い方は他のプラットフォームと同じです。テスト対象のプロジェクトを含むソリューションにUWPの単体テストプ…

ListViewItemで選択されたときはマウスオーバーで色を変えたくない

UWP

ということもありますよね?(ない?) ListViewItemのテンプレートをいじればできます。 ただ、ListViewItemのテンプレートをコピーして編集しても、ListViewItemPresenterとかいうのがあるだけの小さなテンプレートでカスタムしようがありません。 ListVie…

UWPで地図を表示する

UWP

UWPのMapControlを使うことで簡単に地図を表示することが出来ます。 ちょっとめんどくさいのが、Bing Map デベロッパーセンターというところでトークンを作らないといけないところです。 www.bingmapsportal.com アカウントってMy accountのCreate or view k…

UWPでバックグラウンドでBLEの電波を受信する(未検証)

UWP

バックグラウンドでBLEの電波受けたら何かするっていうことが出来るようになってます。 用意するバックグラウンドタスクのクラスはこんな感じです。(Windows Runtimeコンポーネントのプロジェクトで作る必要があるのはバックグラウンドタスクのお約束ですね…

UWPでBLEのアドバタイジングパケットを拾ってみよう

UWP

Windows 10のWindows Runtimeには、BLE関連のAPIがちょろちょろ追加されています。 これを使うと、Windows 8.1の頃にはできなかったBLEのアドバタイジングパケットを受信することが出来ます。 要はiBeaconの電波受信して何かするようなアプリが簡単に組める…

Notification Hubを使ってお手軽にUWPでプッシュ通知をする

トースト出したりするだけなら簡単に実装できるんですね。 Notification Hubの作成 AzureでNotification Hubを作成します。 私はokazukinsという名前空間でokazukinhというNotification Hubを作りました。 作ったら、WNSの情報を入れます。Windows Developer…

UWPで戻るボタンなどがソフトキーの場合の表示領域の取り方

UWP

ApplicationView.VisibleBounds | visibleBounds property - Windows app development ↑のプロパティで取れます。 ApplicationView.GetForCurrentView().VisibleBounds

UWPで指定した場所に存在するコントロールを列挙する

UWP

マウスカーソルの場所にあるコントロールに対して操作をしたいとかいう結構特殊な要件のときに使えるテクニックです。 VisualTreeHelperクラスのFindElementsInHostCoordinatesメソッドを使うと指定した点(Point)や、領域(Rect)にあるUIElementをとって…

UWPでパララックススクロール

UWP

1つ前の記事で、あんまりうれしくない例でWindows.UI.Compositionの紹介をしました。 blog.okazuki.jp Windows.UI.Compositionを使った強力なところは文字列で式を指定して、その結果をもとにアニメーションするということが出来る点だと個人的に思ってます…

Windows Runtimeの低レベルなグラフィックのAPI

UWP

ビジュアル レイヤー - Windows app development Windows.UI.Compositionという名前空間あたりに定義されてるAPIがあります。これは、Windows 10で導入された割と低レベルなグラフィック関連のAPIみたいです。C++でがっつりとDirectXみたいなレイヤまで低レ…

UWPからIoT Hubにデータを投げる

世の中IoTですよね。Windows 10のIoTから、クラウドにデータを上げたい! ということでやってみましょう。 まず、コンソールアプリを作って、NuGetでMicrosoft Azure Devicesで検索して出てきたものを追加して、以下のコードでデバイスキーを作ります。 usin…

UWPでUserControlからメインページの画像を非表示にしたい

UWP

という感じのフォーラムの質問があった(解決されてたけど)のでGitHubにサンプルあげてみました。 Prism使ってます。 github.com UserControlへのViewModelの伝搬させてる所がポイントっちゃぁポイントかも。 こんな感じでプロパティをUserControlに用意し…

めとべや東京 10でUWPの新しいバインディングについて話してきました

UWP

スライドを公開しておきます。 めとべや東京10 Universal Windows Platform appの新しいバインディング from 一希 大田

ジャンプリスト対応UWPを作る

UWP

APIはとても簡単ですJumpListクラスとJumpListItemクラスを使うだけです。説明よりもコードが明瞭なくらい。以下のような感じになります。 var jumpList = await JumpList.LoadCurrentAsync(); jumpList.Items.Clear(); jumpList.Items.Add(JumpListItem.Cre…

UWPでリリースビルドをすると英語環境以外で落ちる問題への対処方法

UWP

英語環境以外で、PCLで英語しかリソースの用意されていないライブラリを参照して使うとリソースを使ってるところで例外が出てアプリが落ちてしまう問題があります。まぁ修正はしようとしてるんでしょうけど、 因みにビルド時にこんな警告がいっぱい出ると、…

UWP版Prismで、ルートがFrameじゃない構成のアプリを作りたい

UWPアプリとかストアアプリって普通はWindow.Current.ContentはFrameになるのが一般的です。 ただ、SplitViewを使ったアプリとかは、SplitViewの右側にFrameを置いて、Window.Current.ContentにはMainPageを置くということをやったりします。自分で作ってる…

コルタナさんでアプリを起動する

UWP

「コルタナさん、サンプルアプリ起動」といったらアプリが起動するそんな感じです。 コルタナさんは、Voice Command Fileというので音声に対して何をするか定義します。アプリを作ってVoiceCommands.xmlとかいう名前でファイルを作って以下のようなXMLを定義…

Windows store for Businessからアプリをインストールしてみた

UWP

前回は、アプリの提出までやってみました。 blog.okazuki.jp WACKは通らないといけないみたいですが、無事真っ白なアプリケーションが審査を通過してWindows store for Businessの新しいLOBアプリの所にアプリが追加されました。(スクリーンショットとるの…

Windows store for Businessが出ましたね

UWP

日本語では「ビジネス向け Windows ストア」というみたいです。 ビジネス向け Microsoft Windows ストア 企業向けアカウント(私の場合Office 365のアカウント使ってみました)でサインインすると以下のような感じの画面が出ます。 設定のLOBパブリッシャー…

ReactivePropertyのリポジトリにひっそりTODOアプリのサンプル追加しました

ひっそりと… github.com TodoMVCというサイトにあるサンプルに似た雰囲気にしてみました。 Serviceクラスの存在意義が無い気がしてるので消すかも。

Windows 10 for IoTでHello worldまでの道のり

ラズパイ2をゲットしてきたので、ちょっとHello worldしてみたいと思います。UWPアプリの開発ができるVisual Studio 2015とWindows 10を用意しておくのが前提条件っぽいです。 Visual Studioの拡張機能と更新プログラムから、Windows 10 IoT Core Project Te…

UWPのAPIをDesktopアプリから呼び出す

UWP

いろいろ手順があります。詳しくは以下のサイトを。 MSDN Blogs で、細かい手順は置いといて上記のサイトにもある通りNuGetパッケージをインストールするだけでOKなようにしてくれてます。これは有難い。 NuGetから Install-Package UwpDesktop でパッケージ…

Windows 10のUWPでInkCanvasを使って手書き文字認識をする

思ったより簡単だったのでメモメモ。因みにWindows 8のころはInkManager使ったりしてちょっとめんどかったです。 InkCanvasを置く 描画や消したりとかはInkCanvasにお任せです。 <InkCanvas x:Name="myInkCanvas" /> 認識処理を書く 認識にはInkRecognizerContainerを使います。RecognizeAsync</inkcanvas>…

UWPのGridViewのItemsSourceに設定可能なコレクションの条件

UWP

てっきりINotifyCollectionChangedとIEnumerableあたり実装してればいいのかと思ってたら違ってました…。 https://msdn.microsoft.com/library/windows/apps/windows.ui.xaml.controls.gridview.aspx C# or Visual Basic apps should implement INotifyColle…