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

かずきのBlog@hatena

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

Xamarin

Xamarin版PrismでViewとViewModelの紐づけルールを変える

PrismはデフォルトでViews名前空間にあるViewとViewModels名前空間にあるViewModelを紐づける機能を持っています。この機能を有効化するには、PageのXAMLに以下の2行を追加します。 xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms" prism:View…

JXUGC 13回で発表してきました #JXUG

「Prism.Formsについて」というタイトルで、発表してきました。 Prism.Formsについて from 一希 大田 www.slideshare.net ライブコーディング失敗しなくてよかった。

Xamarin版PrismのDependencyServiceサポート機能

Prism.Formsは、基本的にUnity(DIコンテナのほう)を使ってます。 こいつを使うとインスタンスの組み立てとかをお任せ出来るので楽ちんなのです! Prism.Formsでは、そんなUnityの機能を拡張して、DependencyServiceから取得するインスタンスを自動でインジェ…

Xamarin版Prismの次のバージョンでの変更点

Xamarin版PrismのPrism.Formsですが、Xamarin Evolve 2016が終わってから更新頻度が上がってます。 次のリリースに向けて動き出してるって感じですね。 ただ、5月7日にPrism.Formsについてセッションをする身としては、次のバージョンがいつ出るのかドキドキ…

Xamarin.Forms + Prism.Formsでダイアログを出す

Prism.Formsでは、IPageDialogServiceというインターフェースが提供されていて、ダイアログの表示もばっちりViewModelで出来るようになっています。 IPageDialogServiceには、DisplayAlertメソッドと、DisplayActionSheetメソッドが定義されています。Displa…

Xamarin.Forms + Prism.FormsでMasterDetailPageを使うには

ytabuchi.hatenablog.com 上記記事をPrism.Formsを使ってやるとどうなるだろうという奴です。 まず、Prism MasterDetailPage (Forms)でRootPageという名前のページを作ります。 続けて、メニュー部を担当するMenuPageをPrism ContentPage (Forms)で作ります…

Xamarin.Forms + Prism.Formsで画面遷移DeepDive

Prism.Formsは、地味にネストした画面遷移みたいなのをサポートしています。 画面遷移のINavigationService#Navigateメソッドに渡すURLに"/HogePage/FugaPage/BarPage?id=10"みたいに/で区切ってページ指定が出来ます。 最初が/だと絶対パスになるっぽくて画…

Xamarin.Forms + Prism.FormsのMVVMの基本的なクラス

変更通知用のINotifyPropertyChangedとコマンド用のICommand実装クラスが提供されています。 INotifyPropertyChangedの実装クラス BindableBaseクラスになります。SetPropertyというメソッドがあって、変更通知プロパティを以下のように定義できるようになっ…

Xamarin.Forms + Prism.FormsでViewModelから画面遷移をする

Prism.Formsのプロジェクトを新規作成します。 Prism ContentPageを1つ追加します。NextPageという名前で作りました。こんな感じで。

Xamarin.Forms + Prism.FormsでVとVMを結びつける

Prism.Formsを使えば簡単にMVVMのViewのBindingContextにViewModelを設定できます。Hello worldでもやったっちゃやりましたが、もう一度改めてやってみようと思います。 VとVMを紐づけるには、ViewModelLocatorというクラスを使用します。ViewModelLocatorク…

Xamarin.Forms + Prism.FormsでViewの登録

Prism.Formsを使ってViewを作成するには、Views名前空間にXAMLの形式で作るのが素直でいい感じです。 Viewは、利用可能にするには、Views名前空間に作成するのに加えてAppクラスのRegisterTypesメソッドでUnityのコンテナに登録する必要があります。この登録…

XamarinでPrismを使ったHello world

