【发布时间】:2014-07-13 06:24:24
【问题描述】:
我最近开始使用 Windows 运行时为 WP 8.1 进行开发,但我遇到了一个……我似乎不明白的“问题”。
我目前正在开发的应用程序使用Hub 控件,我想稍微调整其标题的外观。为此,我更改了Hub 控件的HeaderTemplate 属性。但是,当我尝试对标头的文本内容进行本地化时(注意这是 WinRT,本地化过程与 WP8 中的过程略有不同,可以找到 here),我“意外”通过制作像这样的模板:
<Hub.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding}"
Foreground="Red"/>
</DataTemplate>
</Hub.HeaderTemplate>
不过,我不明白它为什么会起作用。当您像这样进行数据绑定时(仅使用表达式{Binding}),该元素不会获得与其父元素相同的 DataContext 吗?引擎盖下发生了什么?到底谁是 TextBlock 的父元素?
提前致谢。
编辑
正如 igrali 所问,这里是 XAML 的更完整视图:
<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>
...
然后,在 /Strings/en-US/Resources.resx 中,我将“MainPageHub.Header”属性设置为“foobar”(只是一个示例),而我得到的标题实际上是“foobar” (这是我想要的,但即便如此,它似乎也令人困惑!)。
【问题讨论】:
-
你要绑定什么?显示更多 XAML。但是,是的,你是对的,它应该有可能是 Hub Header 的父元素的数据上下文,并且数据上下文应该从设置它的顶部元素传播。您在 xaml 中在什么元素上设置 datacontext?
-
@igrali,我已按照您的要求编辑了问题。
标签: xaml data-binding localization windows-runtime windows-phone-8.1