如何在XAML中的ListView.ItemTemplate中引用ListView DataContext?

时间:2016-11-03 11:41:18

标签: c# wpf xaml listview data-binding

我有一个ListView,其DataContext设置为我的ViewModel。 ListView.ItemsSource设置为ViewModel的Collection属性。在这个ViewModel上有一个名为MyIndex的Property。在我的项目执行期间,MyIndex的值会发生变化。

我需要一种方法来访问XAML' MyIndex'从ListView的ItemTemplate中,以便我可以根据MyIndex的值更改每个ListViewItem的方面。

我不能使用TemplatedParent,然后在绑定中使用ListViewItem的.Parent属性,因为.Parent不是ListView。

这是一些伪XAML来更好地说明我的意思。



            <ListView ItemsSource="ItemsCollection">
                <ListView.ItemTemplate>
                    <ItemContainerTemplate>
                        <Grid Background="{Binding <some xaml to reference MyIndex Property of ListView.DataContext to use in Converter>}">

                        </Grid>
                    </ItemContainerTemplate>
                </ListView.ItemTemplate>
            </ListView>
&#13;
&#13;
&#13;

我没有WPF的经验,所以我希望这是有道理的。

非常感谢您的任何帮助。

1 个答案:

答案 0 :(得分:2)

这应该可以解决问题。这样,您可以使用子项中父项的DataContext。

        <ListView ItemsSource="ItemsCollection">
        <ListView.ItemTemplate>
            <ItemContainerTemplate>
                <Grid Background="{Binding DataContext.MyIndex, RelativeSource={RelativeSource AncestorType=ListView}}">

                </Grid>
            </ItemContainerTemplate>
        </ListView.ItemTemplate>
    </ListView>