Files
ShrlAlgoToolkit/WPFluent/Controls/ListView/ListView.xaml

165 lines
8.6 KiB
Plaintext
Raw Normal View History

2025-07-11 09:20:23 +08:00
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
2025-07-11 09:20:23 +08:00
xmlns:controls="clr-namespace:WPFluent.Controls"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
2025-07-11 09:20:23 +08:00
<ControlTemplate TargetType="{x:Type controls:ListView}" x:Key="NullViewTemplate">
<Grid>
<controls:PassiveScrollViewer
CanContentScroll="{TemplateBinding ScrollViewer.CanContentScroll}"
HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"
2025-07-11 09:20:23 +08:00
VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}"
x:Name="PART_ContentHost">
<ItemsPresenter />
</controls:PassiveScrollViewer>
<Rectangle
Opacity="0"
RadiusX="2"
RadiusY="2"
Stretch="Fill"
Stroke="Transparent"
StrokeThickness="0"
2025-07-11 09:20:23 +08:00
Visibility="Collapsed"
x:Name="PART_DisabledVisual">
<Rectangle.Fill>
<SolidColorBrush Color="{DynamicResource ControlFillColorDefault}" />
</Rectangle.Fill>
</Rectangle>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsGrouping" Value="True">
<Setter Property="ScrollViewer.CanContentScroll" Value="False" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
2025-07-11 09:20:23 +08:00
<Setter Property="Visibility" TargetName="PART_DisabledVisual" Value="Visible" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
2025-07-11 09:20:23 +08:00
<ControlTemplate TargetType="ScrollViewer" x:Key="GridViewScrollViewerTemplate">
<Grid Background="Transparent">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<DockPanel Margin="{TemplateBinding Control.Padding}">
<ScrollViewer
DockPanel.Dock="Top"
Focusable="False"
HorizontalScrollBarVisibility="Hidden"
VerticalScrollBarVisibility="Hidden">
<!-- margin-left matched to listviewitem.padding -->
<controls:GridViewHeaderRowPresenter
AllowsColumnReorder="{Binding Path=View.AllowsColumnReorder, RelativeSource={RelativeSource AncestorType=ListView}}"
ColumnHeaderContainerStyle="{Binding Path=View.ColumnHeaderContainerStyle, RelativeSource={RelativeSource AncestorType=ListView}}"
ColumnHeaderContextMenu="{Binding Path=View.ColumnHeaderContextMenu, RelativeSource={RelativeSource AncestorType=ListView}}"
ColumnHeaderTemplate="{Binding Path=View.ColumnHeaderTemplate, RelativeSource={RelativeSource AncestorType=ListView}}"
ColumnHeaderToolTip="{Binding Path=View.ColumnHeaderToolTip, RelativeSource={RelativeSource AncestorType=ListView}}"
Columns="{Binding Path=View.Columns, RelativeSource={RelativeSource AncestorType=ListView}}"
2025-07-11 09:20:23 +08:00
Margin="4"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</ScrollViewer>
<ScrollContentPresenter
CanContentScroll="{TemplateBinding ScrollViewer.CanContentScroll}"
CanHorizontallyScroll="False"
CanVerticallyScroll="False"
Content="{TemplateBinding ContentControl.Content}"
ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}"
KeyboardNavigation.DirectionalNavigation="Local"
2025-07-11 09:20:23 +08:00
Name="PART_ScrollContentPresenter"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
</DockPanel>
<ScrollBar
Cursor="Arrow"
2025-07-11 09:20:23 +08:00
Grid.Column="0"
Grid.Row="1"
Maximum="{TemplateBinding ScrollViewer.ScrollableWidth}"
Minimum="0"
2025-07-11 09:20:23 +08:00
Name="PART_HorizontalScrollBar"
Orientation="Horizontal"
2025-07-11 09:20:23 +08:00
Value="{Binding Path=HorizontalOffset, RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}"
Visibility="{TemplateBinding ScrollViewer.ComputedHorizontalScrollBarVisibility}" />
<ScrollBar
Cursor="Arrow"
2025-07-11 09:20:23 +08:00
Grid.Column="1"
Grid.Row="0"
Maximum="{TemplateBinding ScrollViewer.ScrollableHeight}"
Minimum="0"
2025-07-11 09:20:23 +08:00
Name="PART_VerticalScrollBar"
Orientation="Vertical"
2025-07-11 09:20:23 +08:00
Value="{Binding Path=VerticalOffset, RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}"
Visibility="{TemplateBinding ScrollViewer.ComputedVerticalScrollBarVisibility}" />
<DockPanel
Grid.Column="1"
2025-07-11 09:20:23 +08:00
Grid.Row="1"
LastChildFill="False">
<Rectangle
DockPanel.Dock="Left"
Fill="#FFFFFFFF"
2025-07-11 09:20:23 +08:00
Visibility="{TemplateBinding ScrollViewer.ComputedVerticalScrollBarVisibility}"
Width="1" />
<Rectangle
DockPanel.Dock="Top"
Fill="#FFFFFFFF"
2025-07-11 09:20:23 +08:00
Height="1"
Visibility="{TemplateBinding ScrollViewer.ComputedHorizontalScrollBarVisibility}" />
</DockPanel>
</Grid>
</ControlTemplate>
2025-07-11 09:20:23 +08:00
<ControlTemplate TargetType="{x:Type controls:ListView}" x:Key="GridViewTemplate">
<Border
Background="Transparent"
BorderBrush="{TemplateBinding Border.BorderBrush}"
2025-07-11 09:20:23 +08:00
BorderThickness="{TemplateBinding Border.BorderThickness}"
Name="Bd">
<controls:PassiveScrollViewer
CanContentScroll="{TemplateBinding ScrollViewer.CanContentScroll}"
Focusable="False"
2025-07-11 09:20:23 +08:00
Padding="{TemplateBinding Control.Padding}"
Template="{DynamicResource GridViewScrollViewerTemplate}">
<ItemsPresenter />
</controls:PassiveScrollViewer>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
2025-07-11 09:20:23 +08:00
<Setter Property="Background" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
2025-07-11 09:20:23 +08:00
<Style TargetType="{x:Type controls:ListView}" x:Key="ListViewStyle">
<Setter Property="Margin" Value="0" />
<Setter Property="Padding" Value="0" />
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" />
<Setter Property="ScrollViewer.CanContentScroll" Value="True" />
<Setter Property="VerticalContentAlignment" Value="Center" />
<Setter Property="VirtualizingPanel.IsVirtualizing" Value="True" />
<Setter Property="VirtualizingPanel.VirtualizationMode" Value="Standard" />
<Setter Property="SnapsToDevicePixels" Value="True" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=ViewState, RelativeSource={RelativeSource Mode=Self}}" Value="{x:Static controls:ListViewViewState.Default}">
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<VirtualizingStackPanel IsVirtualizing="{TemplateBinding VirtualizingPanel.IsVirtualizing}" VirtualizationMode="{TemplateBinding VirtualizingPanel.VirtualizationMode}" />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
<Setter Property="Template" Value="{DynamicResource NullViewTemplate}" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=ViewState, RelativeSource={RelativeSource Mode=Self}}" Value="{x:Static controls:ListViewViewState.GridView}">
<Setter Property="Template" Value="{DynamicResource GridViewTemplate}" />
</DataTrigger>
</Style.Triggers>
</Style>
<Style BasedOn="{StaticResource ListViewStyle}" TargetType="{x:Type controls:ListView}" />
</ResourceDictionary>