tmytのらくがき

個人の日記レベルです

universal windows appsについて考えてみた

Windows Phone 8.1とWindows Store Appsでコードとかいろいろいろいろ共有してUniversal Windows Appsが作れるようになったわけですが、ぱそこんと電話で大きく違うのってやっぱり戻るボタンの存在です。

ぱそこんは画面に戻るボタンがあるけども、電話の場合はハードキーとして戻るボタンが存在しているので画面には必要ないです。なんかAndroidiPhoneの話してるみたいになってきました。

せっかくのUniversal Windows Appsなので10割共有したいです。さすがにUIの見せ方の違いとかあるので8割ぐらいになるかもしれませんが、戻るボタンぐらいどうにかしたい。という場合にこんな方法はどうでしょう。

Shared\App.xaml

<ResourceDictionary>
  <ResourceDictionary.MergedDictionaries>
    <!-- 環境依存のリソース定義 -->
    <ResourceDictionary Source="PlatformSpecificResources.xaml"/>
  </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

Windows\PlatformSpecificResources.xaml

<ResourceDictionary>
  <Visibility x:Key="BackButtonVisibility">Visible</Visibility>
</ResourceDictionary>

WindowsPhone\PlatformSpecificResources.xaml

<ResourceDictionary>
  <Visibility x:Key="BackButtonVisibility">Collapsed</Visibility>
</ResourceDictionary>

こんな感じでリソースを用意して、最後に共有のXAMLページで

<Button x:Name="BackButton" Style="{StaticResource BackButton}"
        Visibility="{StaticResource BackButtonVisibility}"/>

という感じでボタンを出したり消したり。VSMとかよりお手軽かも?