我正在使用全景控件做 WP7 应用程序,并且在绑定(bind)到全景标题属性时遇到问题。是否可以从 ViewModel 对象中绑定(bind)该值?
xaml 文件中的绑定(bind):
<controls:Panorama x:Name="prmPanorama" Title="{Binding Voyage.Title}">
ViewModel 的 Voyage 属性是一个模型实体(内部带有 Title 属性),每次更改时都会触发 OnNotifyPropertyChanged 事件:
private Voyage _voyage;
public Voyage Voyage
{
get { return _voyage; }
set
{
if (_voyage != value)
{
_voyage = value;
OnNotifyPropertyChanged("Voyage");
}
}
}
当我将相同的属性绑定(bind)到另一个控件时,例如。 TextBlock,绑定(bind)工作得很好:
<TextBlock Text="{Binding Voyage.Title}" />
该文本 block 中显示的文本应如此,但同时全景标题未正确绑定(bind) - 它已折叠。
有没有人尝试过这种绑定(bind)?我不知道为什么它不起作用。
最佳答案
<DataTemplate x:Key="TitleDataTemplate">
<TextBlock Text="{Binding}" />
</DataTemplate>
...
<controls:Panorama Title="{Binding Voyage.Title}"
TitleTemplate="{StaticResource TitleDataTemplate}">
全景控件的控件模板使用内容演示器来显示其标题属性具有的任何值,类似于按钮。设置标题模板属性时,您间接设置了内容演示者的内容模板。
这就是为什么您必须在全景控件上设置标题属性,然后可以在标题模板中使用该值进行绑定(bind)。换句话说,仅仅绑定(bind)到标题是不够的,你必须给它一个模板。
Check out this link for more info
关于windows-phone-7 - 全景标题绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9268179/