public override void GotoLineExecuted(object sender) { FilterTabViewModel filterTab = (FilterTabViewModel)CurrentTab(); LogTabViewModel logTab = (LogTabViewModel)_LogViewModel.CurrentTab(); if (filterTab != null && logTab != null) { int filterIndex = -1; int logIndex = ((Selector)logTab.Viewer).SelectedIndex; if (logIndex <= logTab.ContentList.Count) { filterIndex = logTab.ContentList[logIndex].FilterIndex; } else { SetStatus("filter:gotoLine:error in index:" + filterIndex.ToString()); return; } if (filterIndex >= 0) { SetStatus("filter:gotoLine:" + filterIndex.ToString()); ((Selector)filterTab.Viewer).SelectedIndex = filterIndex; DataGrid dataGrid = (DataGrid)CurrentTab().Viewer; FilterFileItem filterFileItem = CurrentFile().ContentItems.FirstOrDefault(x => x.Index == filterIndex); dataGrid.ScrollIntoView(filterFileItem); dataGrid.SelectedItem = filterFileItem; dataGrid.SelectedIndex = dataGrid.Items.IndexOf(filterFileItem); dataGrid.UpdateLayout(); DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(dataGrid.SelectedIndex); DataGridCellsPresenter presenter = FindVisualChild <DataGridCellsPresenter>(row); if (presenter != null) { DataGridCell cell = presenter.ItemContainerGenerator.ContainerFromIndex(0) as DataGridCell; if (cell != null) { cell.Focus(); } } } else if (filterIndex == -1) { // quick filter if (QuickFindCombo != null) { Keyboard.Focus(QuickFindCombo); } } } }
public override void AddTabItem(IFile <FilterFileItem> filterFile) { if (!TabItems.Any(x => String.Compare((string)x.Tag, filterFile.Tag, true) == 0)) { SetStatus("adding tab:" + filterFile.Tag); FilterTabViewModel tabItem = new FilterTabViewModel() { Name = filterFile.FileName, ContentList = ((FilterFile)filterFile).ContentItems, Tag = filterFile.Tag, Header = filterFile.FileName, Modified = false, IsNew = filterFile.IsNew }; // tabItem.ContentList.CollectionChanged += ContentList_CollectionChanged; tabItem.PropertyChanged += tabItem_PropertyChanged; TabItems.Add(tabItem); SelectedIndex = TabItems.Count - 1; } }