全景标题绑定

Posted

技术标签:

【中文标题】全景标题绑定【英文标题】:Panorama Title binding 【发布时间】:2012-02-13 21:19:21 【问题描述】:

我正在使用全景控件制作 WP7 应用程序,但在绑定到全景标题属性时遇到问题。是否可以从 ViewModel 对象中绑定该值?

xaml 文件中的绑定:

<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");
        
    

当我将相同的属性绑定到另一个控件时,例如。 TextBlock,绑定效果很好:

<TextBlock Text="Binding Voyage.Title" />

该文本块中显示的文本是应有的,但同时全景标题未正确绑定 - 它已折叠。

有没有人尝试过这种绑定?我不知道为什么它不起作用。

【问题讨论】:

【参考方案1】:
    <DataTemplate x:Key="TitleDataTemplate"> 
       <TextBlock Text="Binding" /> 
    </DataTemplate>
    ... 
    <controls:Panorama Title="Binding Voyage.Title" 
                       TitleTemplate="StaticResource TitleDataTemplate">

全景控件的控件模板使用内容呈现器来显示其标题属性具有的任何值,类似于按钮。设置标题模板属性时,您间接设置了内容演示者的内容模板。

这就是为什么您必须在全景控件上设置标题属性,然后才能在标题模板中使用该值进行绑定。换句话说,仅仅绑定到标题是不够的,你必须给它一个模板。

Check out this link for more info

【讨论】:

不起作用。全景标题仍处于折叠状态,PanoramaItems 标题上方没有显示任何文本。是否有可能在初始化 View 并且未设置 Voyage 属性(由于在 OnNavigatedTo 事件时检索到一些 queryString 数据而从 sql ce 加载)整个全景标题层从 UI 中删除并且以后不可绑定? 不应该..我刚刚尝试过,将字符串绑定到全景标题没有问题。也许您可以显示您的视图模型以及创建视图模型的时间? ViewModel 被创建为 View 类中的一个字段,然后在 InitializeComponents() 之后分配给 contrustor 中的 DataContext。我在这里从 View 和 ViewModel 复制了一些代码:pastebin.com/FNR9P6H2

以上是关于全景标题绑定的主要内容,如果未能解决你的问题,请参考以下文章

如何检测到 UI 元素(全景和列表框)的数据绑定何时在 windows phone 7 中完成?

使用 ThreeSixty 创建可拖动的 360 度全景图片预览效果

如何在 Windows Phone 的全景页面下包含画布?

Windows Phone 8 全景布局

使用全景创建 360° x 180° 球面投影

酷雷曼360全景:制作高质量的360全景需要注意哪些