我正在嘗試制作一個系統來從選項卡控制元件中添加和洗掉選項卡。通過選擇最后一個選項卡來添加選項卡(以另一種方法添加,但包含一個“ ”作為標題)。新創建的選項卡標題的標題是由文本塊和按鈕組成的網格。單擊按鈕時,它將運行 Close_Click。該代碼在洗掉選項卡方面效果很好,盡管我如何獲取單擊了關閉按鈕的選項卡的標簽?
private void TabControl_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
{
if (TabControl.SelectedIndex == TabControl.Items.Count - 1)
{
string tabName = "Tab" (TabControl.Items.Count - 1);
string tabTag = RandomString(16);
Grid Grid = new Grid();
TextBlock TextBlock = new TextBlock()
{
Text = tabName
};
Button Button = new Button()
{
Content = "X",
Width = Double.NaN,
Height = Double.NaN,
Background = Brushes.Transparent,
BorderBrush = Brushes.Transparent
};
Button.Click = Close_Click;
Grid.ColumnDefinitions.Add(new ColumnDefinition());
Grid.ColumnDefinitions.Add(new ColumnDefinition());
Grid.Children.Add(TextBlock);
Grid.Children.Add(Button);
Grid.SetColumn(TextBlock, 0);
Grid.SetColumn(Button, 1);
TabItem newTabItem = new TabItem
{
Header = Grid,
Name = tabName,
Tag = tabTag
};
TabControl.Items.Insert(TabControl.Items.Count - 1, newTabItem);
Dispatcher.BeginInvoke((Action)(() => TabControl.SelectedIndex = TabControl.Items.Count - 2));
}
}
private void Close_Click(object sender, RoutedEventArgs e)
{
var target = (FrameworkElement)sender;
while (target is Grid == false)
{
target = (FrameworkElement)target.Parent;
}
var tabItem = (target as Grid).Parent;
if (TabControl.SelectedIndex == TabControl.Items.IndexOf(tabItem))
{
TabControl.SelectedIndex = TabControl.Items.IndexOf(tabItem) - 1;
}
TabControl.Items.Remove(tabItem);
}
uj5u.com熱心網友回復:
如何獲取單擊了關閉按鈕的選項卡的標簽?
投射tabItem到您的Close_Click事件處理程式中:
private void Close_Click(object sender, RoutedEventArgs e)
{
var target = (FrameworkElement)sender;
while (target is Grid == false)
{
target = (FrameworkElement)target.Parent;
}
var tabItem = (target as Grid).Parent as TabItem;
string tag = tabItem.Tag as string;
if (TabControl.SelectedIndex == TabControl.Items.IndexOf(tabItem))
{
TabControl.SelectedIndex = TabControl.Items.IndexOf(tabItem) - 1;
}
TabControl.Items.Remove(tabItem);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/492182.html
