Hub 应用程序:Windows 8.1 - 引用第 1 节中的文本
Hub App: Windows 8.1 - Referencing text in Section 1
我很难理解 Text
属性 in TextBlocks
in XAML 的实际来源,来自 VS 2015 的示例 Hub App for Windows8.1
<Page
x:Name="pageRoot"
x:Class="App2.HubPage"
DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App2"
xmlns:data="using:App2.Data"
xmlns:common="using:App2.Common"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Hub SectionHeaderClick="Hub_SectionHeaderClick">
<HubSection Width="500" x:Uid="Section1Header" Header="Section 1">
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Image Source="Assets/MediumGray.png" Stretch="Fill" Width="420" Height="280"/>
<TextBlock Style="{StaticResource SubheaderTextBlockStyle}" Grid.Row="1" Margin="0,10,0,0" TextWrapping="Wrap"
x:Uid="Section1Subtitle" Text="{StaticResource AppName}"/>
<TextBlock Style="{StaticResource TitleTextBlockStyle}" Grid.Row="2" Margin="0,10,0,0"
x:Uid="DescriptionHeader" Text="Description text:"/>
<TextBlock Style="{StaticResource BodyTextBlockStyle}" Grid.Row="3"
x:Uid="Section1DescriptionText" Text="Lorem ipsum dolor sit amet, consectetuer ising elit, sed diam nonummy nibh uismod tincidunt ut laoreet suscipit lobortis ni ut wisi quipexerci quis consequat minim veniam, quis nostrud exerci tation ullam corper. Lorem ipsum dolor sit amet, consectetuer ising elit, sed diam nonummy nibh uismod tincidunt ut laoreet suscipit lobortis ni ut wisi quipexerci quis consequat minim veniam, quis nostrud exerci tation ullam corper. "/>
</Grid>
</DataTemplate>
</HubSection>
现在,我很好奇的是。如果我在任何 TextBlocks
和 运行 应用程序中编辑 Text
属性,它将被替换为之前存在的值。
所以如果我执行以下操作:
<TextBlock Style="{StaticResource TitleTextBlockStyle}" Grid.Row="2" Margin="0,10,0,0"
x:Uid="DescriptionHeader" Text="zzz TEST zzz:"/>
它将恢复到执行前的任何值。
它未绑定到 SampleDataSource.json
中的 .json 文件。我能看到的唯一连接是 Resources.resw 文件,其中包含对应于 x:Uid 的条目,例如`x:Uid="Section1Subtitle"。这些资源是如何通过 x:Uid 获取和连接的?因为我想这就是应用程序执行时发生的情况?
>>这些资源是如何通过x:Uid获取和连接的?
因为你的应用程序中有Resources.resw文件,你可以找到这个文件看看你是否设置了DescriptionHeader.Text 和 Description.Width。就像下面提供的屏幕截图一样。
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<TextBlock x:Uid="DescriptionHeader" Width="400" Height="100" Text="Cherry"></TextBlock>
虽然我在XAML中设置了Textblock.Text=Cherry,但我使用x:Uid=DescriptionHeader 属性 并且我在 Resource.resw 中设置了 DescriptionHeader.Text=Hello,所以当我 运行 应用程序时,Textblock.Text=你好。
您可以将需要本地化文本的每个控件与 .resw 文件相关联。您可以使用 XAML 元素上的 x:Uid 属性来执行此操作。对于资源名称,您可以提供 Uid 属性值,并指定 属性 是什么来获取翻译后的字符串。您可以为不同的语言指定其他 properties/values,例如 Greeting.Width,但要小心此类与布局相关的属性。您应该努力让控件根据设备的屏幕动态布局。
关于x:Uid的详细信息,可以参考Using string resources(XAML)
我很难理解 Text
属性 in TextBlocks
in XAML 的实际来源,来自 VS 2015 的示例 Hub App for Windows8.1
<Page
x:Name="pageRoot"
x:Class="App2.HubPage"
DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App2"
xmlns:data="using:App2.Data"
xmlns:common="using:App2.Common"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Hub SectionHeaderClick="Hub_SectionHeaderClick">
<HubSection Width="500" x:Uid="Section1Header" Header="Section 1">
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Image Source="Assets/MediumGray.png" Stretch="Fill" Width="420" Height="280"/>
<TextBlock Style="{StaticResource SubheaderTextBlockStyle}" Grid.Row="1" Margin="0,10,0,0" TextWrapping="Wrap"
x:Uid="Section1Subtitle" Text="{StaticResource AppName}"/>
<TextBlock Style="{StaticResource TitleTextBlockStyle}" Grid.Row="2" Margin="0,10,0,0"
x:Uid="DescriptionHeader" Text="Description text:"/>
<TextBlock Style="{StaticResource BodyTextBlockStyle}" Grid.Row="3"
x:Uid="Section1DescriptionText" Text="Lorem ipsum dolor sit amet, consectetuer ising elit, sed diam nonummy nibh uismod tincidunt ut laoreet suscipit lobortis ni ut wisi quipexerci quis consequat minim veniam, quis nostrud exerci tation ullam corper. Lorem ipsum dolor sit amet, consectetuer ising elit, sed diam nonummy nibh uismod tincidunt ut laoreet suscipit lobortis ni ut wisi quipexerci quis consequat minim veniam, quis nostrud exerci tation ullam corper. "/>
</Grid>
</DataTemplate>
</HubSection>
现在,我很好奇的是。如果我在任何 TextBlocks
和 运行 应用程序中编辑 Text
属性,它将被替换为之前存在的值。
所以如果我执行以下操作:
<TextBlock Style="{StaticResource TitleTextBlockStyle}" Grid.Row="2" Margin="0,10,0,0"
x:Uid="DescriptionHeader" Text="zzz TEST zzz:"/>
它将恢复到执行前的任何值。
它未绑定到 SampleDataSource.json
中的 .json 文件。我能看到的唯一连接是 Resources.resw 文件,其中包含对应于 x:Uid 的条目,例如`x:Uid="Section1Subtitle"。这些资源是如何通过 x:Uid 获取和连接的?因为我想这就是应用程序执行时发生的情况?
>>这些资源是如何通过x:Uid获取和连接的?
因为你的应用程序中有Resources.resw文件,你可以找到这个文件看看你是否设置了DescriptionHeader.Text 和 Description.Width。就像下面提供的屏幕截图一样。
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<TextBlock x:Uid="DescriptionHeader" Width="400" Height="100" Text="Cherry"></TextBlock>
虽然我在XAML中设置了Textblock.Text=Cherry,但我使用x:Uid=DescriptionHeader 属性 并且我在 Resource.resw 中设置了 DescriptionHeader.Text=Hello,所以当我 运行 应用程序时,Textblock.Text=你好。
您可以将需要本地化文本的每个控件与 .resw 文件相关联。您可以使用 XAML 元素上的 x:Uid 属性来执行此操作。对于资源名称,您可以提供 Uid 属性值,并指定 属性 是什么来获取翻译后的字符串。您可以为不同的语言指定其他 properties/values,例如 Greeting.Width,但要小心此类与布局相关的属性。您应该努力让控件根据设备的屏幕动态布局。
关于x:Uid的详细信息,可以参考Using string resources(XAML)