|
- <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:bpa="clr-namespace:BPA.UIControl"
- xmlns:converter="clr-namespace:BPA.UIControl.Converters">
-
- <ResourceDictionary.MergedDictionaries>
- <ResourceDictionary Source="pack://application:,,,/BPA.UIControl;component/Themes/Resources/Default.xaml" />
- </ResourceDictionary.MergedDictionaries>
-
- <Style x:Key="ExpandCollapseToggleStyle" TargetType="{x:Type ToggleButton}">
- <Setter Property="Foreground" Value="{Binding Foreground, RelativeSource={RelativeSource AncestorType={x:Type TreeView}}}" />
- <Setter Property="Cursor" Value="Hand" />
- <Setter Property="Focusable" Value="False" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type ToggleButton}">
- <Border Background="Transparent">
- <bpa:Icon x:Name="ExpandPath"
- Foreground="{TemplateBinding Foreground}"
- RenderTransformOrigin="0.5 0.5"
- Type="{Binding Path=(bpa:TreeViewHelper.ExpandIconType), RelativeSource={RelativeSource AncestorType=TreeView}}">
- <bpa:Icon.RenderTransform>
- <RotateTransform x:Name="transform" Angle="0" />
- </bpa:Icon.RenderTransform>
- </bpa:Icon>
- </Border>
- <ControlTemplate.Triggers>
- <Trigger Property="IsChecked" Value="True">
- <Trigger.EnterActions>
- <BeginStoryboard>
- <Storyboard>
- <DoubleAnimation Storyboard.TargetName="transform"
- Storyboard.TargetProperty="Angle"
- To="45"
- Duration="0:0:0.15">
- <DoubleAnimation.EasingFunction>
- <CubicEase EasingMode="EaseOut" />
- </DoubleAnimation.EasingFunction>
- </DoubleAnimation>
- </Storyboard>
- </BeginStoryboard>
- </Trigger.EnterActions>
- <Trigger.ExitActions>
- <BeginStoryboard>
- <Storyboard>
- <DoubleAnimation Storyboard.TargetName="transform"
- Storyboard.TargetProperty="Angle"
- To="0"
- Duration="0:0:0.15">
- <DoubleAnimation.EasingFunction>
- <CubicEase EasingMode="EaseOut" />
- </DoubleAnimation.EasingFunction>
- </DoubleAnimation>
- </Storyboard>
- </BeginStoryboard>
- </Trigger.ExitActions>
- <Setter TargetName="ExpandPath" Property="Foreground" Value="{Binding Path=(bpa:TreeViewHelper.IconFocusedBrush), RelativeSource={RelativeSource AncestorType=TreeView}}" />
- </Trigger>
- <Trigger Property="IsMouseOver" Value="True">
- <Setter TargetName="ExpandPath" Property="Foreground" Value="{Binding Path=(bpa:TreeViewHelper.IconFocusedBrush), RelativeSource={RelativeSource AncestorType=TreeView}}" />
- </Trigger>
- </ControlTemplate.Triggers>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- </Style>
-
- <Style x:Key="RubyerTreeViewItem" TargetType="{x:Type TreeViewItem}">
- <Setter Property="Background" Value="Transparent" />
- <Setter Property="Foreground" Value="{Binding Foreground, RelativeSource={RelativeSource AncestorType={x:Type TreeView}}}" />
- <Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}" />
- <Setter Property="VerticalContentAlignment" Value="{Binding VerticalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" />
- <Setter Property="HorizontalContentAlignment" Value="{Binding HorizontalContentAlignment, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" />
- <Setter Property="bpa:ControlHelper.CornerRadius" Value="{Binding Path=(bpa:ControlHelper.CornerRadius), RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}" />
- <Setter Property="Padding" Value="{Binding Path=(bpa:ItemsControlHelper.ItemPadding), RelativeSource={RelativeSource AncestorType=TreeView}}" />
- <Setter Property="Margin" Value="{Binding Path=(bpa:ItemsControlHelper.ItemMargin), RelativeSource={RelativeSource AncestorType=TreeView}}" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type TreeViewItem}">
- <Grid x:Name="root">
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="*" />
- </Grid.ColumnDefinitions>
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto" />
- <RowDefinition />
- </Grid.RowDefinitions>
-
- <ToggleButton x:Name="Expander"
- Style="{StaticResource ExpandCollapseToggleStyle}"
- ClickMode="Press"
- IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource TemplatedParent}}" />
-
- <bpa:ControlMask Grid.Column="1"
- Background="{Binding Path=(bpa:ControlHelper.FocusedBrush), RelativeSource={RelativeSource AncestorType=TreeView}}"
- CornerRadius="{Binding Path=(bpa:ControlHelper.CornerRadius), RelativeSource={RelativeSource AncestorType=TreeView}}"
- IsActive="{TemplateBinding IsSelected}"
- MaskOpacity="{Binding Path=(bpa:ControlHelper.MaskOpacity), RelativeSource={RelativeSource AncestorType=TreeView}}" />
-
- <Border x:Name="Bd"
- Grid.Column="1"
- Padding="{TemplateBinding Padding}"
- Background="{TemplateBinding Background}"
- BorderBrush="{TemplateBinding BorderBrush}"
- BorderThickness="{TemplateBinding BorderThickness}"
- SnapsToDevicePixels="true">
- <ContentPresenter x:Name="PART_Header"
- HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
- ContentSource="Header"
- SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
- </Border>
- <bpa:Transition Grid.Row="1"
- Grid.Column="1"
- IsShow="{TemplateBinding IsExpanded}"
- Type="CollapseUp">
- <ItemsPresenter x:Name="ItemsHost"
- VerticalAlignment="Top"
- Opacity="0"
- Visibility="Collapsed" />
- </bpa:Transition>
- </Grid>
-
- <ControlTemplate.Triggers>
- <Trigger Property="IsExpanded" Value="True">
- <Trigger.EnterActions>
- <BeginStoryboard>
- <Storyboard>
- <DoubleAnimation Storyboard.TargetName="ItemsHost"
- Storyboard.TargetProperty="Opacity"
- To="1"
- Duration="0:0:0.3">
- <DoubleAnimation.EasingFunction>
- <CubicEase EasingMode="EaseOut" />
- </DoubleAnimation.EasingFunction>
- </DoubleAnimation>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ItemsHost" Storyboard.TargetProperty="Visibility">
- <DiscreteObjectKeyFrame KeyTime="0" Value="{x:Static Visibility.Visible}" />
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </BeginStoryboard>
- </Trigger.EnterActions>
- <Trigger.ExitActions>
- <BeginStoryboard>
- <Storyboard>
- <DoubleAnimation Storyboard.TargetName="ItemsHost"
- Storyboard.TargetProperty="Opacity"
- To="0"
- Duration="0:0:0.3">
- <DoubleAnimation.EasingFunction>
- <CubicEase EasingMode="EaseOut" />
- </DoubleAnimation.EasingFunction>
- </DoubleAnimation>
- <ObjectAnimationUsingKeyFrames Storyboard.TargetName="ItemsHost" Storyboard.TargetProperty="Visibility">
- <DiscreteObjectKeyFrame KeyTime="0:0:0.3" Value="{x:Static Visibility.Collapsed}" />
- </ObjectAnimationUsingKeyFrames>
- </Storyboard>
- </BeginStoryboard>
- </Trigger.ExitActions>
- </Trigger>
- <Trigger Property="HasItems" Value="false">
- <Setter TargetName="Expander" Property="Visibility" Value="Hidden" />
- </Trigger>
- <Trigger Property="IsEnabled" Value="false">
- <Setter Property="Opacity" Value="{DynamicResource UnenableOpcity}" />
- </Trigger>
- <Trigger Property="IsSelected" Value="True">
- <Setter Property="Foreground" Value="{Binding Path=(bpa:ControlHelper.FocusedForegroundBrush), RelativeSource={RelativeSource AncestorType=TreeView}}" />
- </Trigger>
- </ControlTemplate.Triggers>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- <Style.Triggers>
- <Trigger Property="VirtualizingPanel.IsVirtualizing" Value="true">
- <Setter Property="ItemsPanel">
- <Setter.Value>
- <ItemsPanelTemplate>
- <VirtualizingStackPanel />
- </ItemsPanelTemplate>
- </Setter.Value>
- </Setter>
- </Trigger>
- </Style.Triggers>
- </Style>
-
- <Style x:Key="RubyerTreeView" TargetType="{x:Type TreeView}">
- <Setter Property="Background" Value="Transparent" />
- <Setter Property="BorderBrush" Value="{DynamicResource Border}" />
- <Setter Property="BorderThickness" Value="0" />
- <Setter Property="Foreground" Value="{DynamicResource DefaultForeground}" />
- <Setter Property="VerticalContentAlignment" Value="Center" />
- <Setter Property="HorizontalContentAlignment" Value="Stretch" />
- <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto" />
- <Setter Property="ScrollViewer.PanningMode" Value="Both" />
- <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
- <Setter Property="Stylus.IsFlicksEnabled" Value="False" />
- <Setter Property="SnapsToDevicePixels" Value="True" />
- <Setter Property="ItemContainerStyle" Value="{StaticResource RubyerTreeViewItem}" />
- <Setter Property="bpa:ControlHelper.CornerRadius" Value="0" />
- <Setter Property="bpa:ControlHelper.FocusedBrush" Value="{DynamicResource Mask}" />
- <Setter Property="bpa:ControlHelper.FocusedForegroundBrush" Value="{DynamicResource DefaultForeground}" />
- <Setter Property="bpa:ControlHelper.CornerRadius" Value="0" />
- <Setter Property="bpa:ControlHelper.MaskOpacity" Value="0.6" />
- <Setter Property="bpa:ItemsControlHelper.ItemMargin" Value="0" />
- <Setter Property="bpa:ItemsControlHelper.ItemPadding" Value="5" />
- <Setter Property="bpa:TreeViewHelper.IconFocusedBrush" Value="{DynamicResource Primary}" />
- <Setter Property="bpa:TreeViewHelper.RightClickToSelected" Value="True" />
- <Setter Property="bpa:TreeViewHelper.IsBindable" Value="True" />
- <Setter Property="Template">
- <Setter.Value>
- <ControlTemplate TargetType="{x:Type TreeView}">
- <Border x:Name="Bd"
- BorderBrush="{TemplateBinding BorderBrush}"
- BorderThickness="{TemplateBinding BorderThickness}"
- SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}">
- <ScrollViewer x:Name="_tv_scrollviewer_"
- Padding="{TemplateBinding Padding}"
- Background="{TemplateBinding Background}"
- CanContentScroll="false"
- Focusable="false"
- HorizontalScrollBarVisibility="{TemplateBinding ScrollViewer.HorizontalScrollBarVisibility}"
- SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
- VerticalScrollBarVisibility="{TemplateBinding ScrollViewer.VerticalScrollBarVisibility}">
- <ItemsPresenter x:Name="items" OverridesDefaultStyle="True" />
- </ScrollViewer>
- </Border>
- <ControlTemplate.Triggers>
- <Trigger Property="IsEnabled" Value="False">
- <Setter TargetName="Bd" Property="Opacity" Value="{DynamicResource UnenableOpcity}" />
- </Trigger>
- <Trigger Property="VirtualizingPanel.IsVirtualizing" Value="True">
- <Setter TargetName="_tv_scrollviewer_" Property="CanContentScroll" Value="True" />
- </Trigger>
- </ControlTemplate.Triggers>
- </ControlTemplate>
- </Setter.Value>
- </Setter>
- <Style.Triggers>
- <Trigger Property="VirtualizingPanel.IsVirtualizing" Value="True">
- <Setter Property="ItemsPanel">
- <Setter.Value>
- <ItemsPanelTemplate>
- <VirtualizingStackPanel />
- </ItemsPanelTemplate>
- </Setter.Value>
- </Setter>
- </Trigger>
- </Style.Triggers>
- </Style>
- </ResourceDictionary>
|