Skip to content

Commit 3feb946

Browse files
committed
Fix issue (#116
Fix issue (#116
1 parent 29e96ba commit 3feb946

File tree

3 files changed

+132
-23
lines changed

3 files changed

+132
-23
lines changed

src/WPFDevelopers.Samples.Shared/ExampleViews/BasicControlsExample.xaml

Lines changed: 55 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -779,46 +779,90 @@
779779
<TabItem Padding="10" Header="TabItem1">
780780
<Rectangle Fill="{DynamicResource WD.DangerSolidColorBrush}" />
781781
</TabItem>
782-
<TabItem Padding="10" Header="TabItem2">
782+
<TabItem
783+
Padding="10"
784+
wd:ElementHelper.IsClear="True"
785+
Header="TabItem2">
783786
<Rectangle Fill="{DynamicResource WD.InfoSolidColorBrush}" />
784787
</TabItem>
785-
<TabItem Padding="10" Header="TabItem3">
788+
<TabItem
789+
Padding="10"
790+
wd:ElementHelper.IsClear="True"
791+
Header="TabItem3">
786792
<Rectangle Fill="{DynamicResource WD.WarningSolidColorBrush}" />
787793
</TabItem>
788794
</TabControl>
789795
<TabControl Margin="4" TabStripPlacement="Bottom">
790-
<TabItem Padding="10" Header="TabItem1">
796+
<TabItem
797+
Padding="10"
798+
wd:ElementHelper.IsClear="True"
799+
Header="1">
791800
<Rectangle Fill="{DynamicResource WD.InfoSolidColorBrush}" />
792801
</TabItem>
793-
<TabItem Padding="10" Header="TabItem2">
802+
<TabItem
803+
x:Name="MyTabItem"
804+
MaxWidth="120"
805+
Padding="10"
806+
wd:ElementHelper.IsClear="True"
807+
Header="TabItem2LongLongLongLongLongLongLongLong"
808+
ToolTip="{Binding ElementName=MyTabItem, Path=Header}">
794809
<Rectangle Fill="{DynamicResource WD.DangerSolidColorBrush}" />
795810
</TabItem>
796-
<TabItem Padding="10" Header="TabItem3">
811+
<TabItem
812+
MaxWidth="120"
813+
Padding="10"
814+
wd:ElementHelper.IsClear="True">
815+
<TabItem.Header>
816+
<TextBlock
817+
VerticalAlignment="Center"
818+
Text="TabItem3LongLongLongLongLongLongLongLong"
819+
TextTrimming="CharacterEllipsis"
820+
TextWrapping="NoWrap"
821+
ToolTip="{Binding Text, RelativeSource={RelativeSource Self}}" />
822+
</TabItem.Header>
797823
<Rectangle Fill="{DynamicResource WD.WarningSolidColorBrush}" />
798824
</TabItem>
799825
</TabControl>
800826
<TabControl Margin="4" TabStripPlacement="Left">
801-
<TabItem Padding="10" Header="TabItem1">
827+
<TabItem
828+
Padding="10"
829+
wd:ElementHelper.IsClear="True"
830+
Header="TabItem1">
802831
<Rectangle Fill="{DynamicResource WD.WarningSolidColorBrush}" />
803832
</TabItem>
804-
<TabItem Padding="10" Header="TabItem2">
833+
<TabItem
834+
Padding="10"
835+
wd:ElementHelper.IsClear="True"
836+
Header="TabItem2">
805837
<Rectangle Fill="{DynamicResource WD.InfoSolidColorBrush}" />
806838
</TabItem>
807-
<TabItem Padding="10" Header="TabItem3">
839+
<TabItem
840+
Padding="10"
841+
wd:ElementHelper.IsClear="True"
842+
Header="TabItem3">
808843
<Rectangle Fill="{DynamicResource WD.DangerSolidColorBrush}" />
809844
</TabItem>
810845
</TabControl>
811846
<TabControl
812847
Margin="4"
813848
IsEnabled="False"
814849
TabStripPlacement="Right">
815-
<TabItem Padding="10" Header="TabItem1">
850+
<TabItem
851+
Padding="10"
852+
wd:ElementHelper.IsClear="True"
853+
Header="TabItem1">
816854
<Rectangle Fill="{DynamicResource WD.SuccessSolidColorBrush}" />
817855
</TabItem>
818-
<TabItem Padding="10" Header="TabItem2">
856+
<TabItem
857+
Padding="10"
858+
wd:ElementHelper.IsClear="True"
859+
Header="TabItem2">
819860
<Rectangle Fill="{DynamicResource WD.InfoSolidColorBrush}" />
820861
</TabItem>
821-
<TabItem Padding="10" Header="TabItem3">
862+
<TabItem
863+
Padding="10"
864+
wd:ElementHelper.IsClear="True"
865+
Header="TabItem3">
822866
<Rectangle Fill="{DynamicResource WD.WarningSolidColorBrush}" />
823867
</TabItem>
824868
</TabControl>

src/WPFDevelopers.Shared/Core/Helpers/ElementHelper.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,14 +93,17 @@ private static void ButtonClear_Click(object sender, RoutedEventArgs e)
9393
if (sender is Button button)
9494
{
9595
if (button.TemplatedParent is TextBox textBox)
96-
{
9796
textBox.Clear();
98-
}
9997
else if (button.TemplatedParent is PasswordBox passwordBox)
100-
{
10198
passwordBox.Clear();
99+
else if (button.TemplatedParent is TabItem tabItem)
100+
{
101+
var tabControl = tabItem.Parent as TabControl;
102+
if (tabControl != null)
103+
tabControl.Items.Remove(tabItem);
102104
}
103105
}
104106
}
107+
105108
}
106109
}

