Windows Universal Apps 如何在运行时访问和更改 Resource Dictionary 中 Resources 的值?
How to access and change the values of Resources in Resource Dictionary at runtime in Windows Universal Apps?
我正在将我的 Windows Phone 8 应用程序迁移到 Windows 通用应用程序。我在 Windows 8.1 项目中创建了一个包含一些值的资源字典,并将其路径包含在 App.xaml 文件中。下面是资源词典和App.xaml.
资源词典
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MyApp.Styles">
<SolidColorBrush Color="#388941"
x:Key="AppBackGroundColor" />
<SolidColorBrush Color="White"
x:Key="PageTitleColor" />
<SolidColorBrush Color="White"
x:Key="AppFontColor" />
<SolidColorBrush Color="White"
x:Key="StatusColor" />
</ResourceDictionary>
App.xaml
<Application
x:Class="MyCouncilServices.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MyApp">
<Application.Resources>
<!-- Application-specific resources -->
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!--
Styles that define common aspects of the platform look and feel
Required by Visual Studio project and item templates
-->
<ResourceDictionary Source="/Styles/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
现在,我想知道如何在整个应用程序中访问这些值并在 C# 代码中更改它的值。
我尝试了与在 Windows Phone 8 项目中相同的方法,如下所示,但它导致了 System.Argument 异常。
if(App.Current.Resources.ContainsKey("AppBackGroundColor"))
{ App.Current.Resources.Remove("AppBackGroundColor");
} App.Current.Resources.Add("AppBackGroundColor",GetColorFromHex(#FFFFFF));//Getting error at this line.System.ArgumentException ("An item with the same key has already been added.")
我想在我的整个应用程序中使用资源。
谁能建议我们如何访问字典中的资源并更改其值。
您不必删除和添加,只需覆盖即可。就像这样:
App.Current.Resources["AppBackGroundColor"] = new SolidColorBrush(Colors.Red); // Red for example
将此行添加到 App.xaml 文件中的 OnLaunched()
方法的开头。我试过了,它对我有用。
我正在将我的 Windows Phone 8 应用程序迁移到 Windows 通用应用程序。我在 Windows 8.1 项目中创建了一个包含一些值的资源字典,并将其路径包含在 App.xaml 文件中。下面是资源词典和App.xaml.
资源词典
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MyApp.Styles">
<SolidColorBrush Color="#388941"
x:Key="AppBackGroundColor" />
<SolidColorBrush Color="White"
x:Key="PageTitleColor" />
<SolidColorBrush Color="White"
x:Key="AppFontColor" />
<SolidColorBrush Color="White"
x:Key="StatusColor" />
</ResourceDictionary>
App.xaml
<Application
x:Class="MyCouncilServices.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MyApp">
<Application.Resources>
<!-- Application-specific resources -->
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!--
Styles that define common aspects of the platform look and feel
Required by Visual Studio project and item templates
-->
<ResourceDictionary Source="/Styles/Styles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
现在,我想知道如何在整个应用程序中访问这些值并在 C# 代码中更改它的值。
我尝试了与在 Windows Phone 8 项目中相同的方法,如下所示,但它导致了 System.Argument 异常。
if(App.Current.Resources.ContainsKey("AppBackGroundColor"))
{ App.Current.Resources.Remove("AppBackGroundColor");
} App.Current.Resources.Add("AppBackGroundColor",GetColorFromHex(#FFFFFF));//Getting error at this line.System.ArgumentException ("An item with the same key has already been added.")
我想在我的整个应用程序中使用资源。
谁能建议我们如何访问字典中的资源并更改其值。
您不必删除和添加,只需覆盖即可。就像这样:
App.Current.Resources["AppBackGroundColor"] = new SolidColorBrush(Colors.Red); // Red for example
将此行添加到 App.xaml 文件中的 OnLaunched()
方法的开头。我试过了,它对我有用。