Xaml 什么';集线器控件中标头元素的DataContext是什么?

Xaml 什么';集线器控件中标头元素的DataContext是什么?,xaml,data-binding,localization,windows-runtime,windows-phone-8.1,Xaml,Data Binding,Localization,Windows Runtime,Windows Phone 8.1,最近我开始使用Windows Runtime为WP 8.1开发,我面临一个。。。我似乎不明白的“问题” 我目前正在开发的应用程序使用了一个Hub控件,我想稍微调整一下它的标题外观。为此,我更改了Hub控件的HeaderTemplate属性。但是,当我试图本地化标题的文本内容时(请注意,这是WinRT,本地化过程与WP8中的过程略有不同,可以找到),我“意外地”通过如下方式制作模板修复了问题: <Hub.HeaderTemplate> <DataTemplate>

最近我开始使用Windows Runtime为WP 8.1开发,我面临一个。。。我似乎不明白的“问题”

我目前正在开发的应用程序使用了一个
Hub
控件,我想稍微调整一下它的标题外观。为此,我更改了
Hub
控件的
HeaderTemplate
属性。但是,当我试图本地化标题的文本内容时(请注意,这是WinRT,本地化过程与WP8中的过程略有不同,可以找到),我“意外地”通过如下方式制作模板修复了问题:

<Hub.HeaderTemplate>
    <DataTemplate>
        <TextBlock Text="{Binding}"
                   Foreground="Red"/>
    </DataTemplate>
</Hub.HeaderTemplate>
然后,在/Strings/en US/Resources.resx中,我将“MainPageHub.Header”属性设置为“foobar”(只是一个示例),而我得到的标题实际上是“foobar”(这正是我想要的,但即使如此,它似乎也很混乱!)。

注意这里的x:Uid值。这现在映射回您的 RESW文件。具有该起始键的任何内容都将具有属性 融入其中。因此,我们可以在RESW中使用 键名MyTextBlock.Text,值为“Hello World”且 运行时将为您进行替换。这适用于财产 除了文字(即宽度)以及附加属性

我能添加的只是-注意x:Uid。这是MainPageHub。在本地化的资源文件中,有一个MainPageHub.Header。这意味着资源字符串的值将被设置为x:Uid设置为MainPageHub的控件的标题


所以,现在已经清楚了头是如何设置的——仍然有绑定部分。好的,考虑到头部有不同的模板,它需要执行{Binding}部分来实际获取通过资源设置的头部值。

您绑定到什么?显示更多XAML。但是是的,您是对的,它应该具有父元素的datacontext,这可能是集线器头,datacontext应该从设置它的顶层元素传播。你在xaml中设置了什么元素的datacontext?@igrali,我已经按照你的要求编辑了这个问题。经过思考,我想我终于明白了。非常感谢:)
<Page ...
      DataContext="{Binding Data, RelativeSource={RelativeSource Self}}">
    <Grid Background="#FFF6DB">
    <Hub Name="MainPageHub"
         x:Uid="MainPageHub"
         Margin="0,27,0,0">
        <Hub.HeaderTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding}"
                           Foreground="White"/>
            </DataTemplate>
        </Hub.HeaderTemplate>
...