Привет! Я искал в сети некоторые функции закрытия кнопок вкладок, но во всех этих решениях был какой-то сложный обработчик событий, и я хотел постараться сделать его простым, но я мог нарушить этику хорошего кода, поэтому пожалуйста, просмотрите этот метод и скажите мне, что не так.
public void AddCloseItem(string header, object content){
//Create tabitem with header and content
StackPanel headerPanel = new StackPanel() { Orientation = Orientation.Horizontal, Height = 14};
headerPanel.Children.Add(new TextBlock() { Text = header });
Button closeBtn = new Button() { Content = new Image() { Source = new BitmapImage(new Uri("images/cross.png", UriKind.Relative)) }, Margin = new Thickness() { Left = 10 } };
headerPanel.Children.Add(closeBtn);
TabItem newTabItem = new TabItem() { Header = headerPanel, Content = content };
//Add close button functionality
closeBtn.Tag = newTabItem;
closeBtn.Click += new RoutedEventHandler(closeBtn_Click);
//Add item to list
this.Add(newTabItem);
}
void closeBtn_Click(object sender, RoutedEventArgs e)
{
this.Remove((TabItem)((Button)sender).Tag);
}
Итак, я сохраняю tabitem в свойстве btn.Tag, а затем, когда нажимается кнопка, я просто удаляю tabitem из моей наблюдаемой коллекции, и пользовательский интерфейс обновляется соответствующим образом.
Использую ли я слишком много памяти для сохранения табита в свойстве Tag?