Xaml 如何作为用户控件访问Pivot.TitleTemplate?
Subc,我怎么才能得到它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> 试图通
<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。