2010-11-20 28 views
1

Aşağıdaki gibi bir veri şablonum varsa,WPF: DataTemplate için Bağıl Kaynak

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

Neden göreceli kaynak EditorTabViewModel'yi bulamıyor? Sadece veri şablonuna atıfta bulunuyor mu?

GÜNCELLEME 1

Aşağıdakiler

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

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

çalışmaktadır Daha sezgisel bir işaretleme var mı? lol, RelativeSource={RelativeSource Mode=TemplatedParent}}"'in ilk

'te EditorTabViewModel olduğunu düşündüğüm

cevap

1

de EditorTabViewModel atıfta onun DataContext zaten EditorTabViewModel olacaktır. Eğer hiç bir kaynak oluşturmaktır gerekmez Yani: benim `MarkdownEditor` olan bir UserControl ise

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

Hmm ama' DataContext = this' bunu zorunludur, aksi bir bağlanma çalışacağız MarkdownEditor'ın özelliği doğru mu? –

+0

Herhangi bir DataTemplate'in içinde DataContext her zaman şablonun uygulandığı veri nesnesidir. Örneğinizde olduğu gibi açıkça belirtilmiş bir DataType'ınız olduğunda, DataContext bu türün bir örneği olacaktır. –

İlgili konular