<UserControl x:Class="GeekDesk.Control.Other.SearchResControl"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:GeekDesk.Control.Other"
             xmlns:temp="clr-namespace:GeekDesk.ViewModel.Temp"
             xmlns:hc="https://handyorg.github.io/handycontrol"
             xmlns:cvt="clr-namespace:GeekDesk.Converts"
             xmlns:cst="clr-namespace:GeekDesk.Constant"
             xmlns:DraggAnimatedPanel="clr-namespace:DraggAnimatedPanel"
             xmlns:xf="clr-namespace:XamlFlair;assembly=XamlFlair.WPF"
             xmlns:viewmodel="clr-namespace:GeekDesk.ViewModel" 
             mc:Ignorable="d" 
             d:DesignHeight="450" d:DesignWidth="800"
             >
    <UserControl.Resources>
        <Style x:Key="SearchListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
            <Setter Property="FocusVisualStyle" Value="{x:Null}" />
            <Setter Property="VerticalAlignment" Value="Center"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ListBoxItem}">
                        <Border>
                            <Border.Style>
                                <Style TargetType="Border">
                                    <Setter Property="VerticalAlignment" Value="Center"/>
                                </Style>
                            </Border.Style>
                            <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

        <Style x:Key="ImageStyle" TargetType="Image">
            <Setter Property="Width"   Value="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImageWidth, Mode=OneWay}"/>
            <Setter Property="Height"  Value="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImageHeight, Mode=OneWay}"/>
            <Setter Property="Source"  Value="{Binding BitmapImage}"/>
        </Style>
        <Style x:Key="ImageStyleNoWrite" TargetType="Image">
            <Setter Property="Width"   Value="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImageWidth, Mode=OneWay}"/>
            <Setter Property="Height"  Value="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImageHeight, Mode=OneWay}"/>
            <Setter Property="Source"  Value="{Binding BitmapImage_NoWrite}"/>
        </Style>

        <cvt:OpcityConvert x:Key="OpcityConvert"/>
        <cvt:GetWidthByWWConvert x:Key="GetWidthByWWConvert"/>
        <cvt:Visibility2BooleanConverter x:Key="Visibility2BooleanConverter"/>
    </UserControl.Resources>
    <Grid>
        <Grid>
            <WrapPanel Orientation="Horizontal" 
                           Margin="10"
                       Panel.ZIndex="1"
                           >
                <UniformGrid x:Name="VerticalUFG" 
                             xf:Animations.Primary="{xf:Animate BasedOn={StaticResource FadeIn}, Event=Loaded}"
                             xf:Animations.Secondary="{xf:Animate BasedOn={StaticResource FadeOut}, Event=None}"
                             xf:Animations.SecondaryBinding="{Binding Visibility, 
                    Converter={StaticResource Visibility2BooleanConverter}, ConverterParameter='reverse', 
                    ElementName=VerticalUFG}"
                             >
                    <!--<hc:TransitioningContentControl TransitionMode="Left2RightWithFade">-->
                    <ListBox VirtualizingPanel.VirtualizationMode="Recycling"  
                             VirtualizingPanel.IsVirtualizing="True" 
                             VirtualizingPanel.IsContainerVirtualizable="True"
                             VirtualizingPanel.ScrollUnit="Pixel"  
                             ItemsSource="{Binding}"
                             BorderThickness="0"
                             Padding="0,10,0,0"
                             x:Name="SearchListBox"
                             SelectionChanged="SearchListBox_SelectionChanged"
                             >
                        <ListBox.Template>
                            <ControlTemplate TargetType="ListBox">
                                <hc:ScrollViewer  
                                                     HorizontalScrollBarVisibility="Hidden" 
                                                     VerticalScrollBarVisibility="Auto" 
                                                     IsInertiaEnabled="True"
                                                     CanContentScroll="True"
                                                     PreviewMouseWheel="VerticalIconList_PreviewMouseWheel"
                                                     ScrollChanged="VerticalCard_ScrollChanged"
                                                     >
                                    <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderBrush}">
                                        <ItemsPresenter/>
                                    </Border>
                                </hc:ScrollViewer>
                            </ControlTemplate>
                        </ListBox.Template>

                        <ListBox.Background>
                            <SolidColorBrush Opacity="0"/>
                        </ListBox.Background>

                        <ListBox.Resources>
                            <ContextMenu x:Key="IconDialog" Width="200">
                                <MenuItem Header="管理员方式运行" Click="IconAdminStart" Tag="{Binding}"/>
                                <MenuItem Header="打开文件所在位置" Click="ShowInExplore" Tag="{Binding}"/>
                                <MenuItem Header="资源管理器菜单" Click="SystemContextMenu" Tag="{Binding}"/>
                            </ContextMenu>
                        </ListBox.Resources>

                        <ListBox.ItemContainerStyle>
                            <Style TargetType="ListBoxItem" BasedOn="{StaticResource SearchListBoxItemStyle}">
                                <Setter Property="ContextMenu" Value="{StaticResource IconDialog}"/>
                            </Style>
                        </ListBox.ItemContainerStyle>

                        <ListBox.ItemsPanel>
                            <ItemsPanelTemplate>
                                <VirtualizingStackPanel  
                                        Orientation="Vertical"   
                                        Background="#00FFFFFF"
                                        VirtualizationMode="Recycling"  
                                        IsVirtualizing="True" 
                                        IsContainerVirtualizable="True"
                                        VirtualizingPanel.ScrollUnit="Pixel"
                                           Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.WindowWidth, Mode=OneWay, 
                                                Converter={StaticResource GetWidthByWWConvert}, 
                                                ConverterParameter={x:Static cst:WidthTypeEnum.RIGHT_CARD}}"
                                            />
                            </ItemsPanelTemplate>
                        </ListBox.ItemsPanel>

                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <Border CornerRadius="8">
                                    <Border.Style>
                                        <Style TargetType="Border">
                                            <Setter Property="VerticalAlignment" Value="Center"/>
                                            <Style.Triggers>
                                                <DataTrigger Binding="{Binding Path=IsSelected, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem }}}"
                                                                 Value="True">
                                                    <Setter Property="Background">
                                                        <Setter.Value>
                                                            <SolidColorBrush Color="White" Opacity="0.68"/>
                                                        </Setter.Value>
                                                    </Setter>
                                                </DataTrigger>
                                            </Style.Triggers>
                                        </Style>
                                    </Border.Style>
                                    <WrapPanel Tag="{Binding}"
                                                   Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.WindowWidth, Mode=OneWay, 
                                                        Converter={StaticResource GetWidthByWWConvert}, 
                                                        ConverterParameter={x:Static cst:WidthTypeEnum.RIGHT_CARD_HALF}}" 
                                                   HorizontalAlignment="Left"
                                                   VerticalAlignment="Center"
                                                   hc:Poptip.HitMode="None"
                                                   hc:Poptip.Placement="BottomLeft"
                                                   Background="#00FFFFFF"
                                                   MouseEnter="SearchIcon_MouseEnter"
                                                   MouseLeave="SearchIcon_MouseLeave"
                                                   MouseLeftButtonDown="Icon_MouseLeftButtonDown"
                                                   MouseLeftButtonUp="Icon_MouseLeftButtonUp"
                                                   MouseMove="SearchIcon_MouseMove"
                                                   Margin="25,10,0,10"
                                                   >
                                        <Image Style="{StaticResource ImageStyleNoWrite}"  RenderOptions.BitmapScalingMode="HighQuality"/>
                                        <StackPanel Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.WindowWidth, Mode=OneWay, 
                                                        Converter={StaticResource GetWidthByWWConvert}, 
                                                        ConverterParameter={x:Static cst:WidthTypeEnum.RIGHT_CARD_HALF_TEXT}}" >
                                            <TextBlock
                                                   Margin="10,5,0,0"
                                                   MaxHeight="40"
                                                   FontSize="13"
                                                   TextTrimming="CharacterEllipsis"
                                                   TextAlignment="Left" 
                                                   VerticalAlignment="Center" 
                                                   Foreground="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.TextColor}"
                                                   Text="{Binding Name}"/>
                                            <TextBlock
                                                   Margin="10,10,0,0"
                                                   MaxHeight="40"
                                                   FontSize="11"
                                                   TextTrimming="CharacterEllipsis"
                                                   TextAlignment="Left" 
                                                   VerticalAlignment="Center" 
                                                   Foreground="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.TextColor}"
                                                   Text="{Binding Path}"/>
                                        </StackPanel>
                                    </WrapPanel>
                                </Border>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>

                    <!--</hc:TransitioningContentControl>-->
                </UniformGrid>
            </WrapPanel>

        </Grid>
    </Grid>
</UserControl>
