<UserControl x:Class="PDF_Master.Views.BOTA.OutLineControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:bota="clr-namespace:PDF_Master.ViewModels.BOTA" xmlns:customcontrol="clr-namespace:PDF_Master.CustomControl" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:local="clr-namespace:PDF_Master.Views.BOTA" xmlns:mainPageLoader="clr-namespace:PDF_Master.Strings.MainPage" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:model="clr-namespace:PDF_Master.Model.BOTA" d:DataContext="{d:DesignInstance Type=bota:OutLineControlViewModel}" d:DesignWidth="400" KeyDown="UserControl_KeyDown" mc:Ignorable="d"> <UserControl.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="pack://application:,,,/PDF Master;component/Styles/OutLineItemStyle.xaml" /> </ResourceDictionary.MergedDictionaries> <ContextMenu x:Key="OutLineItemMenu"> <MenuItem x:Name="AddMenu" Click="AddMenu_Click" Header="{x:Static mainPageLoader:MainPage.Outline_Add}" /> <MenuItem x:Name="AddChlidMenu" Click="AddChlidMenu_Click" Header="{x:Static mainPageLoader:MainPage.Outline_AddSub}" /> <MenuItem x:Name="AddParentMenu" Click="AddParentMenu_Click" Header="{x:Static mainPageLoader:MainPage.Outline_AddLevel}" IsEnabled="{Binding CanAddParent}" /> <MenuItem x:Name="DeleteMenu" Click="DeleteMenu_Click" Header="{x:Static mainPageLoader:MainPage.Outline_Delete}" /> <MenuItem x:Name="RenameMenu" Click="RenameMenu_Click" Header="{x:Static mainPageLoader:MainPage.Outline_Rename}" /> <MenuItem x:Name="ChangeDestinationMenu" Click="ChangeDestinationMenu_Click" Header="{x:Static mainPageLoader:MainPage.Outline_Change}" /> <MenuItem x:Name="UpgradeMenu" Click="UpgradeMenu_Click" Header="{x:Static mainPageLoader:MainPage.Outline_Up}" IsEnabled="{Binding CanUp}" /> <MenuItem x:Name="DowngradeMenu" Click="DowngradeMenu_Click" Header="{x:Static mainPageLoader:MainPage.Outline_Down}" IsEnabled="{Binding CanDown}" /> </ContextMenu> <!-- 圆角 https://wpf.2000things.com/2012/05/11/556-clipping-to-a-border-using-an-opacity-mask --> <ToolTip x:Key="OutLineItemToolTip" Width="320" Height="120" Closed="ToolTip_Closed" Opened="ToolTip_Opened" Style="{StaticResource ErrorRoundedTooltip}"> <customcontrol:CustomImageControl Width="320" Height="120" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" /> </ToolTip> </ResourceDictionary> </UserControl.Resources> <Grid Background="Transparent"> <Grid.RowDefinitions> <RowDefinition Height="48" /> <RowDefinition /> </Grid.RowDefinitions> <Border BorderBrush="{StaticResource color.field.border.norm}" BorderThickness="0,0,0,1"> <Grid x:Name="Header"> <TextBlock x:Name="TxtTitle" Margin="16,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Center" FontFamily="Segoe UI" FontSize="14" FontWeight="SemiBold" Text="{Binding T_Title}" /> <StackPanel HorizontalAlignment="Right" Orientation="Horizontal"> <customcontrol:PathButton x:Name="BtnAdd" Width="32" Height="32" HorizontalContentAlignment="Center" Click="BtnAdd_Click" CornerRadius="4" Icon="{StaticResource Ic_AddButtonPath}" IconFill="#616469" IconHeight="16" IconMouseOver="{StaticResource Ic_AddButtonPath}" IconMouseOverFill="#616469" IconPress="{StaticResource Ic_AddButtonPath}" IconPressFill="#616469" IconWidth="16" MouseDownBackground="{StaticResource color.item-state.sel.bg.lv3}" MouseDownBorderBrush="{StaticResource color.item-state.sel.border.lv3}" MouseOverBackground="{StaticResource color.item-state.hov.bg}" /> <customcontrol:PathButton x:Name="BtnMore" Width="32" Height="32" HorizontalContentAlignment="Center" Click="BtnMore_Click" CornerRadius="4" Icon="{StaticResource Ic_MoreButtonPath}" IconFill="#616469" IconHeight="16" IconMouseOver="{StaticResource Ic_MoreButtonPath}" IconMouseOverFill="#616469" IconPress="{StaticResource Ic_MoreButtonPath}" IconPressFill="#616469" IconWidth="16" MouseDownBackground="{StaticResource color.item-state.sel.bg.lv3}" MouseDownBorderBrush="{StaticResource color.item-state.sel.border.lv3}" MouseOverBackground="{StaticResource color.item-state.hov.bg}"> <customcontrol:PathButton.ContextMenu> <ContextMenu Name="MenuMore"> <ContextMenu.ItemContainerStyle> <Style BasedOn="{StaticResource GlobalMenuItem}" TargetType="MenuItem"> <Setter Property="Padding" Value="-25,7,-40,7" /> <Setter Property="VerticalContentAlignment" Value="Center" /> </Style> </ContextMenu.ItemContainerStyle> <MenuItem Name="MenuExpandAll" Command="{Binding ExpandAllCommand}" CommandParameter="{Binding Outlinelist}" Header="{Binding T_Expand}" /> <MenuItem Name="MenuCollapseAll" Command="{Binding CollapseAllCommand}" CommandParameter="{Binding Outlinelist}" Header="{Binding T_Collapse}" /> <MenuItem Name="MenuDeleteAll" Command="{Binding DeleteAllCommand}" Header="{Binding T_RemoveAll}" /> </ContextMenu> </customcontrol:PathButton.ContextMenu> </customcontrol:PathButton> </StackPanel> </Grid> </Border> <StackPanel x:Name="FirstOulineLine" Margin="10,0" VerticalAlignment="Bottom" Orientation="Horizontal" Visibility="{Binding IsInsertHead, Converter={StaticResource BoolToVisible}}"> <Ellipse Width="8" Height="8" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Fill="White" Stroke="#FF0078D7" StrokeThickness="1.5" /> <Rectangle Width="{Binding ElementName=Header, Path=ActualWidth}" Height="1.5" Margin="-1,0,0,2" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Fill="#FF0078D7" StrokeDashArray="2" /> </StackPanel> <Grid Grid.Row="1" DragLeave="Grid_DragLeave" DragOver="Grid_DragOver"> <StackPanel x:Name="NoOutlineStackPanel" VerticalAlignment="Center" Visibility="{Binding Outlinelist.Count, Converter={StaticResource ListCountToVisible}}"> <Image Width="128" Height="128" Source="pack://application:,,,/PDF Master;component/Resources/BOTA/no_outline.png" /> <TextBlock Height="22" HorizontalAlignment="Center" FontFamily="Segoe UI" FontSize="14" Text="No Outlines" /> <TextBlock Width="168" HorizontalAlignment="Center" FontFamily="Segoe UI" FontSize="12" Foreground="#94989C" Text="Please right-click on the selected text or click the 'Add' button on the upper right to create an outline." TextWrapping="Wrap" /> </StackPanel> <TreeView x:Name="OutlineView" Grid.Row="1" AllowDrop="True" Background="Transparent" BorderThickness="0" Drop="OutlineView_Drop" ItemsSource="{Binding Outlinelist}" PreviewMouseDoubleClick="OutlineView_PreviewMouseDoubleClick" PreviewMouseDown="OutlineView_PreviewMouseDown" PreviewMouseLeftButtonUp="OutlineView_PreviewMouseLeftButtonUp" PreviewMouseMove="OutlineView_PreviewMouseMove" ScrollViewer.HorizontalScrollBarVisibility="Disabled" VirtualizingPanel.ScrollUnit="Pixel" Visibility="{Binding ElementName=NoOutlineStackPanel, Path=Visibility, Converter={StaticResource UnVisivleConvert}}"> <TreeView.ItemTemplate> <HierarchicalDataTemplate DataType="{x:Type model:OutlineNode}" ItemsSource="{Binding Path=Chlidlist}"> <Grid> <Grid x:Name="ContentPanel"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition Width="auto" /> </Grid.ColumnDefinitions> <TextBlock x:Name="Content" VerticalAlignment="Center" Text="{Binding Outline.Title}" TextWrapping="Wrap" Visibility="{Binding IsReName, Mode=TwoWay}" /> <TextBlock x:Name="PageIndex" Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" Text="{Binding PageIndex}" Visibility="Collapsed" /> </Grid> <StackPanel HorizontalAlignment="Stretch" Orientation="Horizontal" Visibility="{Binding IsInsertNextLayer, Converter={StaticResource BoolToVisible}}"> <Ellipse Width="8" Height="8" Margin="0,0,0,0" VerticalAlignment="Bottom" Fill="White" Stroke="#FF0078D7" StrokeThickness="1.5" /> <Line Margin="-1,0,0,2" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Stroke="#FF0078D7" StrokeDashArray="2" StrokeThickness="1.5" X1="0" X2="{Binding ElementName=ContentPanel, Path=ActualWidth}" /> </StackPanel> <Grid x:Name="RenameGrid" LostFocus="RenameGrid_LostFocus" Visibility="{Binding ElementName=Content, Path=Visibility, Mode=TwoWay, Converter={StaticResource UnVisivleConvert}}"> <TextBox x:Name="ReName" HorizontalAlignment="Left" VerticalAlignment="Center" IsVisibleChanged="ReName_IsVisibleChanged" KeyDown="ReName_KeyDown" Style="{StaticResource TextBoxStyleRadius}" TextWrapping="WrapWithOverflow" /> </Grid> </Grid> </HierarchicalDataTemplate> </TreeView.ItemTemplate> <TreeView.ItemContainerStyle> <Style BasedOn="{StaticResource OutLineItemStyle}" TargetType="TreeViewItem"> <Setter Property="ContextMenu" Value="{StaticResource OutLineItemMenu}" /> <Setter Property="ToolTip" Value="{StaticResource OutLineItemToolTip}" /> <EventSetter Event="PreviewMouseLeftButtonUp" Handler="TreeViewItem_PreviewMouseLeftButtonUp" /> <EventSetter Event="PreviewMouseLeftButtonDown" Handler="TreeViewItem_PreviewMouseLeftButtonDown" /> </Style> </TreeView.ItemContainerStyle> </TreeView> </Grid> </Grid> </UserControl>