/// <summary> /// Walk the visual tree to find the ItemsControl and /// hook its some events on it. /// </summar private void HookItemsControlEvents() { _itemsControl = GetDependencyObjectFromVisualTree(this, typeof(ItemsControl)) as ItemsControl; if (_itemsControl != null) { //Handle the Resize/ScrollChange/MouseWheel //events to determine whether to switch to Normal mode _itemsControl.SizeChanged += new SizeChangedEventHandler(OnCouldSwitchToNormalMode); _itemsControl.AddHandler(ScrollViewer.ScrollChangedEvent, new RoutedEventHandler(OnScrollViewerChanged)); _itemsControl.AddHandler(ScrollViewer.MouseWheelEvent, new RoutedEventHandler(OnCouldSwitchToNormalMode), true); } }
private void ProcessPanelType() { if (null == _ui_lbLeft || null == _ui_lbRight || null == _ui_tvLeft || null == _ui_tvRight) return; switch (ePanelType) { case PanelTypes.list: _ui_dlbLeft.Visibility = _ui_dlbRight.Visibility = Visibility.Visible; _ui_dtvLeft.Visibility = _ui_dtvRight.Visibility = Visibility.Collapsed; _ui_Search.DataContext = _ui_icLeft = _ui_lbLeft; _ui_icRight = _ui_lbRight; break; case PanelTypes.tree: _ui_dlbLeft.Visibility = _ui_dlbRight.Visibility = Visibility.Collapsed; _ui_dtvLeft.Visibility = _ui_dtvRight.Visibility = Visibility.Visible; _ui_Search.DataContext = _ui_icLeft = _ui_tvLeft; _ui_icRight = _ui_tvRight; break; } _ui_Search.DataContext = _ui_icLeft; if (null != _ui_icLeft) _ui_icLeft.RemoveHandler(MouseLeftButtonDownEvent, (MouseButtonEventHandler)ItemsControl_MouseLeftButtonDown); if (null != _ui_icRight) _ui_icRight.RemoveHandler(MouseLeftButtonDownEvent, (MouseButtonEventHandler)ItemsControl_MouseLeftButtonDown); _ui_icLeft.AddHandler(MouseLeftButtonDownEvent, (MouseButtonEventHandler)ItemsControl_MouseLeftButtonDown, true); _ui_icRight.AddHandler(MouseLeftButtonDownEvent, (MouseButtonEventHandler)ItemsControl_MouseLeftButtonDown, true); ProcessItemTemplate(); }