Uzyskanie rodzica nowej karty po dodaniu do powiązanego TabControl (mvvm)
Dodaję przycisk zamykania do moich kart, korzystając z następującego przewodnika:
http://www.codeproject.com/Articles/84213/How-to-add-a-Close-button-to-a-WPF-TabItem
Stało się to problemem, ponieważ zdarzenie używa „rodzica” dodanej karty, aby usunąć tę kartę z kontrolki tabulacji. Wiążę formant tabulacji za pomocą mvvm, więc właściwość parent najwyraźniej nie jest ustawiana i daje mi wyjątek odniesienia null dla rodzica, gdy zdarzenie próbuje usunąć z niego.
Oto oprawa, więc masz pomysł:
<TabControl Name="tabControl" Margin="0,22,0.2,-5.2" ItemsSource="{Binding Tabs}" Background="#FF4C76B2"/>
Herezje, gdzie dodawane są zakładki.
private void AddTab(object tabName)
{
ClosableTab newTab = new ClosableTab();
newTab.Title = "title?";
//newTab.Header = tabName;
TextBox test = new TextBox();
test.Text = "CONTENT (" + tabName + ") GOES HERE";
newTab.Content = test;
Tabs.Add(newTab);
OnPropertyChanged("Tabs");
}
Oto wydarzenie, w którym ma miejsce zerowe odniesienie:
void button_close_Click(object sender, RoutedEventArgs e)
{
((TabControl)this.Parent).Items.Remove(this);
}
Jak widzę, istnieją dwie opcje:
spróbuj znaleźć inny sposób usunięcia karty (bez właściwości nadrzędnej)spróbuj znaleźć sposób, aby w jakiś sposób ustawić właściwość parent (która nie może być wykonana bezpośrednio, zgłasza błąd kompilatora)