示例#1
0
 private void OnIsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
 {
     if (IsVisible)
     {
         Dispatcher.BeginInvoke(new Action(() => WordListsGrid.Focus()));
     }
 }
示例#2
0
        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;
            }
        }