2010-12-07 17 views
2
JetPack私は JetPackテーマを使用してApp.xamlから設定します:

実行時にテーマを変更する

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="Assets/Styles/Brushes.xaml"/> 
      <ResourceDictionary Source="Assets/Styles/Fonts.xaml"/> 
      <ResourceDictionary Source="Assets/Styles/CoreStyles.xaml"/> 
      <ResourceDictionary Source="Assets/Styles/Styles.xaml"/> 
      <ResourceDictionary Source="Assets/Styles/SdkStyles.xaml"/> 
      <ResourceDictionary Source="Assets/Styles/ToolkitStyles.xaml"/> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 
</Application.Resources> 

実行時にコードビハインドとテーマを変更するにはどうしたらいいですか?

答えて

1

Silverlight ToolkitベースThemeコントロールは、実行時にテーマを変更するためのサポートを提供します。残念ながら、JetPackテーマのようなアプリケーションテーマには、Toolkitのテーマはありません(Microsoftに質問してください)。だからあなたは自分でそれを変換する必要があります。ここでは、

public class JetPackTheme : Theme 
{ 
    private static Uri ThemeResourceUri = new Uri("/MyComponent;component/JetPackTheme.xaml", UriKind.Relative); 

    public JetPackTheme() : base(ThemeResourceUri) { } 

    public static bool GetIsApplicationTheme(Application app) 
    { 
     return GetApplicationThemeUri(app) == ThemeResourceUri; 
    } 

    public static void SetIsApplicationTheme(Application app, bool value) 
    { 
     SetApplicationThemeUri(app, ThemeResourceUri); 
    } 
} 

今すぐ、と仮定し、あなたのリソースがJetPackThemeというフォルダにあるJetPackTheme.xaml次のとおりです:Toolkitのテーマ源を見て方法を見つけ出すために私たちを助け

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="/MyComponent;component/JetPackTheme/Brushes.xaml"/> 
     <ResourceDictionary Source="/MyComponent;component/JetPackTheme/Fonts.xaml"/> 
     <ResourceDictionary Source="/MyComponent;component/JetPackTheme/CoreStyles.xaml"/> 
     <ResourceDictionary Source="/MyComponent;component/JetPackTheme/Styles.xaml"/> 
     <ResourceDictionary Source="/MyComponent;component/JetPackTheme/SdkStyles.xaml"/> 
     <ResourceDictionary Source="/MyComponent;component/JetPackTheme/ToolkitStyles.xaml"/>  
    </ResourceDictionary.MergedDictionaries> 
</ResourceDictionary> 

これで、アプリケーションでJetPackThemeコントロールを使用できるようになります。

<myCmp:JetPackTheme x:Name="myTheme"> 
    <SomeNeatStuff> 
     ... 
    </SomeNeatStuff> 
</myCmp:JetPackTheme> 

実行時にテーマを変更するには、単に行うことができます

myTheme.ThemeUri = new Uri("Path/To/The/Theme.xaml", UriKind.RelativeOrAbsoluteOrWhatever); 
関連する問題