Xaml 如何作为用户控件访问Pivot.TitleTemplate?

Xaml 如何作为用户控件访问Pivot.TitleTemplate?,xaml,windows-phone-7,data-binding,mvvm-light,Xaml,Windows Phone 7,Data Binding,Mvvm Light,Subc,我怎么才能得到它 <controls:Pivot.TitleTemplate> <DataTemplate> <mainPivot:MyUserControl Name="MainPivotHeader"/> </DataTemplate> </controls:Pivot.TitleTemplate> 试图通

Subc,我怎么才能得到它

        <controls:Pivot.TitleTemplate>
            <DataTemplate>
                <mainPivot:MyUserControl Name="MainPivotHeader"/>
            </DataTemplate>
        </controls:Pivot.TitleTemplate>

试图通过VisualTreeFinders找到它,但它只看到透视项

UserControl显示图片,但它取决于用户。在第一次初始化期间,它为空,因为用户尚未登录。所以,我想强制更新它


我可以使用mvvm轻型消息传递,但我正在寻找自给自足的组件。这种强制很少见,所以我不想在这里使用消息传递。

您应该将Pivot的Title属性绑定到ViewModel上的属性。然后,DataTemplate将其DataContext设置为该对象。当需要刷新时,可以调用该对象上的某个方法

范例

public class ViewModel : INotifyPropertyChanged
{
    private MyTitleObject _titleObject;

    public MyTitleObject TitleObject
    {
        get { return _titleObject; }
        set
        {
            _titleObject = value;
            OnPropertyChanged("TitleObject");
        }
    }

    public void Refresh()
    {
        TitleObject = new MyTitleObject();
        // or refresh values directly on the object
    }

    ...
}
您的Pivot的xaml需要如下

<controls:Pivot Title="{Binding TitleObject}">
</controls:Pivot>


要刷新时,请调用viewmodel上的刷新。

您想做什么?@ShawnKendrot调用其refresh()方法。它已加载()事件,但在第一次登录期间初始化必要数据之前会调用它。所以我想强制更新。还有,编辑过的问题。但我已经有了标题的DataTemplate,它是带有自己标题的UserControl。也许我可以从VM locator获取TitleViewModel,并更新其数据?好吧,但是我需要从VM访问VM,这最好通过消息传递来实现。如果Pivot的DataContext是
ViewModel
,则标题不需要单独的ViewModel。所需的任何其他属性都将放入
ViewModel
类中。当然你会给它起个更相关的名字。我在其他页面上使用这个用户控件。我可以将它绑定到基本ViewModel,这样我所有的ViewModel都会有这些绑定。但是我也有很多虚拟机,其中不使用这个UserControl。