The answer to the question:
Create a tab.
Use the stack panel to align the text box and close the image horizontally. Check out the example below.
.
. :
tabConnections.Items.RemoveAt(tabConnections.SelectedIndex);
? , . , .
:
TabControl. . , . Tab .
public class ActionTabItem
{
public string Header { get; set; }
public UserControl Content { get; set; }
}
public class ActionTabViewModal
{
public ObservableCollection<ActionTabItem> Tabs { get; set; }
public ActionTabViewModal()
{
Tabs = new ObservableCollection<ActionTabItem>();
}
public void Populate()
{
Tabs.Add(new ActionTabItem { Header = "UserControl 1", Content = new TestUserControl() });
Tabs.Add(new ActionTabItem { Header = "UserControl 2", Content = new TestUserControl() });
}
}
xaml, .
Header Action Tab item Action Tab item TextBlock TabControl
Content Action Tab item Action Tab item " Action Tab item
, .
<Grid>
<TabControl x:Name="actionTabs" DockPanel.Dock="Right" Background="White">
<TabControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Height="21" Width="100">
<TextBlock Width="80" Text="{Binding Header}"/>
<Image Source="PathToFile\close.png" Width="20" Height="20" MouseDown="Image_MouseDown"/>
</StackPanel>
</DataTemplate>
</TabControl.ItemTemplate>
<TabControl.ContentTemplate>
<DataTemplate>
<UserControl Height="800" Width="1220" Content="{Binding Content}" Margin="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
</Grid>
public partial class Window1 : Window
{
private ActionTabViewModal vmd;
public Window1()
{
InitializeComponent();
vmd = new ActionTabViewModal();
actionTabs.ItemsSource = vmd.Tabs;
vmd.Populate();
}
private void Image_MouseDown(object sender, MouseButtonEventArgs e)
{
vmd.Tabs.RemoveAt(actionTabs.SelectedIndex);
}
}
:
