6 changed files with 308 additions and 4 deletions
@ -0,0 +1,116 @@ |
|||
<ResourceDictionary xmlns="https://github.com/avaloniaui" |
|||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
|||
x:ClassModifier="internal"> |
|||
|
|||
<Design.PreviewWith> |
|||
<Border Padding="20"> |
|||
<TableView Height="200" Width="400"> |
|||
<TableView.Columns> |
|||
<TableViewColumn Header="Name" Width="*" /> |
|||
<TableViewColumn Header="Value" Width="120" /> |
|||
</TableView.Columns> |
|||
</TableView> |
|||
</Border> |
|||
</Design.PreviewWith> |
|||
|
|||
<!-- ScrollViewer in TableView --> |
|||
<ControlTheme x:Key="TableViewScrollViewerTheme" TargetType="ScrollViewer"> |
|||
<Setter Property="Background" Value="Transparent" /> |
|||
<Setter Property="Template"> |
|||
<ControlTemplate> |
|||
<Grid ColumnDefinitions="*,Auto" |
|||
RowDefinitions="*,Auto"> |
|||
<DockPanel Name="ContentPanel"> |
|||
<Border Background="{DynamicResource TableViewHeaderBackground}" |
|||
Padding="{DynamicResource TableViewRowPadding}" |
|||
DockPanel.Dock="Top"> |
|||
<TableViewColumnHeadersPresenter /> |
|||
</Border> |
|||
<ScrollContentPresenter Name="PART_ContentPresenter" |
|||
Background="{TemplateBinding Background}" |
|||
HorizontalSnapPointsType="{TemplateBinding HorizontalSnapPointsType}" |
|||
VerticalSnapPointsType="{TemplateBinding VerticalSnapPointsType}" |
|||
HorizontalSnapPointsAlignment="{TemplateBinding HorizontalSnapPointsAlignment}" |
|||
VerticalSnapPointsAlignment="{TemplateBinding VerticalSnapPointsAlignment}" |
|||
Padding="{TemplateBinding Padding}" |
|||
ScrollViewer.IsScrollInertiaEnabled="{TemplateBinding IsScrollInertiaEnabled}"> |
|||
<ScrollContentPresenter.GestureRecognizers> |
|||
<ScrollGestureRecognizer CanHorizontallyScroll="{Binding CanHorizontallyScroll, ElementName=PART_ContentPresenter}" |
|||
CanVerticallyScroll="{Binding CanVerticallyScroll, ElementName=PART_ContentPresenter}" |
|||
IsScrollInertiaEnabled="{Binding (ScrollViewer.IsScrollInertiaEnabled), ElementName=PART_ContentPresenter}" /> |
|||
</ScrollContentPresenter.GestureRecognizers> |
|||
</ScrollContentPresenter> |
|||
</DockPanel> |
|||
<ScrollBar Name="PART_HorizontalScrollBar" |
|||
Orientation="Horizontal" |
|||
Grid.Column="0" |
|||
Grid.Row="1" /> |
|||
<ScrollBar Name="PART_VerticalScrollBar" |
|||
Orientation="Vertical" |
|||
Grid.Column="1" |
|||
Grid.Row="0" /> |
|||
<Panel x:Name="PART_ScrollBarsSeparator" |
|||
Grid.Row="1" |
|||
Grid.Column="1" |
|||
Background="{DynamicResource ScrollViewerScrollBarsSeparatorBackground}" |
|||
Opacity="0"> |
|||
<Panel.Transitions> |
|||
<Transitions> |
|||
<DoubleTransition Property="Opacity" Duration="0:0:0.1" /> |
|||
</Transitions> |
|||
</Panel.Transitions> |
|||
</Panel> |
|||
</Grid> |
|||
</ControlTemplate> |
|||
</Setter> |
|||
|
|||
<Style Selector="^[IsExpanded=true] /template/ Panel#PART_ScrollBarsSeparator"> |
|||
<Setter Property="Opacity" Value="1" /> |
|||
</Style> |
|||
|
|||
<Style Selector="^[AllowAutoHide=True] /template/ DockPanel#ContentPanel"> |
|||
<Setter Property="Grid.ColumnSpan" Value="2" /> |
|||
<Setter Property="Grid.RowSpan" Value="2" /> |
|||
</Style> |
|||
|
|||
</ControlTheme> |
|||
|
|||
<!-- TableView theme --> |
|||
<ControlTheme x:Key="{x:Type TableView}" TargetType="TableView"> |
|||
<Setter Property="Foreground" Value="{DynamicResource TableViewForeground}" /> |
|||
<Setter Property="Background" Value="{DynamicResource TableViewBackground}" /> |
|||
<Setter Property="BorderBrush" Value="{DynamicResource TableViewBorderBrush}" /> |
|||
<Setter Property="BorderThickness" Value="{DynamicResource TableViewBorderThickness}" /> |
|||
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" /> |
|||
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" /> |
|||
<Setter Property="ScrollViewer.IsScrollChainingEnabled" Value="True" /> |
|||
<Setter Property="ScrollViewer.IsScrollInertiaEnabled" Value="True" /> |
|||
<Setter Property="TextBlock.TextTrimming" Value="{x:Static TextTrimming.CharacterEllipsis}" /> |
|||
<Setter Property="Template"> |
|||
<ControlTemplate> |
|||
<Border ClipToBounds="{TemplateBinding ClipToBounds}" |
|||
Background="{TemplateBinding Background}" |
|||
BorderBrush="{TemplateBinding BorderBrush}" |
|||
BorderThickness="{TemplateBinding BorderThickness}" |
|||
CornerRadius="{TemplateBinding CornerRadius}"> |
|||
<ScrollViewer Name="PART_ScrollViewer" |
|||
Theme="{StaticResource TableViewScrollViewerTheme}" |
|||
VerticalSnapPointsType="{TemplateBinding (ScrollViewer.VerticalSnapPointsType)}" |
|||
HorizontalSnapPointsType="{TemplateBinding (ScrollViewer.HorizontalSnapPointsType)}" |
|||
HorizontalScrollBarVisibility="{TemplateBinding (ScrollViewer.HorizontalScrollBarVisibility)}" |
|||
VerticalScrollBarVisibility="{TemplateBinding (ScrollViewer.VerticalScrollBarVisibility)}" |
|||
IsScrollChainingEnabled="{TemplateBinding (ScrollViewer.IsScrollChainingEnabled)}" |
|||
IsScrollInertiaEnabled="{TemplateBinding (ScrollViewer.IsScrollInertiaEnabled)}" |
|||
IsDeferredScrollingEnabled="{TemplateBinding (ScrollViewer.IsDeferredScrollingEnabled)}" |
|||
AllowAutoHide="{TemplateBinding (ScrollViewer.AllowAutoHide)}" |
|||
BringIntoViewOnFocusChange="{TemplateBinding (ScrollViewer.BringIntoViewOnFocusChange)}"> |
|||
<ItemsPresenter Name="PART_ItemsPresenter" |
|||
ItemsPanel="{TemplateBinding ItemsPanel}" |
|||
Margin="{TemplateBinding Padding}" /> |
|||
</ScrollViewer> |
|||
</Border> |
|||
</ControlTemplate> |
|||
</Setter> |
|||
</ControlTheme> |
|||
|
|||
</ResourceDictionary> |
|||
@ -0,0 +1,11 @@ |
|||
<ResourceDictionary xmlns="https://github.com/avaloniaui" |
|||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
|||
x:ClassModifier="internal"> |
|||
|
|||
<Thickness x:Key="TableViewCellPadding">12,0</Thickness> |
|||
|
|||
<ControlTheme x:Key="{x:Type TableViewCell}" TargetType="TableViewCell"> |
|||
<Setter Property="Padding" Value="{DynamicResource TableViewCellPadding}" /> |
|||
</ControlTheme> |
|||
|
|||
</ResourceDictionary> |
|||
@ -0,0 +1,55 @@ |
|||
<ResourceDictionary xmlns="https://github.com/avaloniaui" |
|||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
|||
x:ClassModifier="internal"> |
|||
|
|||
<Design.PreviewWith> |
|||
<Border Margin="20" BorderThickness="1" BorderBrush="LightGray"> |
|||
<TableViewColumnHeader Content="Header" /> |
|||
</Border> |
|||
</Design.PreviewWith> |
|||
|
|||
<x:Double x:Key="TableViewColumnResizerWidth">12</x:Double> |
|||
<Thickness x:Key="TableViewColumnResizerMargin">0,-9,-6,-12</Thickness> |
|||
|
|||
<ControlTemplate x:Key="TableViewColumnHeaderResizerTemplate" TargetType="Thumb"> |
|||
<Border Background="Transparent"> |
|||
<Rectangle Width="1" |
|||
Fill="{DynamicResource TableViewColumnHeaderSeparatorBackground}" |
|||
HorizontalAlignment="Center" /> |
|||
</Border> |
|||
</ControlTemplate> |
|||
|
|||
<ControlTheme x:Key="{x:Type TableViewColumnHeader}" TargetType="TableViewColumnHeader"> |
|||
<Setter Property="FontWeight" Value="SemiBold" /> |
|||
<Setter Property="Padding" Value="{DynamicResource TableViewCellPadding}" /> |
|||
<Setter Property="HorizontalContentAlignment" Value="Left" /> |
|||
<Setter Property="VerticalContentAlignment" Value="Center" /> |
|||
<Setter Property="ClipToBounds" Value="False" /> |
|||
<Setter Property="Template"> |
|||
<ControlTemplate> |
|||
<Panel> |
|||
<ContentPresenter Name="PART_ContentPresenter" |
|||
Background="{TemplateBinding Background}" |
|||
BorderBrush="{TemplateBinding BorderBrush}" |
|||
BorderThickness="{TemplateBinding BorderThickness}" |
|||
CornerRadius="{TemplateBinding CornerRadius}" |
|||
ContentTemplate="{TemplateBinding ContentTemplate}" |
|||
Content="{TemplateBinding Content}" |
|||
Padding="{TemplateBinding Padding}" |
|||
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" |
|||
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" /> |
|||
<Thumb Name="PART_Resizer" |
|||
Template="{StaticResource TableViewColumnHeaderResizerTemplate}" |
|||
Width="{DynamicResource TableViewColumnResizerWidth}" |
|||
HorizontalAlignment="Right" |
|||
Cursor="SizeWestEast" |
|||
Margin="{DynamicResource TableViewColumnResizerMargin}" |
|||
IsEnabled="{Binding RelativeSource={RelativeSource TemplatedParent}, |
|||
Path=Column?.CanUserEffectivelyResize, FallbackValue=False}"> |
|||
</Thumb> |
|||
</Panel> |
|||
</ControlTemplate> |
|||
</Setter> |
|||
</ControlTheme> |
|||
|
|||
</ResourceDictionary> |
|||
@ -0,0 +1,67 @@ |
|||
<ResourceDictionary xmlns="https://github.com/avaloniaui" |
|||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" |
|||
x:ClassModifier="internal"> |
|||
|
|||
<Thickness x:Key="TableViewRowPadding">6,9,6,12</Thickness> |
|||
|
|||
<ControlTheme x:Key="{x:Type TableViewRow}" TargetType="TableViewRow"> |
|||
<Setter Property="Background" Value="{DynamicResource TableViewRowBackground}" /> |
|||
<Setter Property="Padding" Value="{DynamicResource TableViewRowPadding}" /> |
|||
<Setter Property="Template"> |
|||
<ControlTemplate> |
|||
<Border Name="Border" |
|||
Background="{TemplateBinding Background}" |
|||
BorderBrush="{TemplateBinding BorderBrush}" |
|||
BorderThickness="{TemplateBinding BorderThickness}" |
|||
CornerRadius="{TemplateBinding CornerRadius}" |
|||
Padding="{TemplateBinding Padding}" |
|||
VerticalAlignment="{TemplateBinding VerticalContentAlignment}" |
|||
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"> |
|||
<TableViewCellsPresenter Name="PART_CellsPresenter" /> |
|||
</Border> |
|||
</ControlTemplate> |
|||
</Setter> |
|||
|
|||
<!-- Disabled --> |
|||
<Style Selector="^:disabled /template/ Border#Border"> |
|||
<Setter Property="Background" Value="{DynamicResource TableViewRowBackgroundDisabled}" /> |
|||
<Setter Property="TextElement.Foreground" Value="{DynamicResource TableViewRowForegroundDisabled}" /> |
|||
</Style> |
|||
|
|||
<!-- PointerOver --> |
|||
<Style Selector="^:pointerover /template/ Border#Border"> |
|||
<Setter Property="Background" Value="{DynamicResource TableViewRowBackgroundPointerOver}" /> |
|||
<Setter Property="TextElement.Foreground" Value="{DynamicResource TableViewRowForegroundPointerOver}" /> |
|||
</Style> |
|||
|
|||
<!-- Pressed --> |
|||
<Style Selector="^:pressed /template/ Border#Border"> |
|||
<Setter Property="Background" Value="{DynamicResource TableViewRowBackgroundPressed}" /> |
|||
<Setter Property="TextElement.Foreground" Value="{DynamicResource TableViewRowForegroundPressed}" /> |
|||
</Style> |
|||
|
|||
<!-- Selected --> |
|||
<Style Selector="^:selected"> |
|||
|
|||
<Style Selector="^ /template/ Border#Border"> |
|||
<Setter Property="Background" Value="{DynamicResource TableViewRowBackgroundSelected}" /> |
|||
<Setter Property="TextElement.Foreground" Value="{DynamicResource TableViewRowForegroundSelected}" /> |
|||
</Style> |
|||
|
|||
<!-- Selected PointerOver --> |
|||
<Style Selector="^:pointerover /template/ Border#Border"> |
|||
<Setter Property="Background" Value="{DynamicResource TableViewRowBackgroundSelectedPointerOver}" /> |
|||
<Setter Property="TextElement.Foreground" Value="{DynamicResource TableViewRowForegroundSelectedPointerOver}" /> |
|||
</Style> |
|||
|
|||
<!-- Selected Pressed --> |
|||
<Style Selector="^:pressed /template/ Border#Border"> |
|||
<Setter Property="Background" Value="{DynamicResource TableViewRowBackgroundSelectedPressed}" /> |
|||
<Setter Property="TextElement.Foreground" Value="{DynamicResource TableViewRowForegroundSelectedPressed}" /> |
|||
</Style> |
|||
|
|||
</Style> |
|||
|
|||
</ControlTheme> |
|||
|
|||
</ResourceDictionary> |
|||
Loading…
Reference in new issue