2013-10-18 38 views
0

Subj,我怎麼得到它?如何以UserControl的身份訪問Pivot.TitleTemplate?

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

試圖通過VisualTreeFinders找到它,但它只能看到樞軸項目。

UserControl顯示一張圖片,但它取決於用戶。在第一次初始化時,它是空的,因爲用戶還沒有登錄。所以,我想強制更新。

我可以使用mvvm light messaging,但是我正在尋找自給自足的組件。這種強制是罕見的,所以我不想在這裏使用消息。

+0

你想做什麼? –

+0

@ShawnKendrot調用其Refresh()方法。它具有Loaded()事件,但在首次登錄期間初始化必要數據之前調用它。所以我想強制更新。另外,編輯的問題。 –

回答

0

您應該將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 
    } 

    ... 
} 

您XAML爲您透視需要以下

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

當你想刷新,則調用視圖模型刷新。

+0

但我已經有Title的DataTemplate,它是帶有自己的TitleViewModel的UserControl。也許我可以從VM定位器獲得TitleViewModel,並更新其數據? –

+0

好吧,但是之後我需要從虛擬機訪問虛擬機,這通過消息傳遞更好。 –

+0

如果你的Pivot的DataContext是'ViewModel',那麼你不需要一個單獨的視圖模型作爲標題。任何其他需要的屬性都會放在'ViewModel'類中。當然你會把它命名爲更相關的東西。 –

相關問題