2009-08-05 52 views
2

在XAML中,我顯示我的所有主持人爲標籤項目:我的視圖如何知道沒有DataContext的Presenter?

<TabControl.ContentTemplate> 
    <DataTemplate DataType="x:Type views:SmartFormAreaPresenter"> 
     <views:SmartFormAreaView/> 
    </DataTemplate> 
</TabControl.ContentTemplate> 

我注意到,每個View 訪問到各自的演示者的特性,即使沒有我永遠明確說例​​如視圖。 DataContext = this等

DataContext在哪裏被設置呢? DataTemplate神奇地發生了嗎?

public class SmartFormAreaPresenter : PresenterBase 
{ 

    #region ViewModelProperty: Header 
    private string _header; 
    public string Header 
    { 
     get 
     { 
      return _header; 
     } 

     set 
     { 
      _header = value; 
      OnPropertyChanged("Header"); 
     } 
    } 
    #endregion 

    public SmartFormAreaPresenter(XElement areaXml) 
    { 
     Header = areaXml.Attribute("title").Value; 

    } 
} 

這裏是視圖,它顯示Header正確,它告訴我,的DataContext被設置的地方:

<UserControl x:Class="TestApp.Views.SmartFormAreaView" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <DockPanel LastChildFill="True"> 
     <TextBlock Text="{Binding Header}"/> 
    </DockPanel> 
</UserControl> 

回答

2

哪裏DataContext的設定呢? DataTemplate神奇地發生了嗎?

是的。視覺樹通過DataContext

接收它表示的對象
相關問題