2009-08-05 3 views
2

In XAML bin Anzeige ich alle meine Moderatoren als Registerkarte Artikel:Wie kennt meine Ansicht ihren Presenter ohne DataContext?

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

ich, dass jede Ansicht Zugang bemerkt habe zu seinen jeweiligen Moderatoren Eigenschaften hat, auch ohne ich jemals zum Beispiel explizit zu sagen Aussicht. DataContext = dies usw.

Wo wird der DataContext dann eingestellt? Kommt es magisch mit dem DataTemplate vor?

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; 

    } 
} 

Hier ist die Ansicht, es Header richtig angezeigt wird, die sagt mir, dass die Datacontext irgendwo festgelegt werden:

<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> 

Antwort

2

Wo ist der Datacontext dann eingestellt werden? Kommt es magisch mit dem DataTemplate vor?

Ja. Der visuelle Baum DataTemplate empfängt das Objekt, das es darstellt, über die DataContext

Verwandte Themen