WPF TreeView Item ไม่สามารถเลือกได้หากลูกคนแรกในระดับใหม่

        private void ExpandByCat(Category category)
        {
            if (category == null) return;

            var node = FindTviFromObjectRecursive(_treeView, category);
            if (node != null)
                node.IsExpanded = true;
        }


        private void SelectByCat(Category category)
        {
            if (category == null) return;

            var node = FindTviFromObjectRecursive(_treeView, category);
            if (node != null)
                node.IsSelected = true;
        }

        public static TreeViewItem FindTviFromObjectRecursive(ItemsControl treeView, Category category)
        {
            if (treeView == null)
                return null;

            if (treeView.ItemContainerGenerator.ContainerFromItem(category) is TreeViewItem tvi) 
                return tvi;
            foreach (Category cat in treeView.Items)
            {
                //Get the TreeViewItem associated with the iterated object model
                TreeViewItem tvi2 = treeView.ItemContainerGenerator.ContainerFromItem(cat) as TreeViewItem;
                tvi = FindTviFromObjectRecursive(tvi2, category);
                if (tvi != null) return tvi;
            }
            return null;
        }