Skip to content

Commit f7e47ad

Browse files
authored
Merge pull request #14 from qian-o/refactor-styles
重构激活状态样式。
2 parents ba0f620 + c55a85f commit f7e47ad

15 files changed

+998
-375
lines changed

src/Examples/UnoApp/App.xaml

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,8 @@
88
<dock:WinUIDockResources xmlns:dock="using:WinUI.Dock" />
99
</ResourceDictionary.MergedDictionaries>
1010

11-
<!-- Custom ActiveBorderBrush and ActiveItemBorderBrush -->
12-
<!--<SolidColorBrush x:Key="ActiveBorderBrush"
13-
Color="Red" />
14-
15-
<LinearGradientBrush x:Key="ActiveItemBorderBrush" MappingMode="Absolute" StartPoint="0,0" EndPoint="0,4">
16-
<LinearGradientBrush.RelativeTransform>
17-
<ScaleTransform CenterY="0.5" ScaleY="-1" />
18-
</LinearGradientBrush.RelativeTransform>
19-
20-
<LinearGradientBrush.GradientStops>
21-
<GradientStop Offset="1.0" Color="Transparent" />
22-
<GradientStop Offset="1.0" Color="Red" />
23-
</LinearGradientBrush.GradientStops>
24-
</LinearGradientBrush>-->
11+
<!--<SolidColorBrush x:Key="DockThemeBrush"
12+
Color="Red" />-->
2513
</ResourceDictionary>
2614
</Application.Resources>
2715
</Application>

src/Examples/WinUIApp/App.xaml

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,8 @@
88
<dock:WinUIDockResources xmlns:dock="using:WinUI.Dock" />
99
</ResourceDictionary.MergedDictionaries>
1010

11-
<!-- Custom ActiveBorderBrush and ActiveItemBorderBrush -->
12-
<!--<SolidColorBrush x:Key="ActiveBorderBrush"
13-
Color="Red" />
14-
15-
<LinearGradientBrush x:Key="ActiveItemBorderBrush" MappingMode="Absolute" StartPoint="0,0" EndPoint="0,4">
16-
<LinearGradientBrush.RelativeTransform>
17-
<ScaleTransform CenterY="0.5" ScaleY="-1" />
18-
</LinearGradientBrush.RelativeTransform>
19-
20-
<LinearGradientBrush.GradientStops>
21-
<GradientStop Offset="1.0" Color="Transparent" />
22-
<GradientStop Offset="1.0" Color="Red" />
23-
</LinearGradientBrush.GradientStops>
24-
</LinearGradientBrush>-->
11+
<!--<SolidColorBrush x:Key="DockThemeBrush"
12+
Color="Red" />-->
2513
</ResourceDictionary>
2614
</Application.Resources>
2715
</Application>

src/WinUI.Dock/Controls/DockTargetButton.xaml

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<Setter Target="Root.Child">
2020
<Setter.Value>
2121
<Border Background="{ThemeResource ControlFillColorDefaultBrush}"
22-
BorderBrush="{ThemeResource AccentFillColorDefaultBrush}"
22+
BorderBrush="{ThemeResource DockThemeBrush}"
2323
BorderThickness="1,3,1,1"
2424
CornerRadius="2" />
2525
</Setter.Value>
@@ -33,12 +33,12 @@
3333
<Setter.Value>
3434
<Grid>
3535
<Border Background="{ThemeResource ControlFillColorDefaultBrush}"
36-
BorderBrush="{ThemeResource AccentFillColorDefaultBrush}"
36+
BorderBrush="{ThemeResource DockThemeBrush}"
3737
BorderThickness="1,3,1,1"
3838
CornerRadius="2" />
3939
<Line HorizontalAlignment="Center"
4040
Stretch="Fill"
41-
Stroke="{ThemeResource AccentFillColorDefaultBrush}"
41+
Stroke="{ThemeResource DockThemeBrush}"
4242
StrokeDashArray="3,1"
4343
StrokeThickness="1"
4444
Y2="1" />
@@ -54,12 +54,12 @@
5454
<Setter.Value>
5555
<Grid>
5656
<Border Background="{ThemeResource ControlFillColorDefaultBrush}"
57-
BorderBrush="{ThemeResource AccentFillColorDefaultBrush}"
57+
BorderBrush="{ThemeResource DockThemeBrush}"
5858
BorderThickness="1,3,1,1"
5959
CornerRadius="2" />
6060
<Line VerticalAlignment="Center"
6161
Stretch="Fill"
62-
Stroke="{ThemeResource AccentFillColorDefaultBrush}"
62+
Stroke="{ThemeResource DockThemeBrush}"
6363
StrokeDashArray="3,1"
6464
StrokeThickness="1"
6565
X2="1" />
@@ -75,12 +75,12 @@
7575
<Setter.Value>
7676
<Grid>
7777
<Border Background="{ThemeResource ControlFillColorDefaultBrush}"
78-
BorderBrush="{ThemeResource AccentFillColorDefaultBrush}"
78+
BorderBrush="{ThemeResource DockThemeBrush}"
7979
BorderThickness="1,3,1,1"
8080
CornerRadius="2" />
8181
<Line HorizontalAlignment="Center"
8282
Stretch="Fill"
83-
Stroke="{ThemeResource AccentFillColorDefaultBrush}"
83+
Stroke="{ThemeResource DockThemeBrush}"
8484
StrokeDashArray="3,1"
8585
StrokeThickness="1"
8686
Y2="1" />
@@ -96,12 +96,12 @@
9696
<Setter.Value>
9797
<Grid>
9898
<Border Background="{ThemeResource ControlFillColorDefaultBrush}"
99-
BorderBrush="{ThemeResource AccentFillColorDefaultBrush}"
99+
BorderBrush="{ThemeResource DockThemeBrush}"
100100
BorderThickness="1,3,1,1"
101101
CornerRadius="2" />
102102
<Line VerticalAlignment="Center"
103103
Stretch="Fill"
104-
Stroke="{ThemeResource AccentFillColorDefaultBrush}"
104+
Stroke="{ThemeResource DockThemeBrush}"
105105
StrokeDashArray="3,1"
106106
StrokeThickness="1"
107107
X2="1" />
@@ -123,7 +123,7 @@
123123

