Exemple #1
0
        private void TreeFunctions_KeyDown(object sender, KeyEventArgs e)
        {
            if (string.IsNullOrEmpty(TbFilterForFunctions.Text))
            {
                return;
            }

            if (e.Key != Key.F3)
            {
                return;
            }

            var index = Keyboard.Modifiers != ModifierKeys.Shift
                ? TreeFunctions.SelectedIndex + 1
                : TreeFunctions.SelectedIndex - 1;

            var source = ((IEnumerable <TreeViewItemData>)TreeFunctions.ItemsSource).ToList();

            while (index < source.Count && index > 0)
            {
                if (string.IsNullOrEmpty(source[index].StringToUnderscore))
                {
                    if (Keyboard.Modifiers != ModifierKeys.Shift)
                    {
                        index++;
                    }
                    else
                    {
                        index--;
                    }
                    continue;
                }

                if (TreeFunctions.SelectedItem != source[index])
                {
                    TreeFunctions.SelectedItem = source[index];
                    TreeFunctions.ScrollIntoView(source[index]);

                    var item = TreeFunctions.ItemContainerGenerator.ContainerFromItem(source[index]) as ListBoxItem;
                    item?.Focus();
                }

                break;
            }
        }
Exemple #2
0
        private void CheckTreeFilter([NotNull] ItemsControl tree, string filter)
        {
            var source = tree.ItemsSource as IEnumerable <TreeViewItemData>;

            if (source == null)
            {
                return;
            }

            var treeViewItemsData = source as TreeViewItemData[] ?? source.ToArray();
            var firstmatch        = treeViewItemsData.FirstOrDefault(x => x.Text.ToLowerInvariant().Contains(filter.ToLowerInvariant()));

            if (firstmatch != null)
            {
                TreeFunctions.ScrollIntoView(firstmatch);
                TreeFunctions.SelectedItem = firstmatch;
            }

            foreach (var treeViewItemData in treeViewItemsData)
            {
                treeViewItemData.StringToUnderscore =
                    treeViewItemData.Text.ToLowerInvariant().Contains(filter.ToLowerInvariant()) ? filter : "";
            }
        }