2010-11-20 5 views
1

Wenn ich eine Datenvorlage haben wie folgtWPF: Relative Quelle Datatemplate

<DataTemplate DataType="{x:Type vm:EditorTabViewModel}"> 
    <me:MarkdownEditor 
     TextContent="{Binding 
          Path=Content, 
          RelativeSource={RelativeSource AncestorType={x:Type vm:EditorTabViewModel}}}" ... /> 
</DataTemplate> 

Ich frage mich, warum Relative Quelle nicht die EditorTabViewModel finden kann? Es bezieht sich nur auf die Datenvorlage?

UPDATE 1

Die folgenden Werke tho

<me:MarkdownEditor TextContent="{Binding Path=Content.Content, RelativeSource={RelativeSource Mode=TemplatedParent}}" /> 

Binding Path=Content.Content 
        ^Refers to EditorTabViewModel.Content 
      ^refers to EditorTabViewModel 

Gibt es eine ituitive Markup? lol, ich dachte RelativeSource={RelativeSource Mode=TemplatedParent}}" bezieht sich bereits auf EditorTabViewModel auf den ersten

Antwort

1

Da der DataTemplate für Objekte vom Typ ist EditorTabViewModel, wird seine DataContext bereits ein EditorTabViewModel sein. So dass Sie nicht eine Quelle überhaupt festlegen müssen:

TextContent="{Binding Content}" ... /> 
+0

Hmm, aber wenn mein 'MarkdownEditor' ein Usercontrol ist die' Datacontext hat = this' Ich muss das tun, sonst wird es versuchen, ein zu binden Eigentum von 'MarkdownEditor' richtig? –

+0

In jedem DataTemplate ist der DataContext immer das Datenobjekt, auf das die Vorlage angewendet wird. Wenn Sie einen explizit angegebenen DataType wie in Ihrem Beispiel haben, wird der DataContext eine Instanz dieses Typs sein. –