Hub App:Windows 8.1 - 引用第1节中的文本

时间:2016-11-14 23:45:50

标签: c# xaml windows-store-apps

我很难从VS 2015 for Windows 8.1中的示例Hub App中了解XAML中TextTextBlocks属性的实际来源

<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>

现在,我很好奇的是。如果我在任何Text中编辑TextBlocks属性并运行应用程序,它将替换为之前的值。 所以,如果我做以下事情:

<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 =&#34; Section1Subtitle&#34 ;.如何通过x:Uid获取和连接这些资源?因为我认为应用程序执行时会发生什么?

1 个答案:

答案 0 :(得分:1)

&gt;&gt;如何通过x:Uid获取和连接这些资源?

因为您的应用程序中有 Resources.resw文件,所以您可以找到此文件以查看是否设置了 DescriptionHeader.Text Description.Width < / strong>即可。就像下面提供的屏幕截图一样。

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

    <TextBlock x:Uid="DescriptionHeader" Width="400" Height="100" Text="Cherry"></TextBlock>

enter image description here

虽然我在XAML中设置了 Textblock.Text = Cherry ,但我使用 x:Uid = DescriptionHeader 属性并设置了 DescriptionHeader.Text = Hello 在Resource.resw中,所以当我运行应用程序时,Textblock.Text = Hello。

您可以将需要本地化文本的每个控件与.resw文件相关联。您可以使用XAML元素上的x:Uid属性执行此操作。对于资源名称,您可以提供Uid属性值,并指定要获取已翻译字符串的属性。您可以为不同的语言指定其他属性/值,例如Greeting.Width,但要小心这些与布局相关的属性。您应该努力允许控件根据设备的屏幕动态布局。

关于x:Uid的详细信息,您可以参考Using string resources(XAML)