くうと徒然なるままに

モバイルアプリを作りながらバックエンドも作っています。

Xamarin.Forms で Xaml に バインディングした DateTime を string に整形する

自己紹介

初めまして、大学一年生のくぅと言います。 C# と Xamarin が好きです。 まだまだ未熟ですが、色々吸収していきます。

やっていくこと

Xamarin.Forms で Xaml に バインディングした DateTime を string に整形する

環境

Visual Studio 2015 Prism/Unity テンプレート

やったこと

まずは、Xaml に Datetime をバインディングを設定します。StringFormat='{0:mm:ss}' の部分がキーです。またカスタマイズしたいときは、mm:ss の部分を変更することで表示するもの(時間を表示するのかとか)を変更できます。

Xaml 側

<Label Text="{Binding Now, StringFormat='{0:mm:ss}'}" />

次に、ViewModel 側にそれに対応したDateTime オブジェクト型の変更通知してくれるプロパティを作ります。

ViewModel 側

private DateTime _now;

public DateTime Now
{
    get { return _now; }
    set { SetProperty(ref _now, value); }
}

public MainPageViewModel()
{
    Now = DateTime.Now;
}

実行してみた (UWP)

https://goo.gl/Of0JVk

実行してみた (Android)

https://lh3.googleusercontent.com/-eb2LMi0h4As/WJnfi75dnlI/AAAAAAAAYNM/34cxRrsvOso/s0/screenshot.jpg

実行してみた (iOS)

https://goo.gl/NktOBB

まとめ

DateTime オブジェクトをXaml にバインディングするときに、ViewModel 側で毎回 String に整形してたけど、Xaml 側で String に整形できると汎用性とかがあがりそう。

参考サイト

https://forums.xamarin.com/discussion/18170/using-stringformat-in-binding-in-xaml

おすすめ書籍

個人的に読みやすく好きな本たちでした

かずきのXamarin.Forms入門

かずきのXamarin.Forms入門