124124
<Border Grid.Column="0"
125125
Background="{ThemeResource ControlFillColorDefaultBrush}"
126-
BorderBrush="{ThemeResource AccentFillColorDefaultBrush}"
126+
BorderBrush="{ThemeResource DockThemeBrush}"
127127
BorderThickness="1,3,1,1"
128128
CornerRadius="2" />
129129

@@ -150,7 +150,7 @@
150150

151151
<Border Grid.Row="0"
152152
Background="{ThemeResource ControlFillColorDefaultBrush}"
153-
BorderBrush="{ThemeResource AccentFillColorDefaultBrush}"
153+
BorderBrush="{ThemeResource DockThemeBrush}"
154154
BorderThickness="1,3,1,1"
155155
CornerRadius="2" />
156156

@@ -183,7 +183,7 @@
183183

184184
<Border Grid.Column="1"
185185
Background="{ThemeResource ControlFillColorDefaultBrush}"
186-
BorderBrush="{ThemeResource AccentFillColorDefaultBrush}"
186+
BorderBrush="{ThemeResource DockThemeBrush}"
187187
BorderThickness="1,3,1,1"
188188
CornerRadius="2" />
189189
</Grid>
@@ -210,7 +210,7 @@
210210

211211
<Border Grid.Row="1"
212212
Background="{ThemeResource ControlFillColorDefaultBrush}"
213-
BorderBrush="{ThemeResource AccentFillColorDefaultBrush}"
213+
BorderBrush="{ThemeResource DockThemeBrush}"
214214
BorderThickness="1,3,1,1"
215215
CornerRadius="2" />
216216
</Grid>

src/WinUI.Dock/Controls/DocumentTabItem.xaml

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
CanDrag="True"
77
DragStarting="OnDragStarting"
88
DropCompleted="OnDropCompleted"
9-
IsClosable="False">
9+
IsClosable="False"
10+
Style="{StaticResource ActiveTabViewItemStyle}">
1011
<TabViewItem.Header>
1112
<Grid RenderTransformOrigin="0.5,0.5">
1213
<Grid.RenderTransform>
@@ -25,7 +26,7 @@
2526
Width="4"
2627
Height="16"
2728
Margin="0,0,6,0"
28-
Background="{ThemeResource ActiveBorderBrush}"
29+
Background="{ThemeResource DockThemeBrush}"
2930
CornerRadius="2" />
3031

3132
<TextBlock VerticalAlignment="Center"
@@ -53,26 +54,14 @@
5354
</TabViewItem.Header>
5455

5556
<TabViewItem.Content>
56-
<Border Background="{ThemeResource CardBackgroundFillColorDefaultBrush}"
57-
BorderBrush="{ThemeResource TabViewBorderBrush}"
58-
BorderThickness="1,0,1,1"
59-
CornerRadius="0,0,4,4"
57+
<Border Background="Transparent"
6058
PointerPressed="Content_PointerPressed">
6159

6260
<Border RenderTransformOrigin="0.5,0.5">
6361
<Border.RenderTransform>
6462
<ScaleTransform x:Name="ContentScale" />
6563
</Border.RenderTransform>
6664

67-
<Border.Resources>
68-
<ResourceDictionary>
69-
<StaticResource x:Key="TabViewBorderBrush"
70-
ResourceKey="DefaultTabViewBorderBrush" />
71-
<StaticResource x:Key="TabViewSelectedItemBorderBrush"
72-
ResourceKey="DefaultTabViewSelectedItemBorderBrush" />
73-
</ResourceDictionary>
74-
</Border.Resources>
75-
7665
<Grid>
7766
<Grid.RowDefinitions>
7867
<RowDefinition Height="Auto" />

src/WinUI.Dock/Controls/DocumentTabItem.xaml.cs

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,15 @@ namespace WinUI.Dock.Controls;
1010

