protected override void InitializeScrollBehaviorObserver ()
{
// We implement Scroll logic this way because the internal
// control in charge of handling scrolling is disposed when
// DropDownStyle is changed and is Expanded/Collapsed
if (observer != null
&& (ListBoxControl == null || ListBoxControl != listControl)) {
observer.ScrollPatternSupportChanged -= OnScrollPatternSupportChanged;
observer.Terminate ();
SetBehavior (ScrollPatternIdentifiers.Pattern, null);
}
if (ListBoxControl != null && ListBoxControl != listControl) {
if (ListBoxControl != null) {
observer = new ScrollBehaviorObserver (this, null, VerticalScrollBar);
observer.ScrollPatternSupportChanged += OnScrollPatternSupportChanged;
observer.Initialize ();
UpdateScrollBehavior (observer);
ListBoxControl.Disposed += delegate (object obj, EventArgs args) {
observer.Terminate ();
SetBehavior (ScrollPatternIdentifiers.Pattern, null);
listControl = null;
};
}
listControl = ListBoxControl;
}
}