Привет, я просматривал сеть для некоторой функциональности кнопки Tab, но у всех этих решений был сложный обработчик событий, и я хотел попытаться сохранить его простым, но я мог бы сломать хорошую этику кода сделав это, пожалуйста, просмотрите этот метод и скажите мне, что не так.Пожалуйста, критикуйте этот метод
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 из моего ObservableCollection, а пользовательский интерфейс обновляется соответствующим образом.
Я использую слишком много памяти, сохраняя tabitem для свойства Tag?
Добро пожаловать в SO. Вы можете добавить тег, чтобы указать язык/платформу, о которой вы говорите? –
Я бы предположил, что это WPF C# – KroaX
спасибо - будем помнить об этом – Jakob