A lot of people including me has encounter a problem where on UWP apps, if a ListView control is being data binded, it will get a default selected item like this:

It not only will display as selected item, it also fires SelectionChanged event. However, if we want to make ListView clickable, a popular way is to write the SelectionChanged event handler like this:

private void StationsList_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
    var station = StationsList.SelectedItem as Station;
    if (null != station)
    {
        SelectedStationChanged?.Invoke(this, station);
    }

    StationsList.SelectedItem = null;
}

But because of this "default selection" behaviour, it will fire our event right after the data bind and take the user away from the page. I've even wrote a workround for this:

private void StationSearchResultListControl_OnSelectedStationChanged(object sender, Station station)
{
    if (selectedAllStationListCount > 0)
    {
        if (null != station)
        {
            Frame.Navigate(typeof(StationDetail), station);
        }
    }

    selectedAllStationListCount++;
}

// Work around, listview seems got default selected value.
private int selectedAllStationListCount;

Fortunately, I discovered that the default selection behaviour of the ListView can be easily removed. You only need to set SelectionMode to None:

SelectionMode="None"

Now there won't be any item selected by default:

Then, change your SelectionChanged event handler to ItemClick, and enable IsItemClickEnabled in the ListView:

<ListView x:Name="StationsList" 
          ItemsSource="{Binding Source={StaticResource GroupedStations}}"
          Margin="-10,0,0,0" 
          SelectionMode="None"
          HorizontalContentAlignment="Stretch" 
          ItemClick="StationsList_OnItemClick"
          IsItemClickEnabled="True">

Now, we can get the clicked object by ClickedItem event:

private void StationsList_OnItemClick(object sender, ItemClickEventArgs e)
{
    var station = e.ClickedItem as Station;
    if (null != station)
    {
        SelectedStationChanged?.Invoke(this, station);
    }

    StationsList.SelectedItem = null;
}