Technorati Теги: wpf
Шаг 1. Создадим специальный шаблон и стиль для tabitem
Первый шаг модифицируем представление заголовка tabitem так, чтобы он содержал кнопку которая бы проявлялась на всех tabitem, где определен наш заголовок. Код XAML который требуется для этого выглядит примерно так:
<TabControl>
<TabControl.Resources>
<DataTemplate x:Key="CustomTabHeader">
<StackPanel Orientation="Horizontal">
<ContentPresenter>
<ContentPresenter.Content>
<Binding Path="Header">
<Binding.RelativeSource>
<RelativeSource Mode="FindAncestor"
AncestorType="{x:TypeabItem}"/>
</Binding.RelativeSource>
</Binding>
</ContentPresenter.Content>
</ContentPresenter>
<Button Margin="8,0,0,0" Click="OnCloseButtonClick"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center">
<Grid>
<Canvas Width="8" Height="8">
<Line X1="2" X2="6" Y1="2" Y2="6"
Stroke="Black" StrokeThickness="1"/>
<Line X1="6" X2="2" Y1="2" Y2="6"
Stroke="Black" StrokeThickness="1"/>
</Canvas>
</Grid>
</Button>
</StackPanel>
</DataTemplate>
<Style TargetType="TabItem">
<Style.Setters>
<Setter Property="HeaderTemplate"
Value="{StaticResource CustomTabHeader}"/>
</Style.Setters>
</Style>
</TabControl.Resources>
</TabControl>Syhi-подсветка кода
<TabControl.Resources>
<DataTemplate x:Key="CustomTabHeader">
<StackPanel Orientation="Horizontal">
<ContentPresenter>
<ContentPresenter.Content>
<Binding Path="Header">
<Binding.RelativeSource>
<RelativeSource Mode="FindAncestor"
AncestorType="{x:TypeabItem}"/>
</Binding.RelativeSource>
</Binding>
</ContentPresenter.Content>
</ContentPresenter>
<Button Margin="8,0,0,0" Click="OnCloseButtonClick"
HorizontalContentAlignment="Center"
VerticalContentAlignment="Center">
<Grid>
<Canvas Width="8" Height="8">
<Line X1="2" X2="6" Y1="2" Y2="6"
Stroke="Black" StrokeThickness="1"/>
<Line X1="6" X2="2" Y1="2" Y2="6"
Stroke="Black" StrokeThickness="1"/>
</Canvas>
</Grid>
</Button>
</StackPanel>
</DataTemplate>
<Style TargetType="TabItem">
<Style.Setters>
<Setter Property="HeaderTemplate"
Value="{StaticResource CustomTabHeader}"/>
</Style.Setters>
</Style>
</TabControl.Resources>
</TabControl>Syhi-подсветка кода
Шаг 2. Закрываем tabitem
Второй шаг потребует написания небольшого куска кода. Вот и он.
private void OnCloseButtonClick(object sender, RoutedEventArgs e)
{
FrameworkElement parent = e.OriginalSource as FrameworkElement;
while (parent != null && !(parent.Parent is TabItem))
{
parent = parent.Parent as FrameworkElement;
}
if (parent != null)
{
FrameworkElement view = (parent as TabItem).Content as FrameworkElement;
string regionName = RegionManager.GetRegionName(view);
_regionManager.Regions[regionName].Remove(view);
}
}Syhi-подсветка кода
{
FrameworkElement parent = e.OriginalSource as FrameworkElement;
while (parent != null && !(parent.Parent is TabItem))
{
parent = parent.Parent as FrameworkElement;
}
if (parent != null)
{
FrameworkElement view = (parent as TabItem).Content as FrameworkElement;
string regionName = RegionManager.GetRegionName(view);
_regionManager.Regions[regionName].Remove(view);
}
}Syhi-подсветка кода
Комментариев нет:
Отправить комментарий