かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

2016-01-01から1年間の記事一覧

かずきのXamarin.Forms入門のKindle版だしました(Prismもあるよ)

先日SlideShareに公開したXamarin.FormsのPDFですが Xamarin.forms入門 from 一希 大田 www.slideshare.net こちらは、SlideShareにログインすると無料でダウンロードできます。 それに加えて、Kindleで販売も始めました。こちらはKindleで見たい人向けです1…

Xamarin.Forms入門のPDF作りました(Prismもあるよ)

SlideShareでログインしてダウンロードできるようにしています。是非ダウンロードしてみてください!200ページちょっとあります。 Xamarin.forms入門 from 一希 大田 www.slideshare.net 目次 1 はじめに 1.1 ターゲットプラットフォーム 1.2 Xamarin.Forms…

Xamarin.Forms + PrismでSQLiteを使ってみよう

モバイル環境でのデータベースといったらSQLiteがデファクト!ということでXamarin.Forms + Prism.Formsの環境で試してみましょう。 NuGetパッケージの導入 使用するパッケージはSQLite-net-pclです。(似た名前のが多いので注意) www.nuget.org プラットフォ…

DIコンテナのUnityのLifetimeManagerを拡張して任意のタイミングでインスタンスの破棄をする

C#

UnityのLifetimeManagerはシングルトンで管理するContainerControlledLifetimeManagerか、デフォルトの毎回newする‘PerResolveLifetimeManager‘か、スレッド単位のPerThreadLifetimeManagerが用意されています。あとマニアックなところだと、ExternallyContr…

Xamarin.FormsでBehaviorのTriggerとActionを作る

Xamarin.Formsのドキュメント上は見つけれなかったけど、ソースコード的にはTriggerとActionがあったりします。 github.com ただ、この人たちはBindingに対応してないという、ちょっと悲しい感じに仕上がってます。なので、XamarinのBehaviorをベースにBindi…

Xamarin.FormsのBehaviorをBinding可能にする

デフォルトだとBindingできないんですよ。ということでソリューションは以下のようにします。 github.com BindingContextが伝搬しないなら伝搬させればいいじゃない?ということで手動でせっせと伝搬させてます。 これくらいデフォルトで面倒見てほしかった……

Xamarin.FormsのListViewでタップされた項目をスマートにViewModelに渡す方法