1111
public sealed partial class DocumentTabItem : TabViewItem
1212
{
13+
private string state = string.Empty;
1314
private string dragKey = string.Empty;
1415

15-
public DocumentTabItem(TabPosition tabPosition, Document document)
16+
public DocumentTabItem(Document document)
1617
{
1718
InitializeComponent();
1819

1920
Document = document;
2021

21-
UpdateTabPosition(tabPosition);
22-
2322
ActiveIndicator.SetBinding(VisibilityProperty, new Binding
2423
{
2524
Source = Document.Root,
@@ -31,7 +30,7 @@ public DocumentTabItem(TabPosition tabPosition, Document document)
3130

3231
public Document? Document { get; private set; }
3332

34-
public void UpdateTabPosition(TabPosition tabPosition)
33+
public void UpdateVisualState(TabPosition tabPosition)
3534
{
3635
bool isBottom = tabPosition is TabPosition.Bottom;
3736

@@ -42,6 +41,15 @@ public void UpdateTabPosition(TabPosition tabPosition)
4241

4342
HeaderOptions.Visibility = isBottom ? Visibility.Collapsed : Visibility.Visible;
4443
ContentOptions.Visibility = isBottom ? Visibility.Visible : Visibility.Collapsed;
44+
45+
if (Document!.Root!.ActiveDocument == Document)
46+
{
47+
VisualStateManager.GoToState(this, state = "Active", false);
48+
}
49+
else
50+
{
51+
VisualStateManager.GoToState(this, state = "Inactive", false);
52+
}
4553
}
4654

4755
public void Detach()
@@ -51,6 +59,16 @@ public void Detach()
5159
Bindings.Update();
5260
}
5361

62+
protected override void OnApplyTemplate()
63+
{
64+
base.OnApplyTemplate();
65+
66+
if (!string.IsNullOrEmpty(state))
67+
{
68+
VisualStateManager.GoToState(this, state, false);
69+
}
70+
}
71+
5472
protected override void OnPointerEntered(PointerRoutedEventArgs e)
5573
{
5674
base.OnPointerEntered(e);

src/WinUI.Dock/Controls/PopupDocument.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<Grid x:Name="Layout">
99
<Border x:Name="Root"
1010
Background="{ThemeResource SolidBackgroundFillColorQuarternaryBrush}"
11-
BorderBrush="{ThemeResource ActiveBorderBrush}"
11+
BorderBrush="{ThemeResource DockThemeBrush}"
1212
BorderThickness="1"
1313
CornerRadius="{StaticResource ControlCornerRadius}">
1414
<Grid>

src/WinUI.Dock/Controls/TabViewEx.cs

Lines changed: 0 additions & 64 deletions
This file was deleted.

src/WinUI.Dock/DocumentGroup.xaml

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,20 @@
1010
<ControlTemplate TargetType="dock:DocumentGroup">
1111
<Grid>
1212
<VisualStateManager.VisualStateGroups>
13+
<VisualStateGroup x:Name="IsActive">
14+
<VisualState x:Name="Active">
15+
<VisualState.Setters>
16+
<Setter Target="PART_Root.BorderBrush" Value="{ThemeResource DockThemeBrush}" />
17+
</VisualState.Setters>
18+
</VisualState>
19+
20+
<VisualState x:Name="Inactive">
21+
<VisualState.Setters>
22+
<Setter Target="PART_Root.BorderBrush" Value="{ThemeResource TabViewBorderBrush}" />
23+
</VisualState.Setters>
24+
</VisualState>
25+
</VisualStateGroup>
26+
1327
<VisualStateGroup x:Name="TabPosition">
1428
<VisualState x:Name="Top">
1529
<VisualState.Setters>
@@ -50,19 +64,14 @@
5064
</VisualStateGroup>
5165
</VisualStateManager.VisualStateGroups>
5266

53-
<controls:TabViewEx x:Name="PART_Root"
54-
Padding="0"
55-
VerticalAlignment="Stretch"
56-
BorderBrush="{ThemeResource TabViewBorderBrush}"
57-
CanDragTabs="True"
58-
CanReorderTabs="True"
59-
IsAddTabButtonVisible="False"
60-
RenderTransformOrigin="0.5,0.5"
61-
SelectedIndex="{Binding SelectedIndex, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}">
62-
<controls:TabViewEx.RenderTransform>
67+
<TabView x:Name="PART_Root"
68+
RenderTransformOrigin="0.5,0.5"
69+
SelectedIndex="{Binding SelectedIndex, RelativeSource={RelativeSource TemplatedParent}, Mode=TwoWay}"
70+
Style="{StaticResource ActiveTabViewStyle}">
71+
<TabView.RenderTransform>
6372
<ScaleTransform x:Name="Scale" />
64-
</controls:TabViewEx.RenderTransform>
65-
</controls:TabViewEx>
73+
</TabView.RenderTransform>
74+
</TabView>
6675

6776
<Grid x:Name="DockTargets"
6877
Width="124"

0 commit comments

Comments
 (0)