3

Shared プロジェクトに ResourceDictionary を問題なく作成しました。ただし、私のスタイルの一部は Windows Phone 8.1 に非常に特殊*であり、Windows 8.1 では使用されません。Windows Phone プロジェクトには App.xaml がないため、Windows Phone 専用の ResourceDictionary を指定するにはどうすればよいですか?

*さまざまなサイズとマージンに加えてPhoneAccentBrush、Windows ストア アプリでは明らかに利用できないものを広範囲に使用できます。

または、Shared ResourceDictionary が推奨される方法である場合PhoneAccentBrush、他の WP 専用リソースをどのように使用すればよいですか?

4

4 に答える 4

1

Windows Phone プロジェクトに App.xaml がないため

これは真実ではありません。アプリケーションは App.xaml なしではコンパイルされません。Shared プロジェクトで気づいたのではないでしょうか?

App.xaml

各プロジェクト App.xaml に移動/コピーしても問題はありません

于 2014-05-03T17:57:07.677 に答える
1

私自身も同じことを経験してきました。の共有プロジェクトにすべてのスタイルがありました/Assets/Themes/MySharedStyles.xaml

ユニバーサル アプリの共有コンテンツのモデルは非常に優れています。両方のプロジェクトに同じ名前 (および場合によっては型) のクラスまたはページがある場合、共有プロジェクトで使用できるようになります。

これは、すべての共有スタイルを次のようなファイルに配置しMySharedStyles.xaml、Windows アプリと Windows Phone アプリの両方でリソース ディクショナリ「/Assets/MyPlatformSpecificStyles.xaml」を作成できることを意味します。

次に、Shared App.xaml でこれを行うことができます。

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="Assets/Themes/MySharedStyles.xaml" />
    <ResourceDictionary Source="Assets/Themes/PlatformSpecificStyles.xaml" />
</ResourceDictionary.MergedDictionaries>

PlatformSpecificStyles は、設計時および実行時に、VS の Platform DropDown に基づいて適切なプロジェクトから取得されます。

FontFamilyあるプロジェクトまたは別のプロジェクトで を交換するなど、プロジェクトの特定の内容をオーバーライドしたい場合は、MySharedStylesファイル内の特定のフォントを変更しFontFamily="{TemplateBinding FontFamily}"てから、プロジェクトでそのスタイルを使用する場所に設定するだけです。

これらの戦略は機能します。今日、アプリで使用しています。

于 2014-05-30T10:32:49.373 に答える
1

Windows Phone のアクセント カラーはクロス プラットフォームで利用でき{ThemeResource SystemColorControlAccentColor}そのリンクを引用します。

これは Windows 8.1 アプリでも機能するため、ユニバーサル アプリで XAML を共有しながらアクセント カラーを利用することができます。しかし、Windows 8.1 にはアクセント カラーが存在しないため、取得される色は常にブルーベリーになります。

リソースなどのその色に基づいてブラシを作成したい場合もありますが、これらは共有アプリケーション リソースに入れることができるので、次のようになります。

<Application
    x:Class="My.Universal.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:My.Universal">
    <Application.Resources>
        <!-- This will always be Blueberry on Windows 8, but will follow the accent colour on Windows Phone 8 -->
        <SolidColorBrush x:Key="AccentBrush" Color="{ThemeResource SystemColorControlAccentColor}"/>
    </Application.Resources>
</Application>

プラットフォームごとにまったく異なるリソースが必要な場合は、辞書を両方のプロジェクトの同じ場所にあるものとマージできます。共有コードは両方のプロジェクトに同時に「魔法のように」リンクされます。

于 2014-06-13T11:43:03.333 に答える