Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

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

$
0
0

使えます。

こんなコードビハインドを書いて…

using System;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;

namespace App5
{
    publicsealedpartialclass MainPage : Page
    {
        public DateTime Now => DateTime.Now;

        public MainPage()
        {
            this.InitializeComponent();
        }

        privatevoid Button_Click(object sender, RoutedEventArgs e)
        {
            this.Bindings.Update();
        }
    }
}

そして、XAMLでこんな感じで書けます。

<Page x:Class="App5.MainPage"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="using:App5"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:System="using:System"mc:Ignorable="d"><StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"><TextBlock Text="{x:Bind System:String.Format('{0:yyyy/MM/dd HH:mm:ss.fff}', Now)}" /><Button Content="Update"Click="Button_Click" /></StackPanel></Page>

ただまぁ、何故かエディタ上はエラーになるのですが…。実行すると動きます。

f:id:okazuki:20161005000837p:plain

まぁ、毎回フォーマットを指定するのもだるいので、書式出力系共通関数みたいなのを用意しておいて

using System;

namespace App5
{
    publicstaticclass Utils
    {
        publicstaticstring Format(DateTime dateTime)
        {
            return dateTime.ToString("yyyy/MM/dd HH:mm:ss.fff");
        }
    }
}

こういう感じで使うのがいいでしょう。

<Page x:Class="App5.MainPage"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="using:App5"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"xmlns:System="using:System"mc:Ignorable="d"><StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"><TextBlock Text="{x:Bind local:Utils.Format(Now)}" /><Button Content="Update"Click="Button_Click" /></StackPanel></Page>

ちなみに、これでもデザイナは表示されますがエディタ上はエラーになります…。 ツール類しっかりしてくれ。


Viewing all articles
Browse latest Browse all 1387

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>