日期:2014-05-17 浏览次数:20820 次
老周的博客专栏:http://blog.csdn.net/tcjiaan
转载请注明原作者和出处。
上一篇文章中,我们吹了一下资源和本地化,同时也做了一个实例,本文我们再深入探索一下资源限定符和资源路径的映射。这两个玩意儿也许我们在实际开发中并不十分关注,不过,了解一下,还是有好处的。
这两个名词看起来就抽象,或者,我们会感觉到,从文字描述无法理解它们,那么,老规矩,我们还是用实验来看看是否能将抽象的概念形象化。
1、启动VS,新建一个Modern风格的应用程序项目(也就前面说过的板砖风格)。
2、在“解决方案资源管理器”中的项目节点上右击,从快捷菜单中依次选择“添加”-“新建项”,在模板列表中找到资源文件(.resw),文件名按默认Resources即可,确定。
3、在刚才新建的资源文件中,随便输入一些资源,如图:
4、保存并关闭资源文件,另外,在项目中新建两个空白页面,分别为PageQt.xaml和PageMaps.xaml,现在,你的解决方案结构应该类似下图所示。
(1)打开PageQt.xaml,界面布局参考下面的XAML。
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> <TextBlock Name="tb" FontSize="20" TextWrapping="Wrap" Margin="3"/> </Grid>
(2)切换到PageQt.xaml.cs,C#代码如下所示。
using System; using System.Collections.Generic; using System.IO; using System.Linq; using Windows.Foundation; using Windows.Foundation.Collections; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls.Primitives; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Navigation; // 引入以下命名空间 using Windows.ApplicationModel.Resources; using Windows.ApplicationModel.Resources.Core; namespace MyApp { /// <summary> /// 可用于自身或导航至 Frame 内部的空白页。 /// </summary> public sealed partial class PageQt : Page { public PageQt() { this.InitializeComponent(); this.Loaded += PageQt_Loaded; } void PageQt_Loaded(object sender, RoutedEventArgs e) { ResourceContext context = ResourceManager.Current.DefaultContext; string resultStr = string.Empty; foreach (var item in context.QualifierValues) { resultStr += string.Format("{0} => {1}", item.Key, item.Value); resultStr += "\n"; } this.tb.Text = resultStr; } } }
(3)保存,接着打开PageMaps.xaml,XAML如下所示。
<Page x:Class="MyApp.PageMaps" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:MyApp" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"> <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> <TextBlock Name="tb" FontSize="20" TextWrapping="Wrap" Margin="3"/> </Grid> </Page>
切换到C#代码视图,处理代码如下面清单所示:
using System; using System.Collections.Generic; using System.IO; using System.Linq; using Windows.Foundation; using Windows.Foundation.Collections; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls.Primitives; using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Navigation; // 引用以下命名空间 using Windows.ApplicationModel.Resources; using Windows.ApplicationModel.Resources.Core; namespace MyApp { public sealed partial class PageMaps : Page { public PageMaps() { this.InitializeComponent(); this.Loaded += (sender, args) => {