private void ParkingLotListSelectionChanged(object sender, SelectionChangedEventArgs e) { foreach (var oldItem in e.RemovedItems) { var oldItemContainer = ParkingLotList.ContainerFromItem(oldItem); var oldListViewItem = oldItemContainer as ListViewItem; if (oldListViewItem != null) { Debug.WriteLine("[MainView] parking lot list: remove selected visual state for " + (oldItem as ParkingLot).Name); var element = oldListViewItem.ContentTemplateRoot as Control; if (element != null) { VisualStateManager.GoToState(element, "Unselected", false); } } } foreach (var newItem in e.AddedItems) { var newItemContainer = ParkingLotList.ContainerFromItem(newItem); var newListViewItem = newItemContainer as ListViewItem; if (newListViewItem != null) { Debug.WriteLine("[MainView] parking lot list: add selected visual state for " + (newItem as ParkingLot).Name); var element = newListViewItem.ContentTemplateRoot as Control; if (element != null) { VisualStateManager.GoToState(element, "Selected", false); } } } }
private async void SetParkingLotListSelectionVisualState(ParkingLot selectedItem = null) { if (selectedItem == null) { selectedItem = Vm.SelectedParkingLot; } if (selectedItem != null) { ListViewItem listViewItem = null; var count = 0; while (listViewItem == null && count < 10) { var itemContainer = ParkingLotList.ContainerFromItem(selectedItem); listViewItem = itemContainer as ListViewItem; await Task.Delay(200); count++; } if (listViewItem != null) { Debug.WriteLine("[MainView] parking lot list: set selected visual state for " + selectedItem.Name); VisualStateManager.GoToState(listViewItem.ContentTemplateRoot as Control, "Selected", false); } else { Debug.WriteLine("[MainVm] parking lot list: list view item is null :/"); } ParkingLotList.ScrollIntoView(selectedItem); } else { Debug.WriteLine("[MainView] parking lot list: set selected index to -1"); ParkingLotList.SelectedIndex = -1; } }