Связывание ListBox внутри TabControl может быть немного сложным. TabControl также связан и ListBox связан в нем. Может быть найдено значение заголовка TabControl, но с тех пор значение, выбранное в ListBox, не было получено.
Main.xaml.cs
AddTab at = (AddTab)scenarioTC.SelectedItem;
MessageBox.Show(at.Header);
//listbox selecteditem show by Console or MessageBox
class AddTab
{
public string Header { get; set; }
public string Time { get; set; }
public ObservableCollection<AddData> Data { get; } = new ObservableCollection<AddData>();
}
class AddData
{
public string Name { get; set; }
public string Path { get; set; }
}
Main.xaml
<TabControl x:Name="scenarioTC" ItemsSource="{Binding}" Grid.Row="1" HorizontalAlignment="Stretch" Margin="5,0,5,5" VerticalAlignment="Stretch" SelectionChanged="ScenarioCB_SelectionChanged" KeyDown="ScenarioTC_KeyDown">
<TabControl.ItemTemplate>
<DataTemplate DataType="local:AddTab">
<TextBlock Text="{Binding Header}"/>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate DataType="local:AddTab">
<ListBox x:Name="listBox" HorizontalAlignment="Stretch" Margin="0,0,0,0" VerticalAlignment="Stretch" ItemsSource="{Binding Data}" AllowDrop="True" Drop="ListBox_Drop" ScrollViewer.VerticalScrollBarVisibility="Disabled" ScrollViewer.HorizontalScrollBarVisibility="Visible" Padding="0">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel IsItemsHost="True"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<Image x:Name ="VD" Margin="3" Source="{Binding Path}" Height="180" Stretch="Uniform" HorizontalAlignment="Center"/>
<TextBlock Name="TB" Margin="3" Text="{Binding Name}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>