我得到了以下内容:
<ListView ItemsSource="{Binding Path=Items}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Name}" Foreground="{Binding Path=GridTextColor}"></TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
datacontext看起来像这样:
class{
items = List with items (each row has a name property)
GridTextColor = Brush
}
我将listview绑定到所有项目。每个项目都包含一个名称,该名称在列表视图中很好地显示。
问题是我希望DataTemplate中的所有项目都将Foreground设置为画笔。 使用上面的代码是不可能的,因为当我在DataTemplate内部时,我绑定到发送的项目。 问题,如何绑定到“父datacontext”以获得正确的前景色?
答案 0 :(得分:2)
您可以在绑定中使用 RelativeSource
来获取父级的DataContext。
<TextBlock Text="{Binding Path=Name}"
Foreground="{Binding Path=DataContext.GridTextColor,
RelativeSource={RelativeSource Mode=FindAncestor,
AncestorType=ListView}}"/>
或在ListView上设置 x:Name
并使用 ElementName
进行绑定:
<ListView x:Name="myListView">
....
<TextBlock Text="{Binding Path=Name}"
Foreground="{Binding DataContext.GridTextColor,
ElementName=myListView}" />
....
</ListView>