Я пытаюсь получить ScrollViewer из моего свернутого ListBox. Это будет видно, и я попытался:Получение scrollviewer из Collapsed ListBox
-После Loaded событие:
documentListBox.Loaded += (sender, e) =>
{
var scroller = documentListBox.Template.FindName("Scroller", documentListBox);
var scroller1 = LogicalTreeHelper.GetParent(documentListBox);
var scroller2 = VisualTreeHelper.GetParent(documentListBox);
var scroller3 = Extensions.GetDescendantByType(documentListBox, typeof(ScrollViewer)) as ScrollViewer;
var scroller4 = documentListBox.Template.FindName("ScrollViewer", documentListBox) as ScrollViewer;
}
----------------Extensions.GetDescendantByType:----------------
public static Visual GetDescendantByType(Visual element, Type type)
{
if (element == null)
{
return null;
}
if (element.GetType() == type)
{
return element;
}
Visual foundElement = null;
if (element is FrameworkElement)
{
(element as FrameworkElement).ApplyTemplate();
}
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(element); i++)
{
Visual visual = VisualTreeHelper.GetChild(element, i) as Visual;
foundElement = GetDescendantByType(visual, type);
if (foundElement != null)
{
break;
}
}
return foundElement;
}
-После IsVisibleChanged:
documentListBox.IsVisibleChanged+=VisibilityChanged
VisibilityChanged(){
var scroller = Extensions.GetDescendantByType(documentListBox, typeof(ScrollViewer)) as ScrollViewer;
var scroller1 = documentListBox.Template.FindName("ScrollViewer", documentListBox) as ScrollViewer;
var scroller2 = VisualTreeHelper.GetParent(documentListBox);
var scroller3 = LogicalTreeHelper.GetParent(documentListBox);
}
Также пытались переопределить ListBox и добавить это свойство в в обоих случаях:
public ScrollViewer Scroller
{
get
{
return GetTemplateChild("ScrollViewer") as ScrollViewer;
}
}
Все они либо дали мне что-то ng else или null
. Любая идея о том, что звонить? Или где я мог бы получить к нему доступ.