【问题标题】:Hub App: Windows 8.1 - Referencing text in Section 1Hub 应用程序:Windows 8.1 - 参考第 1 节中的文本
【发布时间】:2017-03-28 17:45:53
【问题描述】:

我很难从 VS 2015 for Windows 8.1 的示例 Hub 应用程序中了解下面 XAML 中 TextBlocksText 属性的实际来源

<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 获取和连接的?因为我想这就是应用程序执行时发生的情况?

【问题讨论】:

    标签: c# xaml windows-store-apps


    【解决方案1】:

    >>这些资源是如何通过 x:Uid 获取和连接的?

    因为你的应用中有Resources.resw文件,你可以找到这个文件看看你是否设置了DescriptionHeader.TextDescription.Width。就像下面提供的屏幕截图一样。

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    
        <TextBlock x:Uid="DescriptionHeader" Width="400" Height="100" Text="Cherry"></TextBlock>
    

    虽然我在 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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多