0
自定義的TabItem自定義的TabItem:可關閉的選項卡,並釋放內存關閉
我有一個TabControl綁定到我的視圖模型我也想刪除的標籤,但我不能看到canges中的TabItems看到默認不修改
<TabControl
Margin="5 5 5 0"
Grid.Row="1"
ItemsSource="{Binding Path=ListTabItem}"
SelectedIndex="{Binding Path=CurrentTabItemIndex}"
x:Name="Workspace" Background="White">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<cmd:EventToCommand
Command="{Binding ChangeTabCommand}"
CommandParameter="{Binding SelectedItem, ElementName=Workspace}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<!--Here is my tabHeader-->
<TabControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Header}" />
<Button Content="X" Command={Binding CloseTabCommand}
CommandParameter="{Binding SelectedItem, ElementName=Workspace}"/>
</StackPanel>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
編輯:
我得到一個工作作風,但我有問題時關閉一個標籤不釋放內存:
<Style x:Key="HeaderTabItem" TargetType="TabItem">
<Setter Property="HeaderTemplate">
<Setter.Value>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Button
Width="20"
Height="20"
Margin="-3 0 5 0"
Padding="2"
HorizontalAlignment="Left"
VerticalAlignment="Center"
BorderBrush="{x:Null}" Background="{x:Null}" Foreground="{x:Null}"
DataContext="{Binding DataContext, ElementName=Workspace}"
Command="{Binding Path=CloseTabCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=TabItem, AncestorLevel=1}}" Content="X"/>
<ContentControl
Grid.Column="1"
VerticalAlignment="Center"
HorizontalAlignment="Left"
Content="{Binding Path=Header, RelativeSource={RelativeSource FindAncestor, AncestorType=TabItem, AncestorLevel=1}}" />
</Grid>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
在我的ViewModel
CloseTabCommand = new RelayCommand<TabItem>(tab =>
{
if (null == tab) return;
ListTabItem.Remove(tab);
},
tab =>
{
return ListTabItem.IndexOf(tab) == CurrentTabItemIndex;
});
我會試着檢查 – rkmax