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

かずきのBlog@hatena

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

当然っちゃ当然だけどXamarin.FormsでHoloLens対応アプリ作れます

HoloLensではUWPが動く。 Xamarin.FormsではUWPの開発が可能。 ということで当然ですが動きます。HoloLensでXamarin.Formsで作ったアプリが!! iOS, Android対応アプリをXamarin.Formsで作ってる人は、やってみてもいいのではと思いました。 実験 Prism.For…

UWPアプリでSurface Dialのデフォルトメニューを消す

UWP

Surface Dial対応のアプリを作ろうと思ったときにデフォルトのメニューが邪魔なときがあります。 これは簡単に消すことができます。 // デフォルトメニューを消す var config = RadialControllerConfiguration.GetForCurrentView(); config.SetDefaultMenuIt…

Surface DialをUWPアプリから使う

UWP

Surface Studioと同時に発表されて何かと話題のSurface Dialですが、こいつのAPIはWindows 10 AUでこっそりと入っていたみたいです。 ということで簡単にですが使い方を書いてみようと思います。 何もしないという選択肢 まず、Surface Dialですが何もしなく…

UWPのコンパイル時データバインディングでString.Formatを使う

UWP

使えます。 こんなコードビハインドを書いて… using System; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; namespace App5 { public sealed partial class MainPage : Page { public DateTime Now => DateTime.Now; public MainPage() { this.In…

Azure Mobile AppsでテーブルのクエリにIN句を使いたい

ODataはin句をサポートしてないらしい?ので出来ません。(完) こんな定義らしい。 filter = '$filter' EQ boolCommonExpr boolCommonExpr = ( isofExpr / boolMethodCallExpr / notExpr / commonExpr [ eqExpr / neExpr / ltExpr / leExpr / gtExpr / geEx…

モバイルアプリなどの練習用WebAPIを作成しました

モバイルアプリやUWPの練習でたたける簡単なAPIがほしいかも?ということで作ってAzureに置いてみました。一応認証のかかったシンプルなAPIです。 OAuth2で、ユーザー名admin、パスワードp@ssw0rdでトークンが取得できます。 Web APIは以下のような感じです…

今さら入門するMVVMに必要な技術要素(Xamarin.Forms & UWP)

Model View ViewModelパターン(以下MVVMパターン)が登場して約10年になります。 ここらへんで一度MVVMを実装するうえで必要になる技術要素を振り返ってみたいと思います。 その前にMVVM MVVMは以下のWikipediaあたりでも見てください。 Model View ViewMod…

Azure Mobile AppsでUWPを作ってみよう「カスタムAPI編」

過去記事 Azure Mobile AppsでUWPを作ってみよう - かずきのBlog@hatena Azure Mobile AppsでUWPを作ってみよう「手組編」 - かずきのBlog@hatena Azure Mobile AppsでUWPを作ってみよう「同期編」 - かずきのBlog@hatena Azure Mobile AppsでUWPを作ってみ…

Azure Mobile AppsでUWPを作ってみよう「プッシュ通知編」

過去記事 Azure Mobile AppsでUWPを作ってみよう - かずきのBlog@hatena Azure Mobile AppsでUWPを作ってみよう「手組編」 - かずきのBlog@hatena Azure Mobile AppsでUWPを作ってみよう「同期編」 - かずきのBlog@hatena あらすじ オフライン同期まで出来た…

Azure Mobile AppsでUWPを作ってみよう「同期編」

過去記事 Azure Mobile AppsでUWPを作ってみよう - かずきのBlog@hatena Azure Mobile AppsでUWPを作ってみよう「手組編」 - かずきのBlog@hatena あらすじ すべて手組で最初からやってみた。今度はオフライン同期というものをやってみようと思う。 オフライ…

Azure Mobile AppsでUWPを作ってみよう「手組編」

過去記事 Azure Mobile AppsでUWPを作ってみよう - かずきのBlog@hatena あらすじ 前回は、Mobile Apps Quickstartを使ってTodoListのひな型をダウンロードして、そいつに認証機能をつけてみました。 前回は全部自動で作られてたので、今回は手組してみよう…

Azure Mobile AppsでUWPを作ってみよう

食わず嫌いしてるMobile Appsですがここらへんで触ってみようと思います。バックエンドが簡単に作れるならそれにこしたことはないよね。ということで行ってみよう。 Mobile Apps Quickstartの作成 まず手始めにとっかかりをつかむには、Mobile Apps Quicksta…

アニバーサリーアップデートでのコンパイル時データバインディングの強化点 Functions in binding paths

なんて訳すんでしょうね。バインディングパス内関数とか? アニバーサリーアップデートと共に降ってきたBuild 14393のSDKですが、こいつをMin versionに設定したプロジェクトでのみコンパイル時データバインディングの新機能が有効になります。つまりアニバ…

InkToolbarを使おう

ついに来ましたアニバーサリーアップデート!!目玉はなんといっても定規ですよね!! そんな定規を簡単にアプリに組み込むことができるInkToolbarというコントロールがあります。使い方は簡単です。InkCanvasとセットで画面において、TargetInkCanvasプロパ…

Office 365の機能をUWPから叩く方法

UWP

Office 365のAzure ADでアプリケーションを作成します。ネイティブアプリケーションとして作成しておきます。 他のアプリケーションに対するアクセス許可でOffice 365 Exchange Onlineを追加して適当なアクセス許可を与えておきます。 クライアントIDを控え…

BLEのアドバタイズパケット受信イベントの引数のBluetoothLEAdvertisementReceivedEventArgsからMACアドレスを取得する方法

UWP

argsがBluetoothLEAdvertisementReceivedEventArgsとしたとき、以下のコードで取得できます。 string.Join(":", BitConverter.GetBytes(args.BluetoothAddress).Reverse().Select(x => x.ToString("X2"))).Substring(6); 以下のGitHubのコードに書いてありま…

かずきのUWP入門をKindleでも販売をはじめました

UWP

基本SlideShareに置いてあるのでそちらをどうぞ。SlideShareにログインすると資料のちょい下あたりのボタンにDownloadっていうのがあるので、そこからDLできます。 かずきのUWP入門 from 一希 大田 www.slideshare.net Kindleでも読みたいとか投げ銭的な感じ…

かずきのUWP入門というPDFをSlideShareに公開しました

UWP

最近Blog書かないで何してたかというとワードでせっせと書いてました。あんまり日本語のUWPの本がないんで書きましょう!ということで。まずはSlideShareに公開しました。ダウンロードを許可してるので、是非ダウンロードして読んでください。 かずきのUWP入…

UWPで電話にデプロイするときに0x89731810のエラーが出て配備できない

UWP

Windows 10 MobileをPCにさした状態で、デバイスマネージャーからWindows 10 Mobile Deviceを削除して(なぜか2個できてたので2個とも削除した)もう一度さしなおすとうまくデプロイできるようになりました。 以下のMSDNフォーラムの内容が参考になりました。…

UWPのApplicationData.Currentのデータをバージョン管理する

UWP

アプリの設定とかはApplicationData.Currentの下のLocalSettingsとかRoamingSettingsとかを使うのが一般的ですよね。ここの設定がアプリのバージョンアップによって非互換が発生してしまった!?というときに使える小技を紹介します。 ApplicationData.Curre…

UWPでスクリーンショットを取らせないようにする

UWP

今日のde:codeのセッションで知ったことをメモしておきます。 UWPでは、以下のプロパティをfalseに設定することでスクリーンショットを取られることを抑止できます。 画面キャプチャされて、機密情報漏えいなくなりますね! // これを入れる ApplicationView…

UWPで一定間隔で表示が切り替わるPivotを作ろう

UWP

小ネタです。ViewModelあたりにSelectedIndexというプロパティをはやして、これを一定時間でインクリメントするようにします。 UIスレッド上でやるのがポイントですね。DispatcherTimerかRx使うのがいいでしょう。(RxのInterval使う場合はObserveOnでUIスレ…

UWPでWindowのアクティブ状態を取りたい

UWP

ほしいときにぱっととる事はできなさそうです。 ということで、Window.Current.CoreWindowのActivatedイベントでとっておく必要があります。 こんな感じで // どこかでイベントを購読して Window.Current.CoreWindow.Activated += CoreWindow_Activated; // …

UWPでgeneric.xamlを開く方法

UWP

基本的な色とかが定義されてるgeneric.xamlですが、こいつをたまに見たいことがあります。 そんなときどうするか? プロジェクトを新規作成してMainPage.xamlのApplicationPageBackgroundThemeBrushでF12を押します。 そうするとgeneric.xamlをさくっと開け…

UWPのItemsStackPanelで画面外に生成される項目の要素数を制御する

UWP

UWPのListViewって仮想化されますよね? そのとき画面から見えてない領域にどれくらいの要素を生成されるのかという話しですが、これはCacheLengthプロパティで制御できます。 デフォルトは4で、このとき上に表示領域の4個ぶん、下に表示領域の4個ぶん、表示…

Windows FormsからWPFやUWPに来て戸惑うこと

Buttonに文字を設定するのにTextじゃないということ。 Contentプロパティに設定しないといけないというやつですね。 ふむふむ、コンテンツね…って覚えたらTextBlockはTextプロパティなのかよ!という理不尽な扱いを受けてしまいます。 これの見分け方なんで…

UWPでBindingのAncestorTypeを指定したい

UWP

出来ません。 なので疑似的にやるBehaviorを作ってみました。以下のような感じです。 using Microsoft.Xaml.Interactivity; using System; using System.Reflection; using Windows.UI.Xaml; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Media; name…

UWPのListBox/ListViewで、選択状態によって見た目を変える

UWP

選択されてるときには、何かを出したいとか出したくないとか、そういう要件です。 まずは、バインドされてる要素が自分は今選択されているのかどうかを知っておくと話が早くなります。それについては、以下の記事を参照。 blog.okazuki.jp あとは、このIsSel…

UWPのPivotで左右の余白を0にする

UWP

Pivotコントロールを使うと、コンテンツを表示するところの左右に余白が作られてしまいます。 こいつを消したい!というときにどうするかというと… 方法1 PivotItemのMarginを0に設定する。 PivotItemの数が固定で、自分PivotItemを置いてるだけならこれがお…

UWPでSplitViewの左側のページ名のリストと右側の実際の表示されてるページを同期させる

UWP

Prism使ってやってみましょう。UWPアプリを作ってPrism.Unityを追加してAppクラスを書き換えます。 XAML側

UWPでバックグラウンドタスクとフォアグラウンドの処理の連携方法

UWP

UWPのバックグラウンドタスクとフォアグラウンドの処理を連携させるために、IBackgroundTaskRegistrationのProgressイベントとCompletedイベントが定義されています。 例えば、TimerTaskという名前のバックグラウンドタスクのProgressイベントとCompletedイ…

UWPでSuspendingの後にOSによって終了されずに復帰したときに処理をしたい

UWP

そんなときはAppクラスのResumingイベントで処理を行います。 Application.Resuming Event (Windows)

UWPのListViewのItemTemplate内のボタンをクリックしたときにPageのDataContextにセットしたViewModelのメソッドを呼んでかつ押された行のデータが知りたいコマンド編

UWP

blog.okazuki.jp 初音さんがコマンドの場合のを教えてくれました。InvokeCommandActionを使えばこういう感じでいけます。 VMをコマンドに変更して using Prism.Commands; using Prism.Mvvm; using System; using System.Collections.Generic; using System.C…

UWPのListViewのItemTemplate内のボタンをクリックしたときにPageのDataContextにセットしたViewModelのメソッドを呼んでかつ押された行のデータが知りたい

UWP

blog.okazuki.jp 続きです。 senderのDataContextを引数に渡してくれるようなCallMethodActionを自作すればいいですね。 using Microsoft.Xaml.Interactivity; using System.Reflection; using Windows.UI.Xaml; namespace App9 { public class TransferSend…

UWPのListViewのItemTemplate内のボタンをクリックしたときにPageのDataContextにセットしたViewModelのメソッドを呼ぶ

UWP

ということがしたいとします。 ListViewItemのDataContextは、項目の要素になってるのでひと手間必要になります。 こんな感じのViewModelがあるとして。 public sealed partial class MainPage : Page { public MainPageViewModel ViewModel => this.DataCon…

バックグラウンドでソケット通信

UWP

今ソケット通信がアツイ!! というわけで、バックグラウンドでソケット通信をする方法です。 UWPのソケットのクラスであるStreamSocketクラスはバックグラウンドでソケット通信をする機能があったりします。 バックグラウンド通信の有効化 仮にRuntimeCompo…

UWPのサンプルのPullToRefresh(引っ張って更新)からRefreshableListViewを持ってくる方法

UWP

@mntoneさんがRefreshableListViewがあることをツイッターで呟いてたので見てみました。実装は置いといて、使うためには自分のプロジェクトに持ってこないといけないですね。ということでもっていこうと思います。 UWPのサンプルのリポジトリをクローンしま…

UWPで要素をソフトウェアキーボードに追従させる

UWP

雪猫さんのところでこんな感じのことをやってました。 [UWP] 要素をソフトウェアキーボードに追従させる | 雪猫ノート こういう感じでUIに閉じた操作ならBehaviorのほうがいいかな?と思ったのでどんな感じなのかというのを。 using Microsoft.Xaml.Interact…

HoloLensのエミュレータでUWPが動いた!

UWP

当然っちゃ当然ですが動きました。 HoloLensのエミュレータをインストールすると、以下のように実行の並びにHoloLens Emulatorが追加されます。 これで実行するとい以下のようにエミュレータが起動して、その中でアプリが動きます。 ドラッグで視線みたいな…

UWPでSHIFT_JISを使いたい

UWP

Encoding.GetEncodingを呼ぶ前に以下のおまじないを追加しておくことで使うことが出来るようになります。 System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);

UWPでListView/GridViewのItemのIsSelectedプロパティをバインディングする

UWP

WPFだとStyleにBinding書けばいけるんですけど、UWPだと出来ない!由々しき事態。ということでUWPだとどうやるかというとListViewとかを拡張してごにょごにょする必要があります。 stackoverflow.com こんな感じでListViewを拡張します。ListViewItemが作ら…

UWPのListView/GridViewでSelectedItemsをViewModelに渡したい

UWP

SelectedItemsってDependencyPropertyじゃないっぽいのでバインド出来ないんですよね。ということで、ベタな方法ですがView → ViewModelの1方向でいいなら以下のような方法が使えます。 まず、ViewModelとListViewに表示するアイテムのクラスを作ります。 us…

UWPでキーボードショートカット その2

UWP

その1では、CoreWindowのKeyDownを使ってました。 DispatcherのAccelaratorKeyActivatedイベントも使える奴みたいですね。 こっちでやるとTextBoxがフォーカス持っててもEnterとかのイベントが拾えたのでこっちのほうがいいかも。 こんな感じのBehaviorにな…

UWPでキーボードショートカット

UWP

こんな感じのビヘイビアを定義しておきます。 using Microsoft.Xaml.Interactivity; using Windows.System; using Windows.UI.Core; using Windows.UI.Xaml; namespace App65 { public class KeyEventTriggerBehavior : DependencyObject, IBehavior { publi…

UWPでキーボードのキーが押されているかどうか判定する

UWP

AltキーやCtrlキーやShiftキーなんかが押されてるかというときに使うと思います。 CoreWindow.GetKeyStateメソッドを使います。 var state = Window.Current.CoreWindow.GetKeyState(VirtualKey.Shift); if ((state & CoreVirtualKeyStates.Down) == CoreVir…

UWP対応のNuGetパッケージ

UWP

ReactivePropertyをUWPとWindows store appを分けて対応しようとして調べてるのでメモっておきます。 Announcing NuGet 3.1 with Support for Universal Windows Platform uapっていうのとwin81でわかれてるんですね。

UWPで共有コントラクト 受信側

UWP

送信側は簡単にできました。 blog.okazuki.jp ということで、今度は受信側です。 受信側はPackage.appxmanifestでアプリが何を受信できるのか定義する必要があります。宣言タブで共有ターゲットを追加して、簡単な共有の説明と受け付けるデータ形式を入力し…

UWPで電話に実機デプロイができなくなった

UWP

何がきっかけかわかりませんが以下のエラーが出て実機デプロイできなくなりました…。 2>エラー: DEP0001 : 予期しないエラー: Install failed. Please contact your software vendor. (Exception from HRESULT: 0x80073CF9) 何だろう。 まとめ 他の人のVisua…

UWPで共有コントラクト 送信側

UWP

共有コントラクトってUWPでも言うんですかね? Windows 8で追加されて、めでたく?Windows 10で廃止されたチャームにあった共有ですが、UWPではアプリから明示的に共有を表示してやる必要があります。それ以外はWindowsストアアプリの頃と変わっていません。…

UWPでカメラから動画撮影

UWP

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