src/WPFDevelopers.Shared/Styles/Styles.TabControl.xaml

Lines changed: 71 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
33
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
44
xmlns:controls="clr-namespace:WPFDevelopers.Controls"
5-
xmlns:helpers="clr-namespace:WPFDevelopers.Helpers">
5+
xmlns:helpers="clr-namespace:WPFDevelopers.Helpers"
6+
xmlns:resx="clr-namespace:WPFDevelopers">
67
<ResourceDictionary.MergedDictionaries>
78
<ResourceDictionary Source="../Themes/Basic/ControlBasic.xaml" />
89
<ResourceDictionary Source="../Themes/Basic/Animations.xaml" />
@@ -19,15 +20,52 @@
1920
<Setter Property="Template">
2021
<Setter.Value>
2122
<ControlTemplate TargetType="{x:Type TabItem}">
22-
<controls:SmallPanel Background="{TemplateBinding Background}">
23+
<controls:SmallPanel
24+
Width="{TemplateBinding Width}"
25+
Height="{TemplateBinding Height}"
26+
Background="{TemplateBinding Background}">
2327
<Border x:Name="PART_Border" BorderThickness="{TemplateBinding BorderThickness}" />
24-
<ContentPresenter
25-
x:Name="PART_ContentPresenter"
26-
Margin="{TemplateBinding Padding}"
27-
HorizontalAlignment="{Binding Path=HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
28-
VerticalAlignment="{Binding Path=VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
29-
ContentSource="Header"
30-
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
28+
<Grid>
29+
<Grid.ColumnDefinitions>
30+
<ColumnDefinition />
31+
<ColumnDefinition Width="Auto" />
32+
</Grid.ColumnDefinitions>
33+
<ContentPresenter
34+
x:Name="PART_ContentPresenter"
35+
Margin="{TemplateBinding Padding}"
36+
HorizontalAlignment="{Binding Path=HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
37+
VerticalAlignment="{Binding Path=VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"
38+
ContentSource="Header"
39+
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
40+
<Button
41+
x:Name="PART_CloseButton"
42+
Grid.Column="1"
43+
Width="20"
44+
Height="20"
45+
Margin="0,0,4,0"
46+
helpers:ElementHelper.CornerRadius="4"
47+
helpers:ElementHelper.IsClear="{Binding Path=(helpers:ElementHelper.IsClear), RelativeSource={RelativeSource TemplatedParent}}"
48+
Style="{StaticResource WD.NormalButton}"
49+
ToolTip="{Binding [Close], Source={x:Static resx:LanguageManager.Instance}}"
50+
Visibility="Collapsed">
51+
<controls:PathIcon
52+
Width="10"
53+
Height="10"
54+
Foreground="{DynamicResource WD.SecondaryTextSolidColorBrush}"
55+
Kind="WindowClose" />
56+
</Button>
57+
</Grid>
58+
<!--<Line
59+
x:Name="PART_Line"
60+
Margin="{TemplateBinding Margin}"
61+
HorizontalAlignment="Left"
62+
VerticalAlignment="Center"
63+
Stroke="{DynamicResource WD.SecondaryTextSolidColorBrush}"
64+
StrokeThickness="1"
65+
X1="2"
66+
X2="2"
67+
Y1="0"
68+
Y2="15" />-->
3169
</controls:SmallPanel>
3270
<ControlTemplate.Triggers>
3371
<Trigger Property="IsSelected" Value="True">
@@ -38,6 +76,28 @@
3876
<Trigger Property="IsMouseOver" Value="True">
3977
<Setter TargetName="PART_ContentPresenter" Property="TextElement.Foreground" Value="{DynamicResource WD.PrimaryNormalSolidColorBrush}" />
4078
</Trigger>
79+
<Trigger Property="helpers:ElementHelper.IsClear" Value="True">
80+
<Setter TargetName="PART_CloseButton" Property="Visibility" Value="Visible" />
81+
</Trigger>
82+
<!--<Trigger Property="TabStripPlacement" Value="Left">
83+
<Setter TargetName="PART_Line" Property="X1" Value="0" />
84+
<Setter TargetName="PART_Line" Property="X2" Value="15" />
85+
<Setter TargetName="PART_Line" Property="Y1" Value="2" />
86+
<Setter TargetName="PART_Line" Property="Y2" Value="2" />
87+
<Setter TargetName="PART_Line" Property="VerticalAlignment" Value="Bottom" />
88+
<Setter TargetName="PART_Line" Property="HorizontalAlignment" Value="Center" />
89+
</Trigger>
90+
<Trigger Property="TabStripPlacement" Value="Right">
91+
<Setter TargetName="PART_Line" Property="X1" Value="0" />
92+
<Setter TargetName="PART_Line" Property="X2" Value="15" />
93+
<Setter TargetName="PART_Line" Property="Y1" Value="2" />
94+
<Setter TargetName="PART_Line" Property="Y2" Value="2" />
95+
<Setter TargetName="PART_Line" Property="VerticalAlignment" Value="Bottom" />
96+
<Setter TargetName="PART_Line" Property="HorizontalAlignment" Value="Center" />
97+
</Trigger>
98+
<Trigger Property="IsSelected" Value="True">
99+
<Setter TargetName="PART_Line" Property="Visibility" Value="Collapsed" />
100+
</Trigger>-->
41101
</ControlTemplate.Triggers>
42102
</ControlTemplate>
43103
</Setter.Value>
@@ -85,6 +145,8 @@
85145
<ControlTemplate TargetType="{x:Type TabControl}">
86146
<controls:WDBorder
87147
x:Name="PART_Border"
148+
Width="{TemplateBinding Width}"
149+
Height="{TemplateBinding Height}"
88150
Margin="{TemplateBinding Margin}"
89151
Background="{TemplateBinding Background}"
90152
BorderBrush="{TemplateBinding BorderBrush}"

0 commit comments

Comments
 (0)