Если элемент вашей вкладки непосредственно содержит ваш прокручиватель, вы можете сделать следующее:
TabItem ti = tabControl.SelectedItem as TabItem;
ScrollViewer sv = ti?.Content as ScrollViewer;
WrapPanel wp = scrollViewer?.Content as WrapPanel;
Другой способ доступа к вашей WrapPanel - использовать функцию, которая возвращает дочерний элемент / контент определенного типа.Например,
public T FindVisualChildOrContentByType<T>(DependencyObject parent)
where T : DependencyObject
{
if(parent == null)
{
return null;
}
if(parent.GetType() == typeof(T))
{
return parent as T;
}
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++)
{
var child = VisualTreeHelper.GetChild(parent, i);
if(child.GetType() == typeof(T))
{
return child as T;
}
else
{
T result = FindVisualChildOrContentByType<T>(child);
if (result != null)
return result;
}
}
if(parent is ContentControl contentControl)
{
return this.FindVisualChildOrContentByType<T>(contentControl.Content as DependencyObject);
}
return null;
}
Тогда вы сможете сделать
WrapPanel wp = this.FindVisualChildOrContentByType<WrapPanel>(tabItem);
Если это не работает, не стесняйтесь опубликовать свой XAML, чтобы я мог воспроизвести ваш точный сценарий.