EventToCommandBehaviorを使います。コードはこちらを参考に。 github.com この時、こういうBehaviorを作っておくとListViewの選択がされなくなって捗ります。 using Xamarin.Forms; namespace PrismUnityApp2 { public class NotSelectableListViewBehavior…

Xamarin.FormsでPrism.Formsを使ってPCLに非対応なライブラリを使う方法

例えばMicrosoft.AzureのStorageのライブラリなんかがXamarin.AndroidとXamarin.iOSには対応してるけどPCLには対応してないといった感じです。 被害者がここに。 @chomado ウワアアあああああああああああああああああXamarin .Forms PCL の私 爆死\(^o^)/…

Xamarin.Formsで画面レイアウトを作るためのレイアウトコントロールの必要最低限

Xamarin.Formsで思い通りのレイアウトを組みたい。 そんな時には、レイアウト系のコントロールを押さえておくといいです。 公式ドキュメント Layouts - Xamarin Layoutコントロール Xamarin.Formsでは、複数のコントロールを配置するときには、あらかじめ定…

Xamarin.FormsのListViewで行単位で高さを変えるには

何もしないと同じになるっぽい。 違う高さにするには、以下のようにHasUnevenRowsプロパティをTrueに設定すればいい。 <ListView ... HasUnevenRows="True"> ... </ListView> おしまし。

Xamarin.Formsでタブページを使う

TabbedPageを使うといいということみたいです。 TabbedPage内にはタブとして表示したいページを置いて行って、タブのタイトルにはPageのTitleが表示されるという動きをしています。 意外と簡単だった。 Prismを使ってNavigationPage内にTabbedPageをネストし…

Xamarin.FormsでLabelに下線を引きたい

デフォルトで引けないんですね。知らなかった。 Effectを使おう ということでカスタムレンダラー案件かなと思ったらEffectでいけるっぽいです。 Android Androidに以下のようなクラスを追加します。 using Android.Widget; using Xamarin.Forms; using Xamar…

Visual Studio Moble Center触ってみた

Visual Studio Mobile Centerの申し込みをしたら、先日招待メールもらったので触ってみました。 初期画面 ログインするとこんな感じの画面になります。 アプリの作成 Add a new appというボタンがあるので押すと、アプリの作成画面になります。 OSの選択が排…

ReactiveProperty 3.4.0をXamarinで使う場合

Reactive Extensions 3.1.xがPCLにうまく入らないので、.NET Standardにプロジェクトを変換してから入れてください。 何かRx安定しないな…。

Xamarin.Formsでボタンの2度押しをReactivePropertyを使って抑止してみよう

お題の通りです。 こんな感じでReactiveCommandを普通に使うと連打すると2重で画面遷移したりします。 using Prism.Mvvm; using Prism.Navigation; using Reactive.Bindings; using System; namespace PrismUnityApp12.ViewModels { public class MainPageVi…

ReactiveProperty 3.4.0をリリースしました

www.nuget.org Reactive Extensionsを3.1.0から3.1.1に更新しています。 DependencyObject(UWP & WPF)に以下の拡張メソッドを追加しました ObserveDependencyProperty: DependencyPropertyの変更を監視するIObservable<Unit>を返します。 ToReadOnlyReactiveProper</unit>…

Xamarinで処理中を表すインジケーターを出したい

先日Cognitive Serviceを使った笑顔判定機を作りました。 こいつですが、Web上のAPIを呼び出して回線状況に応じては、そこそこ時間がかかるにも関わらず、処理中を示すUIが表示されていませんでした。 Xamarin.Formsでは、ActivityIndicatorクラスを使うこと…

Xamarin.Formsで笑顔測定をしよう(AndroidとUWP)

最近笑顔してますか?こんな感じの笑顔測定アプリを作ってみようと思います。これならボッチでも笑顔の練習できるよ! 左がニュートラルな顔、右が笑顔の場合です!スコアが変わってますね。 ということで、Cognitive ServiceのFace APIを使って笑顔判定する…

Microsoft Azure Mobile AppsのQuickstartのTodoアプリがUWP版だと例外で落ちることがある

追記 Xamarin.Forms 2.3.3系が正式リリースになったので、記事の内容をアップデート 最近、Microsoft Azure Mobile AppsでQuickstartのTodoアプリのひな型にUWPが追加されました。 小躍りするくらいうれしいことなのですが、このTodoアプリですが追加した複…

クライアントサイドから見たConnect(); 2016はどうだったかという感想

UWPに関しては華麗にスルーされてました。(悲しい) ただ、Visual Studio 2017 RCでは、試してないけどUWP開発のための機能強化も結構含まれてるのでさみしくなんかありません。 デモアプリもUWP多かったですしね! ということで本題です。 クライアントサ…

ReactiveProperty v3.3.1をリリースしました

ReactiveProperty v3.3.1をリリースしました。 www.nuget.org 新機能はありませんが、依存しているライブラリを最新版にあげました。 System.Reactive: v3.0.0 → v3.1.0 UWPのビヘイビア: 1.?.? → 2.0.0 今後ともよろしくお願いします。

.NET Coreと.NET Standardメモ

復習の時間だ。 .NET Core 日本語だとこのページがわかりやすいと思いました。 .NET Core とオープン ソース 要約するとこんな感じ。 .NET Frameworkのサブセット マルチプラットフォーム対応 Mac Linux Windows OSS!! ASP.NET Core .NET Frameworkと.NET Co…

当然っちゃ当然だけど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ですが何もしなく…

Azure Mobile Appsのローカル同期機能で作成されるDBの中身を見てみよう(Android版)

さて、ローカル同期したAndroidのデータをひっこぬいてBrowser for SQLIteで中身を見てみたいと思います。 今回は、エミュレータで実行してる前提でコマンドを書いています。 まずadbのshellでつなぎます。 adb -e shell アプリパッケージ名を調べます。 ア…

JXUG #18 「Azure Mobile Apps入門」資料公開

JXUG #18で発表してきました。 デモが想定の半分くらいしかできなかったのが心残り(XAMLインテリセンスないと書けない体になってる…)ですが、資料を公開しておきます。 Azure Mobile Apps入門—大田 一希

Visual Studio Team ServicesからXamarin Test Cloudを使ってみよう(Android編)

iOS編はあるのかって?Mac持ってないのでできないのでMac持ってる人だれかお願いします。 Xamarinプロジェクトの作成 ということで、テスト対象のプロジェクトを作りましょう。 今回は、Prismのテンプレートパックを入れたら作られるプロジェクトテンプレー…

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…