【问题标题】:How to Bind RESW String to UI如何将 RESW 字符串绑定到 UI
【发布时间】:2014-10-18 17:14:27
【问题描述】:

我刚刚创建了我的第一个 Windows Phone 运行时应用程序,并且我正在摆脱编写 Windows Phone Silverlight 应用程序的经验。我几乎不知道有很多差异需要考虑,其中之一是将资源字符串绑定到 UI 中的属性。我从Hub 控件开始,因为它看起来像是一个很棒的模板。我的第一步是创建一个新的HubSection 并创建Header 文本。通常,为了良好的实践和节省时间,我总是在 UI 中创建项目以用于翻译目的时添加我的资源字符串。在此,我无法让 HubSection 标头显示我的资源字符串。

注意,我是 Windows 运行时的新手,目前正在 CHannel9 和 Microsoft Virtual Academy 上做教程。

另外请注意,在这个模板中我没有改变任何东西,所以我在 XAML 中的页面DataContext 仍然是

DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Self}}"

目前我拥有的如下

<HubSection x:Uid="HubPage.BuiltInAppsHub">
            <HubSection.HeaderTemplate>
                <DataTemplate>
                    <TextBlock x:Uid="HubPage.BuiltInAppsHub.Header"/>
                </DataTemplate>
            </HubSection.HeaderTemplate>

        </HubSection>

在我的 Resources.resw 文件中,我的键值是 HubPage.BuiltInAppsHub.Header.Text,我的值只是 built in apps。所以这里有几个问题。一、如何链接TextBlock 来显示这个字符串值?此外,有没有比创建HeaderTemplate 更直接的方法,我可以不只是在HubSectionHeader 属性中执行此操作,就像我在Header 的@987654335 属性中执行此操作一样@ 在 Silverlight 版本中?任何信息、背景、建议等将不胜感激。

编辑以下显示运行模拟器时的resw资源字符串,但不是在很难看到文本位置的设计器中

<HubSection x:Uid="HubPageBuiltInAppsHub">
            <!--<HubSection.HeaderTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding}"/>
                </DataTemplate>
            </HubSection.HeaderTemplate>-->

        </HubSection>

【问题讨论】:

    标签: xaml windows-runtime windows-phone-8.1


    【解决方案1】:

    您始终使用要在其中显示文本的属性 XAML 元素。也无需在数据模板中引用它。你想在这里做的是(也删除点):

    <HubSection x:Uid="HubPageBuiltInAppsHub">
        <HubSection.HeaderTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding}"/>
            </DataTemplate>
        </HubSection.HeaderTemplate>
    </HubSection>
    

    这个密钥进入你的 resw 文件:

    HubPageBuiltInAppsHub.Header
    

    还有一篇关于该主题的 MSDN 文章:http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh965323.aspx

    【讨论】:

    • 由于某种原因,我仍然看到 _.di6.TestApp.Data.SampleData... 代替标题?
    • 删除点。尝试 HubPageBuiltInAppsHub 作为 Uid 和 HubPageBuiltInAppsHub.Header 作为键。
    • 好吧,我遇到了social.msdn.microsoft.com/Forums/sqlserver/en-US/…,并决定注释掉我的整个HeaderTemplate。当我运行模拟器时,我可以正确看到标题文本,但设计器中没有显示任何内容。有什么想法吗?
    • 是的,你的 HeaderTemplate 实际上没用。我认为您需要它用于任何特殊目的(自定义样式等)。设计时不显示翻译。但是,您可以简单地将 header 属性设置为您希望在设计时显示的某个值:Header="My Design Time Header" 这将在运行时从您的 RESW 文件中被覆盖。
    • 可能会做一些自定义样式,只是好奇为什么不能直接看到翻译?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 2021-09-05
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多