【发布时间】:2015-04-04 02:28:02
【问题描述】:
我的场景:
在当前页面中,我设置了一个DataContext,它包含两个属性,第一个(页面标题)Question,第二个(项目列表)Replies。
我将Replies 绑定到ListView 的ItemsSource 属性:
<ListView x:Name="responseList" ItemsSource="{Binding replies}">
<ListView.ItemTemplate>
<DataTemplate>
<local:CustomControl />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
到目前为止,没有任何问题。在Custom Control 内部,我还需要检索Question 元素的一些属性(在ListView 之外),将这些属性绑定到CustomControl 的XAML 中。 p>
我查看了这个,但没有运气,因为在 WinRT 中无法识别 FindAncestor:
WPF Databinding: How do I access the "parent" data context?
另一个没有返回 DataContext: How to access Parent's DataContext in Window 8 store apps
<UserControl ....>
<Grid Background="#33FFFFFF">
<Grid.Resources>
<local:converter1 x:Key="key" Question="{Binding Tag.Question, ElementName=responseList}"/>
</Grid.Resources>
</Grid>
</UserControl>
【问题讨论】:
-
ElementName 解决方案仅在您与所引用的命名元素处于相同命名上下文中时才能工作,这在 DataTemplates 中工作正常。您正在从用户控件内部尝试,这是一个不同的命名上下文。我认为目前没有解决方案可以仅通过 Xaml 和 Binding 执行此操作。您可能必须在回复中添加父导航属性。
-
这正是 Bart van Nierop 刚刚提出的答案。 :)
标签: c# listview binding windows-phone-8.1 winrt-xaml