LeftCardControl.xaml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. <UserControl x:Class="GeekDesk.Control.UserControls.PannelCard.LeftCardControl"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  5. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  6. xmlns:local="clr-namespace:GeekDesk.Control.UserControls.PannelCard"
  7. xmlns:hc="https://handyorg.github.io/handycontrol"
  8. xmlns:cvt="clr-namespace:GeekDesk.Converts"
  9. xmlns:cst="clr-namespace:GeekDesk.Constant"
  10. xmlns:DraggAnimatedPanel="clr-namespace:DraggAnimatedPanel"
  11. mc:Ignorable="d"
  12. d:DesignHeight="450" d:DesignWidth="800"
  13. >
  14. <UserControl.Resources>
  15. <!--左侧栏样式动画-->
  16. <Style x:Key="MenuStyle" TargetType="ListBoxItem" BasedOn="{StaticResource ListBoxItemBaseStyle}">
  17. <Setter Property="FontSize" Value="16"/>
  18. <Setter Property="Margin" Value="0,0,0,1"/>
  19. <Setter Property="Background">
  20. <Setter.Value>
  21. <SolidColorBrush Color="Black" Opacity="0.01"/>
  22. </Setter.Value>
  23. </Setter>
  24. <Setter Property="AllowDrop" Value="True"/>
  25. <EventSetter Event="Drop" Handler="Menu_Drop"/>
  26. <EventSetter Event="PreviewDragEnter" Handler="Menu_PreviewDragEnter"/>
  27. <EventSetter Event="PreviewDragLeave" Handler="Menu_PreviewDragLeave"/>
  28. <EventSetter Event="MouseLeave" Handler="Menu_MouseLeave"/>
  29. <Setter Property="FocusVisualStyle" Value="{x:Null}" />
  30. <EventSetter Event="MouseEnter" Handler="Menu_MouseEnter"/>
  31. <EventSetter Event="PreviewMouseLeftButtonDown" Handler="ListBoxItem_MouseDown"/>
  32. <EventSetter Event="PreviewMouseRightButtonDown" Handler="ListBoxItem_PreviewMouseRightButtonDown"/>
  33. <!--<EventSetter Event="Unselected" Handler="Lbi_Unselected"/>-->
  34. <Style.Triggers>
  35. <MultiTrigger>
  36. <MultiTrigger.Conditions>
  37. <Condition Property="IsMouseOver" Value="False"/>
  38. <Condition Property="IsSelected" Value="False"/>
  39. </MultiTrigger.Conditions>
  40. <MultiTrigger.EnterActions>
  41. <BeginStoryboard>
  42. <Storyboard Timeline.DesiredFrameRate="60">
  43. <DoubleAnimation To="16" Duration="0:0:0.2" Storyboard.TargetProperty="FontSize"/>
  44. </Storyboard>
  45. </BeginStoryboard>
  46. </MultiTrigger.EnterActions>
  47. <MultiTrigger.ExitActions>
  48. <BeginStoryboard>
  49. <Storyboard Timeline.DesiredFrameRate="60">
  50. <DoubleAnimation To="18" Duration="0:0:0.001" Storyboard.TargetProperty="FontSize"/>
  51. </Storyboard>
  52. </BeginStoryboard>
  53. </MultiTrigger.ExitActions>
  54. <MultiTrigger.Setters>
  55. <Setter Property="Background">
  56. <Setter.Value>
  57. <SolidColorBrush Color="Black" Opacity="0.01"/>
  58. </Setter.Value>
  59. </Setter>
  60. <Setter Property="Foreground" Value="Black"/>
  61. </MultiTrigger.Setters>
  62. </MultiTrigger>
  63. <!--移到代码设置-->
  64. <!--<Trigger Property="IsSelected" Value="False">
  65. <Setter Property="Background" Value="Transparent"/>
  66. <Setter Property="Foreground" Value="Black"/>
  67. </Trigger>
  68. <Trigger Property="IsSelected" Value="True">
  69. <Setter Property="Background" Value="#ECECEC"/>
  70. <Setter Property="Foreground" Value="Black"/>
  71. </Trigger>
  72. <Trigger Property="IsMouseOver" Value="False">
  73. <Setter Property="Background" Value="Transparent"/>
  74. <Setter Property="Foreground" Value="Black"/>
  75. </Trigger>-->
  76. <Trigger Property="IsMouseOver" Value="False">
  77. <Setter Property="Background" Value="#00FFFFFF"/>
  78. <Setter Property="Foreground" Value="Black"/>
  79. </Trigger>
  80. </Style.Triggers>
  81. </Style>
  82. <Style x:Key="MyPoptipStyle" TargetType="Border">
  83. <Setter Property="HorizontalAlignment" Value="Center"/>
  84. <Setter Property="VerticalAlignment" Value="Center"/>
  85. <Setter Property="BorderThickness" Value="1"/>
  86. <Setter Property="Background" Value="White"/>
  87. <Setter Property="BorderBrush" Value="{DynamicResource BorderBrush}"/>
  88. <Setter Property="CornerRadius" Value="{StaticResource DefaultCornerRadius}"/>
  89. <Setter Property="Padding" Value="{StaticResource DefaultControlPadding}"/>
  90. <!--<Setter Property="Template">
  91. <Setter.Value>
  92. <ControlTemplate TargetType="hc:Poptip">
  93. <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" CornerRadius="{Binding Path=(hc:BorderElement.CornerRadius),RelativeSource={RelativeSource TemplatedParent}}">
  94. <ContentPresenter Margin="{TemplateBinding Padding}" ContentTemplateSelector="{TemplateBinding ContentTemplateSelector}" ContentStringFormat="{TemplateBinding ContentStringFormat}" ContentTemplate="{TemplateBinding ContentTemplate}"/>
  95. </Border>
  96. </ControlTemplate>
  97. </Setter.Value>
  98. </Setter>-->
  99. </Style>
  100. <cvt:MenuWidthConvert x:Key="MenuWidthConvert"/>
  101. <cvt:OpcityConvert x:Key="OpcityConvert"/>
  102. <cvt:StringAppendConvert x:Key="StringAppendConvert"/>
  103. </UserControl.Resources>
  104. <Grid Background="Transparent">
  105. <Popup Name="MyPoptip" FlowDirection="LeftToRight"
  106. PopupAnimation="None" Placement="Mouse" IsOpen="False"
  107. AllowsTransparency="True"
  108. >
  109. <Grid Background="Transparent">
  110. <Border Style="{StaticResource MyPoptipStyle}">
  111. <TextBlock Name="MyPoptipContent" HorizontalAlignment="Center" VerticalAlignment="Center" TextAlignment="Center" Text="Test" FontSize="14"/>
  112. </Border>
  113. </Grid>
  114. </Popup>
  115. <!--左侧栏-->
  116. <hc:Card x:Name="MyCard"
  117. BorderThickness="1"
  118. Effect="{DynamicResource EffectShadow2}"
  119. Margin="5,0,0,5"
  120. MouseDown="MyCard_MouseDown"
  121. PreviewMouseRightButtonDown="MyCard_PreviewMouseRightButtonDown"
  122. >
  123. <hc:Card.Background>
  124. <SolidColorBrush Color="#FFFFFFFF" hc:GeometryEffect.GeometryEffect="20" Opacity="{Binding AppConfig.CardOpacity, Mode=TwoWay, Converter={StaticResource OpcityConvert}}">
  125. </SolidColorBrush>
  126. </hc:Card.Background>
  127. <hc:Card.BorderBrush>
  128. <SolidColorBrush Color="#FFFFFFFF" Opacity="0"/>
  129. </hc:Card.BorderBrush>
  130. <hc:Card.ContextMenu>
  131. <ContextMenu Width="200">
  132. <MenuItem Header="新建菜单" Click="CreateMenu"/>
  133. <MenuItem Header="新建关联菜单" Click="CreateFolderMenu"/>
  134. <MenuItem x:Name="AlterPW1" Header="修改密码" Click="AlterPassword"/>
  135. </ContextMenu>
  136. </hc:Card.ContextMenu>
  137. <WrapPanel Orientation="Horizontal">
  138. <ListBox x:Name="MenuListBox"
  139. Padding="2,3,0,2"
  140. ItemsSource="{Binding MenuList}"
  141. Tag="{Binding AppConfig.MenuCardWidth}"
  142. BorderThickness="0" Foreground="{x:Null}"
  143. SelectedIndex="{Binding AppConfig.SelectedMenuIndex}"
  144. VirtualizingPanel.VirtualizationMode="Recycling"
  145. SelectionChanged="Menu_SelectionChanged"
  146. PreviewMouseWheel="Menu_MouseWheel"
  147. PreviewMouseRightButtonDown="MyCard_PreviewMouseRightButtonDown"
  148. >
  149. <ListBox.Resources>
  150. <ContextMenu x:Key="MenuDialog" Width="200">
  151. <MenuItem Header="新建菜单" Click="CreateMenu"/>
  152. <MenuItem Header="新建关联菜单" Click="CreateFolderMenu"/>
  153. <MenuItem Header="重命名" Click="RenameMenu" Tag="{Binding}"/>
  154. <MenuItem Header="加密此列表" Click="EncryptMenu" Tag="{Binding}"/>
  155. <MenuItem x:Name="AlterPW2" Header="修改密码" Click="AlterPassword"/>
  156. <MenuItem Header="修改图标" Click="EditMenuGeometry" Tag="{Binding}"/>
  157. <MenuItem Header="删除" Click="DeleteMenu" Tag="{Binding}"/>
  158. </ContextMenu>
  159. </ListBox.Resources>
  160. <ListBox.ItemContainerStyle>
  161. <Style TargetType="ListBoxItem" BasedOn="{StaticResource MenuStyle}">
  162. <Setter Property="ContextMenu" Value="{StaticResource MenuDialog}"/>
  163. </Style>
  164. </ListBox.ItemContainerStyle>
  165. <ListBox.Background>
  166. <SolidColorBrush Color="AliceBlue" Opacity="0"/>
  167. </ListBox.Background>
  168. <ListBox.ItemsPanel>
  169. <ItemsPanelTemplate>
  170. <DraggAnimatedPanel:DraggAnimatedPanel ItemsHeight="33" ItemsWidth="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type ListBox},AncestorLevel=1},Path=Tag, Mode=TwoWay, Converter={StaticResource MenuWidthConvert}, ConverterParameter=10}" HorizontalAlignment="Center" VerticalAlignment="Top" SwapCommand="{Binding SwapCommand, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"/>
  171. </ItemsPanelTemplate>
  172. </ListBox.ItemsPanel>
  173. <ListBox.ItemTemplate>
  174. <DataTemplate>
  175. <StackPanel Tag="{Binding}">
  176. <TextBox Text="{Binding Path=MenuName, Mode=TwoWay}"
  177. HorizontalAlignment="Left"
  178. Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type ListBox},AncestorLevel=1},Path=Tag, Mode=TwoWay, Converter={StaticResource MenuWidthConvert}, ConverterParameter=35}"
  179. FontSize="16"
  180. Height="28"
  181. VerticalAlignment="Center"
  182. TextAlignment="Left"
  183. LostFocus="LostFocusOrEnterDown"
  184. KeyDown="LostFocusOrEnterDown"
  185. Tag="{Binding}"
  186. Padding="2"
  187. BorderThickness="0"
  188. IsVisibleChanged="MenuEditWhenVisibilityChanged"
  189. Visibility="{Binding MenuEdit}"/>
  190. <StackPanel Orientation="Horizontal"
  191. IsVisibleChanged="MenuWhenVisibilityChanged"
  192. Visibility="{Binding NotMenuEdit}">
  193. <Button Background="Transparent"
  194. BorderThickness="0"
  195. hc:IconElement.Geometry="{Binding MenuGeometry}"
  196. hc:IconElement.Height="18"
  197. hc:IconElement.Width="18"
  198. IsEnabled="False"
  199. Opacity="1"
  200. Foreground="{Binding GeometryColor}"
  201. />
  202. <TextBlock Text="{Binding MenuName}"
  203. HorizontalAlignment="Center"
  204. TextAlignment="Center"
  205. VerticalAlignment="Center"
  206. />
  207. </StackPanel>
  208. </StackPanel>
  209. </DataTemplate>
  210. </ListBox.ItemTemplate>
  211. </ListBox>
  212. </WrapPanel>
  213. </hc:Card>
  214. </Grid>
  215. </UserControl>