Search code examples
wpflistviewcoordinatesselecteditem

How can I obtain the coordinates of a selected item container in a WPF ListView


I want to display some WPF elements near to the selected item of a ListView. How can I obtain the coordinates (screen or relative) of the selected ListViewItem?

<ListView 
    x:Name="TechSchoolListView"
    ClipToBounds="False"
    Width="Auto" Height="Auto" 
    HorizontalContentAlignment="Stretch" 
    VerticalContentAlignment="Top" 
    ItemTemplate="{DynamicResource TechSchoolDataTemplate}" 
    ItemsSource="{Binding Path=TechSchoolResearchList, Mode=Default}" 
    SelectedIndex="1"
    SelectedValue="{Binding Path=SelectedTechSchool, Mode=Default}" 
    SelectionChanged="TechSchoolList_SelectionChanged" 
    ItemContainerStyle="{DynamicResource TechSchoolItemContainerStyle}" 
    ScrollViewer.CanContentScroll="False" 
    ScrollViewer.VerticalScrollBarVisibility="Disabled" >
    <ListView.Background>
        <SolidColorBrush Color="{DynamicResource PanelBackgroundColor}"/>
    </ListView.Background>
</ListView>

Solution

  • You should use ContainerFromElement to get the item's container, which is a visual and from there you can get the coordinates. You can't express this in XAML, however. You need to do it in code, on one of the ListView events, raised when the selected item is changed. Btw, keep in mind that the item can be its own container.

    You can't do this in XAML, as there's no attached property on the item that shows the item is selected. (though I haven't played with WPF in a while, so that might have changed)