5 changed files with 138 additions and 7 deletions
@ -0,0 +1,120 @@ |
|||||
|
using Perspex; |
||||
|
using Perspex.Controls; |
||||
|
using Perspex.Controls.Presenters; |
||||
|
using Perspex.Controls.Primitives; |
||||
|
using Perspex.Controls.Templates; |
||||
|
using Perspex.Media; |
||||
|
using Perspex.Styling; |
||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Text; |
||||
|
using System.Threading.Tasks; |
||||
|
|
||||
|
namespace TestApplication |
||||
|
{ |
||||
|
internal class SampleTabStyle : Styles |
||||
|
{ |
||||
|
public SampleTabStyle() |
||||
|
{ |
||||
|
this.AddRange(new[] |
||||
|
{ |
||||
|
new Style (s => s.Class(":container").OfType<TabControl> ()) |
||||
|
{ |
||||
|
Setters = new[] |
||||
|
{ |
||||
|
new Setter (TemplatedControl.TemplateProperty, new ControlTemplate<TabControl> (TabControlTemplate)) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
new Style(s => s.Class(":container").OfType<TabControl>().Child().Child().Child().Child().OfType<TabItem>()) |
||||
|
{ |
||||
|
Setters = new[] |
||||
|
{ |
||||
|
new Setter (TemplatedControl.TemplateProperty, new ControlTemplate<TabItem> (TabItemTemplate)), |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
new Style(s => s.Class(":container").Child().Child().Child().Child().OfType<TabItem>()) |
||||
|
{ |
||||
|
Setters = new[] |
||||
|
{ |
||||
|
new Setter(TemplatedControl.FontSizeProperty, 14.0), |
||||
|
new Setter(TemplatedControl.ForegroundProperty, Brushes.White) |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
new Style(s => s.Class(":container").Child().Child().Child().Child().OfType<TabItem>().Class("selected")) |
||||
|
{ |
||||
|
Setters = new[] |
||||
|
{ |
||||
|
new Setter(TemplatedControl.ForegroundProperty, Brushes.White), |
||||
|
new Setter(TemplatedControl.BackgroundProperty, new SolidColorBrush(Colors.White) { Opacity = 0.1 }), |
||||
|
}, |
||||
|
}, |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
public static Control TabItemTemplate(TabItem control) |
||||
|
{ |
||||
|
return new ContentPresenter |
||||
|
{ |
||||
|
DataTemplates = new DataTemplates |
||||
|
{ |
||||
|
new DataTemplate<string>(x => new Border |
||||
|
{ |
||||
|
[~Border.BackgroundProperty] = control[~TemplatedControl.BackgroundProperty], |
||||
|
Padding = new Thickness(10), |
||||
|
Child = new TextBlock |
||||
|
{ |
||||
|
VerticalAlignment = Perspex.Layout.VerticalAlignment.Center, |
||||
|
Text = x |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
Name = "headerPresenter", |
||||
|
[~ContentPresenter.ContentProperty] = control[~HeaderedContentControl.HeaderProperty], |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
public static Control TabControlTemplate(TabControl control) |
||||
|
{ |
||||
|
return new Grid |
||||
|
{ |
||||
|
ColumnDefinitions = new ColumnDefinitions |
||||
|
{ |
||||
|
new ColumnDefinition(GridLength.Auto), |
||||
|
new ColumnDefinition(new GridLength(1, GridUnitType.Star)), |
||||
|
}, |
||||
|
Children = new Controls |
||||
|
{ |
||||
|
new Border |
||||
|
{ |
||||
|
Width = 170, |
||||
|
Background = SolidColorBrush.Parse("#373749"), |
||||
|
Child = new TabStrip |
||||
|
{ |
||||
|
ItemsPanel = new FuncTemplate<IPanel>(() => new StackPanel { Orientation = Orientation.Vertical, Gap = 4 }), |
||||
|
Margin = new Thickness(0, 10, 0, 0), |
||||
|
Name = "containerTabStrip", |
||||
|
[!ItemsControl.ItemsProperty] = control[!ItemsControl.ItemsProperty], |
||||
|
[!!SelectingItemsControl.SelectedItemProperty] = control[!!SelectingItemsControl.SelectedItemProperty], |
||||
|
} |
||||
|
}, |
||||
|
new Deck |
||||
|
{ |
||||
|
Name = "deck", |
||||
|
DataTemplates = new DataTemplates |
||||
|
{ |
||||
|
new DataTemplate<TabItem>(x => (Control)control.MaterializeDataTemplate(x.Content)), |
||||
|
}, |
||||
|
[~Deck.TransitionProperty] = control[~TabControl.TransitionProperty], |
||||
|
[!ItemsControl.ItemsProperty] = control[!ItemsControl.ItemsProperty], |
||||
|
[!SelectingItemsControl.SelectedItemProperty] = control[!SelectingItemsControl.SelectedItemProperty], |
||||
|
[Grid.ColumnProperty] = 1, |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue