2013-07-09 99 views
1

如何從嵌套數據模板(項目數據模板中的控件的數據模板)中綁定到ItemsControl中的Item的DataContext?我不能使用TemplatedParent,因爲它是雙模板的。 而我不知道如何使用FindAncestor,AncestorType,因爲我不知道每個項目的類型是什麼。綁定到ItemsControl中的Item的DataContext

有什麼想法?

回答

3

如果我正確地讀這篇文章,您有:

- ItemsControl 
    |- ItemTemplate     Item.DataContext<--| 
    |- Button           | 
     |- ContentTemplate <-- Bind something in this to| 

如果是這樣的話,你要尋找的是ContentPresenter。這是ItemsControl生成的容器類型。問題是你將有多個ContentPresenter祖先。您可以使用RelativeSourceAncestorLevel屬性來處理此問題。

所以,在我的例子中,ButtonDataTemplate可以通過訪問該行的DataContext

<DataTemplate> 
    <TextBlock Text="{Binding DataContext.Name, RelativeSource={RelativeSource AncestorType={x:Type ContentPresenter}, AncestorLevel=2}}" /> 
</DataTemplate> 
+0

ContentPresenter!這就是我一直在尋找的。謝謝! –

+0

終於在搜索3小時後找到它!這應該有更多的選票可見頂部。謝謝。 – Val