こんにちは私はいくつかのタブボタンを閉じる機能をネットで探していましたが、それらのソリューションにはすべて複雑なイベントハンドラーがあり、それをシンプルに保ちたいと思っていましたが、そうすることで優れたコード倫理を破った可能性があるので、これを確認してください方法と何が悪いのか教えてください。
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);
}
つまり、私が行っているのは、タブアイテムをbtn.Tagプロパティに格納し、ボタンがクリックされたときに、observablecollectionからタブアイテムを削除するだけで、UIが適切に更新されます。
タブアイテムをTagプロパティに保存するためにメモリを使いすぎていませんか?