private void OnIsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) { if (IsVisible) { Dispatcher.BeginInvoke(new Action(() => WordListsGrid.Focus())); } }
private void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e) { var vm = (WordListsViewModel)sender; switch (e.PropertyName) { case "Meanings": vm.Meanings.CollectionChanged += Meanings_CollectionChanged; break; case "Varieties": DispatcherHelper.CheckBeginInvokeOnUI(LoadCollectionView); break; case "SelectedVarietyMeaning": DispatcherHelper.CheckBeginInvokeOnUI(() => { if (_selectMonitor.Busy) { return; } using (_selectMonitor.Enter()) { WordListsGrid.SelectedCellRanges.Clear(); if (vm.SelectedVarietyMeaning != null) { WordListsVarietyViewModel variety = vm.SelectedVarietyMeaning.Variety; int itemIndex = WordListsGrid.Items.IndexOf(variety); WordListsGrid.BringItemIntoView(variety); WordListsGrid.Dispatcher.BeginInvoke(new Action(() => { var row = (DataRow)WordListsGrid.GetContainerFromIndex(itemIndex); if (row != null) { Cell cell = row.Cells.Single(c => c.Content == vm.SelectedVarietyMeaning); WordListsGrid.SelectedCellRanges.Add(new SelectionCellRange(itemIndex, cell.ParentColumn.Index)); WordListsGrid.CurrentItem = variety; WordListsGrid.CurrentColumn = cell.ParentColumn; cell.BringIntoView(); } }), DispatcherPriority.Background); } } }); break; } }