internal bool DropTab(TearableTabItem tabItemSource) { bool retVal = false; try { TearableTabControl tabControlTarget = this; if (tabControlTarget != null) { TearableTabControl tabControlSource = tabItemSource.Parent as TearableTabControl; if (tabControlTarget != tabControlSource && !tabControlTarget.IsChildOf(tabItemSource)) { if (null != tabControlSource && tabControlSource.Items.Contains(tabItemSource)) { tabControlSource.Items.Remove(tabItemSource); // Should this be disposed if no items remain??? } tabControlTarget.Items.Insert(tabControlTarget.Items.Count, tabItemSource); tabItemSource.IsSelected = true; retVal = true; } else { Log.LogWriter.Instance.WriteToLog(Log.LogMsgType.Error, "Cannot add tab to internal tab control"); } } } catch (Exception ex) { } return(retVal); }
private void TabItem_Drop(object sender, DragEventArgs e) { try { TearableTabItem tabItemTarget = e.Source as TearableTabItem; TearableTabItem tabItemSource = e.Data.GetData(typeof(TearableTabItem)) as TearableTabItem; if (null != SharedData) { SharedData.AllowTabDrag = false; } if (tabItemTarget != null && tabItemSource != null) { tiHoverTimer?.Stop(); tiHoverTimer = null; if (!tabItemTarget.Equals(tabItemSource)) { TearableTabControl tabControlSource = tabItemSource.Parent as TearableTabControl; String source = tabControlSource.Name; TearableTabControl tabControlTarget = tabItemTarget.Parent as TearableTabControl; String target = tabControlTarget.Name; if (tabControlSource.Equals(tabControlTarget)) { int sourceIndex = tabControlTarget.Items.IndexOf(tabItemSource); int targetIndex = tabControlTarget.Items.IndexOf(tabItemTarget); tabControlTarget.Items.Remove(tabItemSource); tabControlTarget.Items.Insert(targetIndex, tabItemSource); //tabControlTarget.Items.Remove(tabItemTarget); //tabControlTarget.Items.Insert(sourceIndex, tabItemTarget); } else { int targetIndex = Math.Min(tabControlTarget.Items.Count, tabControlTarget.Items.IndexOf(tabItemTarget)); int one = tabControlTarget.Items.IndexOf(tabItemTarget); tabControlSource.Items.Remove(tabItemSource); tabControlTarget.Items.Insert(targetIndex, tabItemSource); } tabItemSource.IsSelected = true; } e.Handled = true; } } catch (Exception ex) { } }
public override void OnApplyTemplate() { Button button = this.GetTemplateChild("PART_Close") as Button; if (null != button) { button.Click += (s, e) => { if (button.IsMouseOver) { TearableTabControl parent = this.Parent as TearableTabControl; if (null != parent) { parent.Items.Remove(this); } this.Dispose(); } }; } }
public bool AddControl(DropLocation location, TearableTabControl ttControl, TearableTabItem newTabItem, ref Grid droppedItemParent) { return(true); }