【问题标题】: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}" />

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

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

【问题讨论】:

    标签: windows-phone-7 binding mvvm panorama-control


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多