从listview内部获取父数据上下文刷
本文关键字:数据 上下文 获取 listview 内部 | 更新日期: 2023-09-27 18:03:35
我得到了以下信息:
<ListView ItemsSource="{Binding Path=Items}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Name}" Foreground="{Binding Path=GridTextColor}"></TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
数据上下文看起来像这样:
class{
items = List with items (each row has a name property)
GridTextColor = Brush
}
我将listview与所有项绑定。每个项目包含一个名称,该名称在listview中显示得很好。
问题是,我希望所有项目内的DataTemplate有前景设置为画笔。对于上面的代码,这是不可能的,因为当我在DataTemplate内部时,我绑定到发送进来的项。问题,我如何绑定到"父数据上下文",以获得正确的前景颜色?
你可以在绑定中使用 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>