PrismってXamarinにも対応してるんですよね(Previewですけど)ということで、Hello worldしながら、基本的な手順をやっていこうと思います。 プロジェクトの新規作成 まず、プロジェクトの新規作成を行います。Cross-Platform/Blank App (Xamarin.Forms Por…

認証ProxyがあるとXamarin.Forms開発が出来ないっぽい?

stackoverflow.com ビルドするとこんなエラーが出ます。 Download failed. Please download https://dl-ssl.google.com/android/repository/android_m2repository_r25.zip and put it to the C:\Users\<username>\AppData\Local\Xamarin\Android.Support.Design\23.1.1</username>…

libaot-mscorlib.dll.so not foundとかいわれてVisual Studio 2015からVisual Studio Emulator for Androidへデプロイできない

以下のを参考になおしましょう。 stackoverflow.com Go to the properties of the Android project, hit tab “Android options”, and unselect “Use Fast Deployment”. プロジェクトのプロパティを開く Android optionsを開く Use Fast Deploymentのチェック…

XamarinのAndroidアプリでReactivePropertyを使う 2016年版

随分昔に書いてますね。 blog.okazuki.jp 最近は事情も変わったので改めて書いてみようと思います。 ReactivePropertyは? Reactive ExtensionsをベースにしたMVVMの支援ライブラリです。 blog.okazuki.jp Xamarinでも使えるの? Xamarin.AndroidとXamarin.i…

Xamarin.AndroidでReactivePropertyを楽に使うためのReactiveProperty.XamarinAndroidのサンプルをコードレシピに公開しました。

A simple master detail application with ReactiveProperty. in C# for Visual Studio 2013 A simple master detail application with ReactiveProperty. in C# for Visual Studio 2013 これくらいでいけるなら、個人的には許容範囲かもってお思えるものが…

Xamarin.AndroidでReactivePropertyを使いやすくするライブラリを試作してみた

とりあえず。 以下のようなVMがあったとして using Codeplex.Reactive; using System; using System.Reactive.Linq; namespace App15 { public class MainPageViewModel { public ReactiveProperty<string> Input { get; private set; } public ReactiveProperty<string> Out</string></string>…

Xamarin.FormsでMVVM Light ToolkitとReactivePropertyを使ってみた

Prism.Mvvmのほうが好みなんですが、こいつがSilverlight for Windows Phone 8をサポートしないので、SL for WP8もサポートしてる(すごいよね…)MVVM Light Toolkitを試してみました。 ViewModelLocatorの作成 SimpleIoCというDIコンテナがついてるけど、個…

Xamarin.Androidでテーマを変更する

assemblyにApplicationAttributeをつけて、Themeプロパティを設定するらしい。 Lolipopのマテリアルの白にしたいなら、こんな感じ。 [assembly: Application(Icon = "@drawable/bird", Theme = "@android:style/Theme.Material.Light")] ここらへんのテーマ…

Xamarin.FormsのNavigationPageのアイコンの変え方(Android)

以前に、こんな記事を書きました。 Xamarin.FormsのNavigationPageのアイコンの変え方が知りたい - かずきのBlog@hatena Xamarin.FormsのNavigationPageのアイコンの変え方が知りたい - かずきのBlog@hatena この記事では、アイコンの表示位置がおかしくなる…

Xamarin.FormsのNavigationPageのアイコンの変え方が知りたい

続き書きました Xamarin.FormsのNavigationPageのアイコンの変え方(Android) - かずきのBlog@hatena Xamarin.FormsのNavigationPageのアイコンの変え方(Android) - かずきのBlog@hatena 本文 デフォルトのXamarinのアイコンじゃなくて独自アイコンにしよ…

Xamarin.Formsにインテリセンスがきた!!

ソファーでうたたねしてて目覚めたらこんな記事が! 【速報】Visual Studio でも Xamarin.Forms の XAML で IntelliSence が使えるように!(3rd Party の拡張機能ですが) - Xamarin 日本語情報 【速報】Visual Studio でも Xamarin.Forms の XAML で Intelli…

Xamarin.FormsでPrism.MvvmとReactivePropertyを使ったサンプル

ということで、コードレシピにアップしました。疲れた疲れた。 Xamarin.FormsでPrism.MvvmとReactivePropertyを使ったサンプル in C# for Visual Studio 2013 Xamarin.FormsでPrism.MvvmとReactivePropertyを使ったサンプル in C# for Visual Studio 2013

Xamarin.FormsでPrism.Mvvmを使う

Prism.Mvvmは非常にシンプルなMVVMをサポートするライブラリです。Xamarin.Formsでも使わない手はない!ということで使ってみました。 環境設定 Windows Phoneのプロジェクトを消します。日本で出てないし、Prism.Mvvmサポートしてないプラットフォームなの…

コレクション初期化子に渡すオブジェクトをデリゲートを使って組み立てたい

よくわからないタイトルになってしまいましたが、Xamarin.Forms使おうとして出てきた問題です。 Xamarin.Formsは、現時点ではXAMLのデザイナとか提供されてないので、長い目で見るとXAMLで書いておいたほうがいいのは確かなんですが、勉強するためにインテリ…

Xamarin AndroidでIListやObservableCollectionをListViewに表示する

先日以下のような記事を書きました。 Xamarin.Android + ReactivePropertyでListViewを使う - かずきのBlog@hatena Xamarin.Android + ReactivePropertyでListViewを使う - かずきのBlog@hatena 別にReactivePropertyのコレクションじゃなくて普通のコレクシ…

Xamarin.Android + ReactivePropertyでListViewを使う

特にReactivePropertyでサポートはしてないので自前でやるっきゃないです!ということでこういうクラスを書いてみました。 ReadOnlyReactiveCollection型をIListAdapterに変換するコードです。 public static class ReadOnlyCollectionExtensions { /// <summary> ///</summary>…

Xamarin.AndroidでDialogFragmentを使う

時代はダイアログもフラグメント…ということでやってみました。簡単なアラートダイアログを出して、押したボタンに応じてトーストを表示してます。 using Android.App; using Android.Content; using Android.OS; using Android.Widget; namespace DialogFra…

Xamarin.AndroidでFragment使ってみた

時代はFragmentらしいので、使ってみました。MainActivityはFragmentをホストするためのFrameLayoutを置いてるだけのシンプル構造。 Main.axml

Xamarin.Androidで通知を出す

Notificationを出す最小限のコードは以下の通り。BlankAppを作った時のOnCreateあたりの処理を以下のコードに変えたら動きます。 protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); // Set our view from the "main" layout resour…

Xamarin.AndroidでContentProviderを実装する

SQLiteの使い方がわかったら次はContentProviderですよね。 ということで、SQLの部分はさくっと実装。 using Android.Content; using Android.Database.Sqlite; namespace ContentProviderSample { public class PeopleDatabase : SQLiteOpenHelper { privat…

Xamarin.AndroidでSQLiteを使う

XamarinというかAndroidでSQLiteを使う時は、SQLiteOpenHelperというクラスを継承して使います。 こいつのコンストラクタは、コンテキスト、データベース名、カーソルファクトリ、データベースのバージョンという4つの引数を渡すのが一般的です。カーソルフ…

Xamarin.Androidで、とりあえずアプリのデータが消えないようにする方法

最近はそうでもないのかもしれませんが、Androidに限らずモバイル向けアプリってメモリ節約のために裏側にまわるといつ落ちてもおかしくない状況になるものですよね。 そんな状態に対応する方法として、Androidは、ActivityのOnSaveInstanceStateメソッドを…

Xamarin.Androidでデバッグログを出す方法

Log.Debugを使います。例えば新規作成したひな形のボタンクリックのイベントハンドラを以下のように書き換えて button.Click += (_, __) => { button.Text = string.Format(this.GetString(Resource.String.ClickMessage), count++); Log.Debug("App6", "{0}…

Xamarin.AndroidでHello worldというかひな形プログラムを見てみる

長らくReactivePropertyの検証用にしか使ってなかったXamarinですが、Genymotionを入れて現実的な速さでAndroidのエミュレータが動くようになったので、ちょいと試してみようと思います。 Xamarinを入れるとVisual StudioでAndroidのプロジェクトが作れます…

XamarinのAndroidアプリでReactivePropertyを使う

最近書いてるReactivePropertyですが、Xamarinにも対応しています。なので、簡単にカウントアップするサンプル(ひな形で生成されるやつ)を作ってみようと思います。 Xamarinのバージョン 使用しているXamarinのバージョンは5.0(build784)です。XamarinのVi…

BaseAdapterの継承したクラスの作り方がよくわからない

public class MyAdapter : BaseAdapter<string> { private List<string> l = new List<string>(); private Context context; public MyAdapter(Context context) { this.context = context; } public override string this[int position] { get { return this.l[position]; } } publi</string></string></string>…

Xamarinに感じてること

ここ1年くらいDLして使えるようになってたのですが、なかなか使ってませんでした。理由としては以下のような感じです。 iOSアプリの開発にはMacが必要…。 Androidアプリの開発は、エミュレータが遅すぎて使いものにならないので実機がほぼ必須 早いエミュレ…