Compare commits
2 Commits
30030dda7a
...
8efa833c6e
| Author | SHA1 | Date |
|---|---|---|
|
|
8efa833c6e | |
|
|
d9df3bc28c |
578
App.xaml
578
App.xaml
|
|
@ -8,6 +8,582 @@
|
||||||
<ResourceDictionary>
|
<ResourceDictionary>
|
||||||
<ResourceDictionary.MergedDictionaries />
|
<ResourceDictionary.MergedDictionaries />
|
||||||
<provider:ViewModelLocator x:Key="S.ViewModelLocator.Locator" />
|
<provider:ViewModelLocator x:Key="S.ViewModelLocator.Locator" />
|
||||||
|
<Style
|
||||||
|
x:Key="{ComponentResourceKey ResourceId=S.Window.Link.Custom, TypeInTargetAssembly={x:Type h:LinkWindowBase}}"
|
||||||
|
BasedOn="{StaticResource {x:Static h:MessageWindowBase.DynamicKey}}"
|
||||||
|
TargetType="{x:Type h:LinkWindowBase}">
|
||||||
|
<Setter Property="BorderThickness" Value="2" />
|
||||||
|
<Setter Property="CaptionHeight" Value="76" />
|
||||||
|
<Setter Property="CaptionForeground" Value="{DynamicResource {x:Static h:BrushKeys.ForegroundDefault}}" />
|
||||||
|
<Setter Property="CaptionBackground" Value="{DynamicResource {x:Static h:BrushKeys.Dark0_2}}" />
|
||||||
|
<Setter Property="h:TransitionService.VisibleActions">
|
||||||
|
<Setter.Value>
|
||||||
|
<h:TransitionCollection>
|
||||||
|
<h:ImageOpacityMaskTransition HideDuration="1000"
|
||||||
|
ImageSource="pack://application:,,,/Assets/logo.png"
|
||||||
|
VisibleDuration="1500" />
|
||||||
|
</h:TransitionCollection>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
<Setter Property="Template">
|
||||||
|
<Setter.Value>
|
||||||
|
<ControlTemplate TargetType="{x:Type h:LinkWindowBase}">
|
||||||
|
<Grid Name="g_all">
|
||||||
|
<Border x:Name="Bg"
|
||||||
|
Margin="{TemplateBinding Padding}"
|
||||||
|
Background="{TemplateBinding Background}"
|
||||||
|
BorderBrush="{TemplateBinding BorderBrush}"
|
||||||
|
BorderThickness="{TemplateBinding BorderThickness}"
|
||||||
|
CornerRadius="{TemplateBinding h:Cattach.CornerRadius}"
|
||||||
|
Effect="{DynamicResource {x:Static h:EffectShadowKeys.Window}}"
|
||||||
|
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
|
||||||
|
<h:GuideHost Margin="{TemplateBinding Padding}"
|
||||||
|
IsGuide="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(h:Cattach.IsGuide)}">
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto" MinHeight="20" />
|
||||||
|
<RowDefinition Height="*" />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
|
<Border Grid.Row="0"
|
||||||
|
Height="{TemplateBinding CaptionHeight}"
|
||||||
|
Margin="0"
|
||||||
|
Background="{TemplateBinding CaptionBackground}"
|
||||||
|
CornerRadius="{DynamicResource {x:Static h:CornerRadiusKeys.Top}}">
|
||||||
|
<DockPanel Margin="0">
|
||||||
|
<Grid x:Name="PART_Header"
|
||||||
|
Width="120"
|
||||||
|
Height="30"
|
||||||
|
Margin="20,1"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Background="{DynamicResource {x:Static h:BrushKeys.Accent}}"
|
||||||
|
DockPanel.Dock="Left">
|
||||||
|
<Grid.OpacityMask>
|
||||||
|
<ImageBrush
|
||||||
|
ImageSource="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=Logo}" />
|
||||||
|
</Grid.OpacityMask>
|
||||||
|
</Grid>
|
||||||
|
<Control Background="{TemplateBinding CaptionBackground}"
|
||||||
|
DockPanel.Dock="Left"
|
||||||
|
Foreground="{TemplateBinding CaptionForeground}"
|
||||||
|
Template="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(h:Cattach.CaptionLeftTemplate)}"
|
||||||
|
WindowChrome.IsHitTestVisibleInChrome="True" />
|
||||||
|
|
||||||
|
<ListBox x:Name="list"
|
||||||
|
Margin="0"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Background="Transparent"
|
||||||
|
BorderThickness="0"
|
||||||
|
DockPanel.Dock="Left"
|
||||||
|
Foreground="{TemplateBinding CaptionForeground}"
|
||||||
|
ItemsSource="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=Links}"
|
||||||
|
SelectedIndex="0"
|
||||||
|
SelectedItem="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=CurrentLink}">
|
||||||
|
<ListBox.ItemTemplate>
|
||||||
|
<DataTemplate DataType="{x:Type h:ILinkAction}">
|
||||||
|
<Grid>
|
||||||
|
<StackPanel HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Orientation="Horizontal"
|
||||||
|
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||||
|
<TextBlock x:Name="tb_logo"
|
||||||
|
Margin="0,0,0,10"
|
||||||
|
Style="{DynamicResource {x:Static h:TextBlockKeys.Icon}}"
|
||||||
|
Text="{Binding Logo}" />
|
||||||
|
<TextBlock VerticalAlignment="Center"
|
||||||
|
Foreground="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=Foreground}"
|
||||||
|
Text="{Binding DisplayName}" />
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
<DataTemplate.Triggers>
|
||||||
|
<DataTrigger Binding="{Binding Logo}" Value="{x:Null}">
|
||||||
|
<Setter TargetName="tb_logo" Property="Visibility"
|
||||||
|
Value="Collapsed" />
|
||||||
|
</DataTrigger>
|
||||||
|
</DataTemplate.Triggers>
|
||||||
|
</DataTemplate>
|
||||||
|
</ListBox.ItemTemplate>
|
||||||
|
<ListBox.ItemsPanel>
|
||||||
|
<ItemsPanelTemplate>
|
||||||
|
<StackPanel HorizontalAlignment="Left"
|
||||||
|
Orientation="Horizontal" />
|
||||||
|
</ItemsPanelTemplate>
|
||||||
|
</ListBox.ItemsPanel>
|
||||||
|
<ListBox.ItemContainerStyle>
|
||||||
|
<Style TargetType="ListBoxItem">
|
||||||
|
<Setter Property="FontSize"
|
||||||
|
Value="{DynamicResource {x:Static h:FontSizeKeys.Header}}" />
|
||||||
|
<Setter Property="Foreground"
|
||||||
|
Value="{Binding RelativeSource={RelativeSource AncestorType=h:LinkWindowBase}, Path=CaptionForeground}" />
|
||||||
|
<Setter Property="Padding" Value="20,0,0,0" />
|
||||||
|
<Setter Property="Height" Value="45" />
|
||||||
|
<Setter Property="h:Cattach.GuideData" Value="跳转到指定功能页面" />
|
||||||
|
<Setter Property="h:Cattach.GuideTitle"
|
||||||
|
Value="{Binding DisplayName}" />
|
||||||
|
<Setter Property="h:Cattach.UseGuide" Value="True" />
|
||||||
|
<Setter Property="h:Cattach.GuideUseClick" Value="True" />
|
||||||
|
<Setter Property="Template">
|
||||||
|
<Setter.Value>
|
||||||
|
<ControlTemplate TargetType="{x:Type ListBoxItem}">
|
||||||
|
<Grid Height="{TemplateBinding Height}"
|
||||||
|
Margin="{TemplateBinding Padding}"
|
||||||
|
VerticalAlignment="Center">
|
||||||
|
<Border x:Name="underline"
|
||||||
|
BorderBrush="{TemplateBinding Foreground}"
|
||||||
|
BorderThickness="0,0,0,1.5" />
|
||||||
|
<ContentPresenter Margin="15,0"
|
||||||
|
HorizontalAlignment="Left"
|
||||||
|
VerticalAlignment="{TemplateBinding VerticalAlignment}" />
|
||||||
|
</Grid>
|
||||||
|
<ControlTemplate.Triggers>
|
||||||
|
<Trigger Property="IsSelected"
|
||||||
|
Value="false">
|
||||||
|
<Setter TargetName="underline"
|
||||||
|
Property="BorderThickness"
|
||||||
|
Value="0,0,0,0" />
|
||||||
|
</Trigger>
|
||||||
|
|
||||||
|
<Trigger Property="IsMouseOver"
|
||||||
|
Value="true">
|
||||||
|
<Setter TargetName="underline"
|
||||||
|
Property="BorderThickness"
|
||||||
|
Value="0,0,0,0" />
|
||||||
|
<Setter Property="Opacity" Value="0.8" />
|
||||||
|
<Setter Property="Cursor" Value="Hand" />
|
||||||
|
</Trigger>
|
||||||
|
|
||||||
|
<Trigger Property="IsSelected" Value="true">
|
||||||
|
<Setter TargetName="underline"
|
||||||
|
Property="BorderThickness"
|
||||||
|
Value="0,0,0,1.5" />
|
||||||
|
<Setter Property="Foreground"
|
||||||
|
Value="{DynamicResource {x:Static h:BrushKeys.Accent}}" />
|
||||||
|
</Trigger>
|
||||||
|
</ControlTemplate.Triggers>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
</ListBox.ItemContainerStyle>
|
||||||
|
</ListBox>
|
||||||
|
|
||||||
|
<StackPanel Margin="0,0,10,0"
|
||||||
|
HorizontalAlignment="Right"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
DockPanel.Dock="Right"
|
||||||
|
Orientation="Horizontal"
|
||||||
|
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||||
|
<ItemsControl
|
||||||
|
Foreground="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=CaptionForeground}"
|
||||||
|
Style="{DynamicResource {x:Static h:MvpKeys.WindowCaption}}" />
|
||||||
|
|
||||||
|
<Separator Height="20"
|
||||||
|
Background="{Binding RelativeSource={RelativeSource AncestorType=h:MessageWindowBase}, Path=CaptionForeground}"
|
||||||
|
Style="{DynamicResource {x:Static h:SeparatorKeys.Vertical}}" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
Style="{DynamicResource {x:Static h:ButtonKeys.MinimizeWindow}}" />
|
||||||
|
<Button x:Name="btnMax"
|
||||||
|
Style="{DynamicResource {x:Static h:ButtonKeys.MaximizeWindow}}" />
|
||||||
|
<Button
|
||||||
|
Style="{DynamicResource {x:Static h:ButtonKeys.CloseWindow}}" />
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
|
<Control Background="{TemplateBinding CaptionBackground}"
|
||||||
|
DockPanel.Dock="Right"
|
||||||
|
Foreground="{TemplateBinding CaptionForeground}"
|
||||||
|
Template="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(h:Cattach.CaptionRightTemplate)}"
|
||||||
|
WindowChrome.IsHitTestVisibleInChrome="True" />
|
||||||
|
|
||||||
|
<Control Background="{TemplateBinding CaptionBackground}"
|
||||||
|
Foreground="{TemplateBinding CaptionForeground}"
|
||||||
|
Template="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(h:Cattach.CaptionCenterTemplate)}"
|
||||||
|
WindowChrome.IsHitTestVisibleInChrome="True" />
|
||||||
|
</DockPanel>
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<Border x:Name="BgInner"
|
||||||
|
Grid.Row="1"
|
||||||
|
Margin="0"
|
||||||
|
Background="{TemplateBinding Background}"
|
||||||
|
CornerRadius="{DynamicResource {x:Static h:CornerRadiusKeys.Bottom}}"
|
||||||
|
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}">
|
||||||
|
<AdornerDecorator WindowChrome.IsHitTestVisibleInChrome="True">
|
||||||
|
<Grid>
|
||||||
|
<h:NotifyIcon x:Name="PART_NotifyIcon"
|
||||||
|
Command="{Binding Path=MinimizeWindowCommand, RelativeSource={RelativeSource TemplatedParent}}"
|
||||||
|
Icon="{Binding Path=NotifyIconSource, RelativeSource={RelativeSource TemplatedParent}}"
|
||||||
|
IconVisibility="Visible"
|
||||||
|
Text="{TemplateBinding Title}">
|
||||||
|
<FrameworkElement.ContextMenu>
|
||||||
|
<ContextMenu>
|
||||||
|
<MenuItem
|
||||||
|
Command="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=NotifyWindowCommand}"
|
||||||
|
CommandTarget="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}}"
|
||||||
|
Header="显示面板" />
|
||||||
|
|
||||||
|
<MenuItem
|
||||||
|
Command="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=NotifyWindowCommand}"
|
||||||
|
CommandTarget="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}}"
|
||||||
|
Header="隐藏" />
|
||||||
|
|
||||||
|
<MenuItem
|
||||||
|
Command="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=CloseWindowCommand}"
|
||||||
|
CommandTarget="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}}"
|
||||||
|
Header="退出" />
|
||||||
|
</ContextMenu>
|
||||||
|
</FrameworkElement.ContextMenu>
|
||||||
|
</h:NotifyIcon>
|
||||||
|
<Grid>
|
||||||
|
<h:DialogHost Margin="0"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
VerticalAlignment="Stretch"
|
||||||
|
Effect="{TemplateBinding AdornerDecoratorEffect}"
|
||||||
|
Identifier="windowDialog">
|
||||||
|
<Grid>
|
||||||
|
<DockPanel>
|
||||||
|
<Control DockPanel.Dock="Left"
|
||||||
|
Template="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(h:Cattach.LeftTemplate)}" />
|
||||||
|
<Control DockPanel.Dock="Right"
|
||||||
|
Template="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(h:Cattach.RightTemplate)}" />
|
||||||
|
<Control DockPanel.Dock="Bottom"
|
||||||
|
Template="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(h:Cattach.BottomTemplate)}" />
|
||||||
|
<Control DockPanel.Dock="Top"
|
||||||
|
Template="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(h:Cattach.TopTemplate)}" />
|
||||||
|
<Grid>
|
||||||
|
<h:LinkActionFrame
|
||||||
|
LinkAction="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=CurrentLink}"
|
||||||
|
UseRandomWipe="False" />
|
||||||
|
<Control
|
||||||
|
Template="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(h:Cattach.CenterTemplate)}" />
|
||||||
|
</Grid>
|
||||||
|
</DockPanel>
|
||||||
|
|
||||||
|
<h:ContainPanel x:Name="PART_LAYERGROUP"
|
||||||
|
Background="{DynamicResource {x:Static h:BrushKeys.DialogCover}}"
|
||||||
|
ClipToBounds="True"
|
||||||
|
Visibility="Collapsed">
|
||||||
|
<h:ContainPanel.AnimationAction>
|
||||||
|
<h:ScaleTransition />
|
||||||
|
</h:ContainPanel.AnimationAction>
|
||||||
|
</h:ContainPanel>
|
||||||
|
</Grid>
|
||||||
|
</h:DialogHost>
|
||||||
|
|
||||||
|
<h:MessageContainer x:Name="PART_Message" Grid.Row="1" />
|
||||||
|
<h:Snackbar x:Name="PART_SnackBar"
|
||||||
|
MessageQueue="{h:MessageQueue}" />
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
</AdornerDecorator>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
</h:GuideHost>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<ControlTemplate.Triggers>
|
||||||
|
<Trigger Property="WindowState" Value="Maximized">
|
||||||
|
<Setter TargetName="btnMax" Property="h:Cattach.Icon" Value="" />
|
||||||
|
<Setter TargetName="g_all" Property="Margin" Value="0" />
|
||||||
|
</Trigger>
|
||||||
|
<Trigger Property="WindowState" Value="Normal">
|
||||||
|
<Setter TargetName="btnMax" Property="h:Cattach.Icon" Value="" />
|
||||||
|
</Trigger>
|
||||||
|
</ControlTemplate.Triggers>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
<Style
|
||||||
|
x:Key="{ComponentResourceKey ResourceId=S.Window.Link.Disk, TypeInTargetAssembly={x:Type h:LinkWindowBase}}"
|
||||||
|
BasedOn="{StaticResource {x:Static h:MessageWindowBase.DynamicKey}}"
|
||||||
|
TargetType="{x:Type h:LinkWindowBase}">
|
||||||
|
<Setter Property="BorderThickness" Value="2" />
|
||||||
|
<Setter Property="CaptionHeight" Value="76" />
|
||||||
|
<Setter Property="CaptionForeground" Value="{DynamicResource {x:Static h:BrushKeys.ForegroundDefault}}" />
|
||||||
|
<Setter Property="CaptionBackground" Value="{DynamicResource {x:Static h:BrushKeys.Dark0_2}}" />
|
||||||
|
<Setter Property="h:TransitionService.VisibleActions">
|
||||||
|
<Setter.Value>
|
||||||
|
<h:TransitionCollection>
|
||||||
|
<h:ImageOpacityMaskTransition HideDuration="1000"
|
||||||
|
ImageSource="/HeBianGu.General.WpfControlLib;component/Resources/logo.png"
|
||||||
|
VisibleDuration="1500" />
|
||||||
|
</h:TransitionCollection>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
<Setter Property="Template">
|
||||||
|
<Setter.Value>
|
||||||
|
<ControlTemplate TargetType="{x:Type h:LinkWindowBase}">
|
||||||
|
<Grid Name="g_all">
|
||||||
|
<Border x:Name="Bg"
|
||||||
|
Margin="{TemplateBinding Padding}"
|
||||||
|
Background="{TemplateBinding Background}"
|
||||||
|
BorderBrush="{TemplateBinding BorderBrush}"
|
||||||
|
BorderThickness="{TemplateBinding BorderThickness}"
|
||||||
|
CornerRadius="{TemplateBinding h:Cattach.CornerRadius}"
|
||||||
|
Effect="{DynamicResource {x:Static h:EffectShadowKeys.Window}}"
|
||||||
|
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
|
||||||
|
<h:GuideHost Margin="{TemplateBinding Padding}"
|
||||||
|
IsGuide="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(h:Cattach.IsGuide)}">
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto" MinHeight="20" />
|
||||||
|
<RowDefinition Height="*" />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
|
<Border Grid.Row="0"
|
||||||
|
Height="{TemplateBinding CaptionHeight}"
|
||||||
|
Margin="0"
|
||||||
|
Background="{TemplateBinding CaptionBackground}"
|
||||||
|
CornerRadius="{DynamicResource {x:Static h:CornerRadiusKeys.Top}}">
|
||||||
|
<DockPanel Margin="0">
|
||||||
|
<Grid x:Name="PART_Header"
|
||||||
|
Width="120"
|
||||||
|
Height="30"
|
||||||
|
Margin="20,1"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Background="{DynamicResource {x:Static h:BrushKeys.Accent}}"
|
||||||
|
DockPanel.Dock="Left">
|
||||||
|
<Grid.OpacityMask>
|
||||||
|
<ImageBrush
|
||||||
|
ImageSource="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=Logo}" />
|
||||||
|
</Grid.OpacityMask>
|
||||||
|
</Grid>
|
||||||
|
<Control Background="{TemplateBinding CaptionBackground}"
|
||||||
|
DockPanel.Dock="Left"
|
||||||
|
Foreground="{TemplateBinding CaptionForeground}"
|
||||||
|
Template="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(h:Cattach.CaptionLeftTemplate)}"
|
||||||
|
WindowChrome.IsHitTestVisibleInChrome="True" />
|
||||||
|
|
||||||
|
<ListBox x:Name="list"
|
||||||
|
Margin="0"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Background="Transparent"
|
||||||
|
BorderThickness="0"
|
||||||
|
DockPanel.Dock="Left"
|
||||||
|
Foreground="{TemplateBinding CaptionForeground}"
|
||||||
|
ItemsSource="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=Links}"
|
||||||
|
SelectedIndex="0"
|
||||||
|
SelectedItem="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=CurrentLink}">
|
||||||
|
<ListBox.ItemTemplate>
|
||||||
|
<DataTemplate DataType="{x:Type h:ILinkAction}">
|
||||||
|
<Grid>
|
||||||
|
<StackPanel HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Orientation="Horizontal"
|
||||||
|
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||||
|
<TextBlock x:Name="tb_logo"
|
||||||
|
Margin="0,0,0,10"
|
||||||
|
Style="{DynamicResource {x:Static h:TextBlockKeys.Icon}}"
|
||||||
|
Text="{Binding Logo}" />
|
||||||
|
<TextBlock VerticalAlignment="Center"
|
||||||
|
Foreground="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem}, Path=Foreground}"
|
||||||
|
Text="{Binding DisplayName}" />
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
<DataTemplate.Triggers>
|
||||||
|
<DataTrigger Binding="{Binding Logo}" Value="{x:Null}">
|
||||||
|
<Setter TargetName="tb_logo" Property="Visibility"
|
||||||
|
Value="Collapsed" />
|
||||||
|
</DataTrigger>
|
||||||
|
</DataTemplate.Triggers>
|
||||||
|
</DataTemplate>
|
||||||
|
</ListBox.ItemTemplate>
|
||||||
|
<ListBox.ItemsPanel>
|
||||||
|
<ItemsPanelTemplate>
|
||||||
|
<StackPanel HorizontalAlignment="Left"
|
||||||
|
Orientation="Horizontal" />
|
||||||
|
</ItemsPanelTemplate>
|
||||||
|
</ListBox.ItemsPanel>
|
||||||
|
<ListBox.ItemContainerStyle>
|
||||||
|
<Style TargetType="ListBoxItem">
|
||||||
|
<Setter Property="FontSize"
|
||||||
|
Value="{DynamicResource {x:Static h:FontSizeKeys.Header}}" />
|
||||||
|
<Setter Property="Foreground"
|
||||||
|
Value="{Binding RelativeSource={RelativeSource AncestorType=h:LinkWindowBase}, Path=CaptionForeground}" />
|
||||||
|
<Setter Property="Padding" Value="20,0,0,0" />
|
||||||
|
<Setter Property="Height" Value="45" />
|
||||||
|
<Setter Property="h:Cattach.GuideData" Value="跳转到指定功能页面" />
|
||||||
|
<Setter Property="h:Cattach.GuideTitle"
|
||||||
|
Value="{Binding DisplayName}" />
|
||||||
|
<Setter Property="h:Cattach.UseGuide" Value="True" />
|
||||||
|
<Setter Property="h:Cattach.GuideUseClick" Value="True" />
|
||||||
|
<Setter Property="Template">
|
||||||
|
<Setter.Value>
|
||||||
|
<ControlTemplate TargetType="{x:Type ListBoxItem}">
|
||||||
|
<Grid Height="{TemplateBinding Height}"
|
||||||
|
Margin="{TemplateBinding Padding}"
|
||||||
|
VerticalAlignment="Center">
|
||||||
|
<Border x:Name="underline"
|
||||||
|
BorderBrush="{TemplateBinding Foreground}"
|
||||||
|
BorderThickness="0,0,0,1.5" />
|
||||||
|
<ContentPresenter Margin="15,0"
|
||||||
|
HorizontalAlignment="Left"
|
||||||
|
VerticalAlignment="{TemplateBinding VerticalAlignment}" />
|
||||||
|
</Grid>
|
||||||
|
<ControlTemplate.Triggers>
|
||||||
|
<Trigger Property="IsSelected"
|
||||||
|
Value="false">
|
||||||
|
<Setter TargetName="underline"
|
||||||
|
Property="BorderThickness"
|
||||||
|
Value="0,0,0,0" />
|
||||||
|
</Trigger>
|
||||||
|
|
||||||
|
<Trigger Property="IsMouseOver"
|
||||||
|
Value="true">
|
||||||
|
<Setter TargetName="underline"
|
||||||
|
Property="BorderThickness"
|
||||||
|
Value="0,0,0,0" />
|
||||||
|
<Setter Property="Opacity" Value="0.8" />
|
||||||
|
<Setter Property="Cursor" Value="Hand" />
|
||||||
|
</Trigger>
|
||||||
|
|
||||||
|
<Trigger Property="IsSelected" Value="true">
|
||||||
|
<Setter TargetName="underline"
|
||||||
|
Property="BorderThickness"
|
||||||
|
Value="0,0,0,1.5" />
|
||||||
|
<Setter Property="Foreground"
|
||||||
|
Value="{DynamicResource {x:Static h:BrushKeys.Accent}}" />
|
||||||
|
</Trigger>
|
||||||
|
</ControlTemplate.Triggers>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
</ListBox.ItemContainerStyle>
|
||||||
|
</ListBox>
|
||||||
|
|
||||||
|
<StackPanel Margin="0,0,10,0"
|
||||||
|
HorizontalAlignment="Right"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
DockPanel.Dock="Right"
|
||||||
|
Orientation="Horizontal"
|
||||||
|
WindowChrome.IsHitTestVisibleInChrome="True">
|
||||||
|
<ItemsControl
|
||||||
|
Foreground="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=CaptionForeground}"
|
||||||
|
Style="{DynamicResource {x:Static h:MvpKeys.WindowCaption}}" />
|
||||||
|
|
||||||
|
<Separator Height="20"
|
||||||
|
Background="{Binding RelativeSource={RelativeSource AncestorType=h:MessageWindowBase}, Path=CaptionForeground}"
|
||||||
|
Style="{DynamicResource {x:Static h:SeparatorKeys.Vertical}}" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
Style="{DynamicResource {x:Static h:ButtonKeys.MinimizeWindow}}" />
|
||||||
|
<Button x:Name="btnMax"
|
||||||
|
Style="{DynamicResource {x:Static h:ButtonKeys.MaximizeWindow}}" />
|
||||||
|
<Button
|
||||||
|
Style="{DynamicResource {x:Static h:ButtonKeys.CloseWindow}}" />
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
|
<Control Background="{TemplateBinding CaptionBackground}"
|
||||||
|
DockPanel.Dock="Right"
|
||||||
|
Foreground="{TemplateBinding CaptionForeground}"
|
||||||
|
Template="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(h:Cattach.CaptionRightTemplate)}"
|
||||||
|
WindowChrome.IsHitTestVisibleInChrome="True" />
|
||||||
|
|
||||||
|
<Control Background="{TemplateBinding CaptionBackground}"
|
||||||
|
Foreground="{TemplateBinding CaptionForeground}"
|
||||||
|
Template="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(h:Cattach.CaptionCenterTemplate)}"
|
||||||
|
WindowChrome.IsHitTestVisibleInChrome="True" />
|
||||||
|
</DockPanel>
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<Border x:Name="BgInner"
|
||||||
|
Grid.Row="1"
|
||||||
|
Margin="0"
|
||||||
|
Background="{TemplateBinding Background}"
|
||||||
|
CornerRadius="{DynamicResource {x:Static h:CornerRadiusKeys.Bottom}}"
|
||||||
|
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}">
|
||||||
|
<AdornerDecorator WindowChrome.IsHitTestVisibleInChrome="True">
|
||||||
|
<Grid>
|
||||||
|
<h:NotifyIcon x:Name="PART_NotifyIcon"
|
||||||
|
Command="{Binding Path=MinimizeWindowCommand, RelativeSource={RelativeSource TemplatedParent}}"
|
||||||
|
Icon="{Binding Path=NotifyIconSource, RelativeSource={RelativeSource TemplatedParent}}"
|
||||||
|
IconVisibility="Visible"
|
||||||
|
Text="{TemplateBinding Title}">
|
||||||
|
<FrameworkElement.ContextMenu>
|
||||||
|
<ContextMenu>
|
||||||
|
<MenuItem
|
||||||
|
Command="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=NotifyWindowCommand}"
|
||||||
|
CommandTarget="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}}"
|
||||||
|
Header="显示面板" />
|
||||||
|
|
||||||
|
<MenuItem
|
||||||
|
Command="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=NotifyWindowCommand}"
|
||||||
|
CommandTarget="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}}"
|
||||||
|
Header="隐藏" />
|
||||||
|
|
||||||
|
<MenuItem
|
||||||
|
Command="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=CloseWindowCommand}"
|
||||||
|
CommandTarget="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}}"
|
||||||
|
Header="退出" />
|
||||||
|
</ContextMenu>
|
||||||
|
</FrameworkElement.ContextMenu>
|
||||||
|
</h:NotifyIcon>
|
||||||
|
<Grid>
|
||||||
|
<h:DialogHost Margin="0"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
VerticalAlignment="Stretch"
|
||||||
|
Effect="{TemplateBinding AdornerDecoratorEffect}"
|
||||||
|
Identifier="windowDialog">
|
||||||
|
<Grid>
|
||||||
|
<DockPanel>
|
||||||
|
<Control DockPanel.Dock="Left"
|
||||||
|
Template="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(h:Cattach.LeftTemplate)}" />
|
||||||
|
<Control DockPanel.Dock="Right"
|
||||||
|
Template="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(h:Cattach.RightTemplate)}" />
|
||||||
|
<Control DockPanel.Dock="Bottom"
|
||||||
|
Template="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(h:Cattach.BottomTemplate)}" />
|
||||||
|
<Control DockPanel.Dock="Top"
|
||||||
|
Template="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(h:Cattach.TopTemplate)}" />
|
||||||
|
<Grid>
|
||||||
|
<h:LinkActionFrame
|
||||||
|
LinkAction="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=CurrentLink}"
|
||||||
|
UseRandomWipe="False" />
|
||||||
|
<Control
|
||||||
|
Template="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=(h:Cattach.CenterTemplate)}" />
|
||||||
|
</Grid>
|
||||||
|
</DockPanel>
|
||||||
|
|
||||||
|
<h:ContainPanel x:Name="PART_LAYERGROUP"
|
||||||
|
Background="{DynamicResource {x:Static h:BrushKeys.DialogCover}}"
|
||||||
|
ClipToBounds="True"
|
||||||
|
Visibility="Collapsed">
|
||||||
|
<h:ContainPanel.AnimationAction>
|
||||||
|
<h:ScaleTransition />
|
||||||
|
</h:ContainPanel.AnimationAction>
|
||||||
|
</h:ContainPanel>
|
||||||
|
</Grid>
|
||||||
|
</h:DialogHost>
|
||||||
|
|
||||||
|
<h:MessageContainer x:Name="PART_Message" Grid.Row="1" />
|
||||||
|
<h:Snackbar x:Name="PART_SnackBar"
|
||||||
|
MessageQueue="{h:MessageQueue}" />
|
||||||
|
</Grid>
|
||||||
|
</Grid>
|
||||||
|
</AdornerDecorator>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
</h:GuideHost>
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
<ControlTemplate.Triggers>
|
||||||
|
<Trigger Property="WindowState" Value="Maximized">
|
||||||
|
<Setter TargetName="btnMax" Property="h:Cattach.Icon" Value="" />
|
||||||
|
<Setter TargetName="g_all" Property="Margin" Value="0" />
|
||||||
|
</Trigger>
|
||||||
|
<Trigger Property="WindowState" Value="Normal">
|
||||||
|
<Setter TargetName="btnMax" Property="h:Cattach.Icon" Value="" />
|
||||||
|
</Trigger>
|
||||||
|
</ControlTemplate.Triggers>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
</Style>
|
||||||
|
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
|
|
||||||
</h:ApplicationBase.Resources>
|
</h:ApplicationBase.Resources>
|
||||||
</h:ApplicationBase>
|
</h:ApplicationBase>
|
||||||
|
|
@ -10,6 +10,7 @@ using HeBianGu.General.WpfControlLib;
|
||||||
using HeBianGu.Service.Mvp;
|
using HeBianGu.Service.Mvp;
|
||||||
using HeBianGu.Systems.Identity;
|
using HeBianGu.Systems.Identity;
|
||||||
using HeBianGu.Systems.Setting;
|
using HeBianGu.Systems.Setting;
|
||||||
|
using HeBianGu.Window.Link;
|
||||||
using Hopetry.Services;
|
using Hopetry.Services;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
using SystemSetting = FileUploader.Models.SystemSetting;
|
using SystemSetting = FileUploader.Models.SystemSetting;
|
||||||
|
|
@ -21,6 +22,10 @@ namespace HeBianGu.App.Disk
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class App : ApplicationBase
|
public partial class App : ApplicationBase
|
||||||
{
|
{
|
||||||
|
public new static ComponentResourceKey Custom
|
||||||
|
{
|
||||||
|
get => new ComponentResourceKey(typeof (LinkWindowBase), (object) "S.Window.Link.Custom");
|
||||||
|
}
|
||||||
protected override MainWindowBase CreateMainWindow(StartupEventArgs e)
|
protected override MainWindowBase CreateMainWindow(StartupEventArgs e)
|
||||||
{
|
{
|
||||||
return new ShellWindow();
|
return new ShellWindow();
|
||||||
|
|
|
||||||
BIN
Assets/logo.png
BIN
Assets/logo.png
Binary file not shown.
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 11 KiB |
|
|
@ -2,7 +2,7 @@
|
||||||
using HeBianGu.Service.Mvc;
|
using HeBianGu.Service.Mvc;
|
||||||
using Hopetry.ViewModel.Sync;
|
using Hopetry.ViewModel.Sync;
|
||||||
|
|
||||||
namespace HeBianGu.App.Disk;
|
namespace Hopetry.Controller;
|
||||||
|
|
||||||
// control 特性名好像绑定了 xaml
|
// control 特性名好像绑定了 xaml
|
||||||
[Controller("Sync")]
|
[Controller("Sync")]
|
||||||
|
|
|
||||||
|
|
@ -65,10 +65,6 @@
|
||||||
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
|
<PackageReference Include="Yitter.IdGenerator" Version="1.0.14" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<Folder Include="Assets\" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Page Update="View\Sync\ExplorerControl.xaml">
|
<Page Update="View\Sync\ExplorerControl.xaml">
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
|
@ -90,6 +86,7 @@
|
||||||
<None Update="minio.db">
|
<None Update="minio.db">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</None>
|
</None>
|
||||||
|
<None Remove="Assets\logo1.png" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -4,13 +4,15 @@
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:h="https://github.com/HeBianGu"
|
xmlns:h="https://github.com/HeBianGu"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
xmlns:disk="clr-namespace:HeBianGu.App.Disk"
|
||||||
|
xmlns:system="clr-namespace:System;assembly=HeBianGu.Base.WpfBase"
|
||||||
d:DesignHeight="450"
|
d:DesignHeight="450"
|
||||||
d:DesignWidth="800"
|
d:DesignWidth="800"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
|
||||||
<Grid DataContext="{StaticResource S.ViewModelLocator.Locator}">
|
<Grid DataContext="{StaticResource S.ViewModelLocator.Locator}">
|
||||||
|
|
||||||
<DockPanel Margin="0,0,10,0">
|
<DockPanel Margin="0,0,10,0">
|
||||||
<h:Row DockPanel.Dock="Top" Style="{DynamicResource {x:Static h:Row.Column10Key}}">
|
<h:Row DockPanel.Dock="Top" Margin="0 ,8,0,8" Style="{DynamicResource {x:Static h:Row.Column10Key}}">
|
||||||
<Button Grid.Column="0"
|
<Button Grid.Column="0"
|
||||||
Margin="10,0"
|
Margin="10,0"
|
||||||
Content="全部暂停"
|
Content="全部暂停"
|
||||||
|
|
@ -18,94 +20,7 @@
|
||||||
<Button Grid.Column="1" Content="全部取消"
|
<Button Grid.Column="1" Content="全部取消"
|
||||||
Style="{DynamicResource {x:Static h:ButtonKeys.BorderBrushTransparent}}" />
|
Style="{DynamicResource {x:Static h:ButtonKeys.BorderBrushTransparent}}" />
|
||||||
</h:Row>
|
</h:Row>
|
||||||
<TabControl h:Cattach.UseSearch="False">
|
<TabControl>
|
||||||
<TabItem Header="{Binding DownViewModel.AllTaskHeader}">
|
|
||||||
<ListBox h:Cattach.ItemHeight="Auto"
|
|
||||||
ItemsSource="{Binding DownViewModel.AllTasks}"
|
|
||||||
Style="{DynamicResource {x:Static h:ListBoxKeys.Single}}"
|
|
||||||
VirtualizingPanel.CacheLength="15"
|
|
||||||
VirtualizingPanel.CacheLengthUnit="Item"
|
|
||||||
VirtualizingPanel.IsVirtualizing="True"
|
|
||||||
VirtualizingPanel.IsVirtualizingWhenGrouping="True"
|
|
||||||
VirtualizingPanel.ScrollUnit="Pixel"
|
|
||||||
VirtualizingPanel.VirtualizationMode="Recycling">
|
|
||||||
<ListBox.ItemTemplate>
|
|
||||||
<DataTemplate>
|
|
||||||
<Grid Height="50" Margin="10">
|
|
||||||
<Grid.RowDefinitions>
|
|
||||||
<RowDefinition />
|
|
||||||
<RowDefinition />
|
|
||||||
</Grid.RowDefinitions>
|
|
||||||
<Grid.ColumnDefinitions>
|
|
||||||
<ColumnDefinition Width="30" />
|
|
||||||
<ColumnDefinition />
|
|
||||||
<ColumnDefinition />
|
|
||||||
<ColumnDefinition />
|
|
||||||
<ColumnDefinition />
|
|
||||||
</Grid.ColumnDefinitions>
|
|
||||||
|
|
||||||
<TextBlock Grid.RowSpan="2"
|
|
||||||
HorizontalAlignment="Center"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
FontSize="30"
|
|
||||||
Style="{DynamicResource {x:Static h:TextBlockKeys.Icon}}"
|
|
||||||
Text="" />
|
|
||||||
|
|
||||||
<TextBlock Grid.RowSpan="2"
|
|
||||||
Grid.Column="1"
|
|
||||||
HorizontalAlignment="Left"
|
|
||||||
Style="{DynamicResource {x:Static h:TextBlockKeys.Default}}"
|
|
||||||
Text="{Binding FileName}" />
|
|
||||||
|
|
||||||
<TextBlock Grid.Row="0"
|
|
||||||
Grid.Column="2"
|
|
||||||
HorizontalAlignment="Right"
|
|
||||||
Style="{DynamicResource {x:Static h:TextBlockKeys.Default}}"
|
|
||||||
Text="10:10:10" />
|
|
||||||
|
|
||||||
<TextBlock Grid.Row="0"
|
|
||||||
Grid.Column="3"
|
|
||||||
Style="{DynamicResource {x:Static h:TextBlockKeys.Default}}"
|
|
||||||
Text="{Binding FileName}" />
|
|
||||||
|
|
||||||
<h:FProgressBar Grid.Column="3"
|
|
||||||
Height="15"
|
|
||||||
CornerRadius="2"
|
|
||||||
Maximum="100"
|
|
||||||
Value="11">
|
|
||||||
</h:FProgressBar>
|
|
||||||
|
|
||||||
<TextBlock Grid.Row="1"
|
|
||||||
Grid.Column="3"
|
|
||||||
Margin="-3,0"
|
|
||||||
HorizontalAlignment="Left"
|
|
||||||
Style="{DynamicResource {x:Static h:TextBlockKeys.Default}}"
|
|
||||||
Text="{Binding FileName}" />
|
|
||||||
|
|
||||||
<!--操作-->
|
|
||||||
<StackPanel Grid.RowSpan="2"
|
|
||||||
Grid.Column="4"
|
|
||||||
HorizontalAlignment="Center"
|
|
||||||
VerticalAlignment="Center"
|
|
||||||
Orientation="Horizontal">
|
|
||||||
<Button h:Cattach.Icon="" /> <!--暂停-->
|
|
||||||
<Button h:Cattach.Icon="" h:Cattach.IconSize="13" /> <!--取消-->
|
|
||||||
<Button h:Cattach.Icon="" h:Cattach.IconSize="15"
|
|
||||||
Command="{Binding RelativeSource={RelativeSource AncestorType=ListBox},
|
|
||||||
Path= DataContext.DownViewModel.OpenDownItemFolder }"
|
|
||||||
CommandParameter="{Binding}" /> <!--打开所在文件夹-->
|
|
||||||
</StackPanel>
|
|
||||||
|
|
||||||
<Border Grid.RowSpan="11"
|
|
||||||
Grid.ColumnSpan="11"
|
|
||||||
Margin="0,0,0,-8"
|
|
||||||
BorderBrush="{DynamicResource {x:Static h:BrushKeys.BorderBrushDefault}}"
|
|
||||||
BorderThickness="0,0,0,1" />
|
|
||||||
</Grid>
|
|
||||||
</DataTemplate>
|
|
||||||
</ListBox.ItemTemplate>
|
|
||||||
</ListBox>
|
|
||||||
</TabItem>
|
|
||||||
<TabItem Header="{Binding DownViewModel.RunningTaskHeader}">
|
<TabItem Header="{Binding DownViewModel.RunningTaskHeader}">
|
||||||
<ListBox h:Cattach.ItemHeight="Auto"
|
<ListBox h:Cattach.ItemHeight="Auto"
|
||||||
ItemsSource="{Binding DownViewModel.RunningTasksView}"
|
ItemsSource="{Binding DownViewModel.RunningTasksView}"
|
||||||
|
|
@ -262,7 +177,7 @@
|
||||||
HorizontalAlignment="Center"
|
HorizontalAlignment="Center"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Orientation="Horizontal">
|
Orientation="Horizontal">
|
||||||
<Button h:Cattach.Icon="" /> <!--暂停-->
|
<Button h:Cattach.Icon="" /> <!--暂停 -->
|
||||||
<Button h:Cattach.Icon="" h:Cattach.IconSize="13" /> <!--取消-->
|
<Button h:Cattach.Icon="" h:Cattach.IconSize="13" /> <!--取消-->
|
||||||
<Button h:Cattach.Icon="" h:Cattach.IconSize="15"
|
<Button h:Cattach.Icon="" h:Cattach.IconSize="15"
|
||||||
Command="{Binding RelativeSource={RelativeSource AncestorType=ListBox},
|
Command="{Binding RelativeSource={RelativeSource AncestorType=ListBox},
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
Width="1266"
|
Width="1266"
|
||||||
Height="720"
|
Height="720"
|
||||||
BorderBrush="Transparent"
|
BorderBrush="Transparent"
|
||||||
Style="{DynamicResource {x:Static h:LinkWindowBase.DefaultKey}}"
|
Style="{DynamicResource {x:Static local:App.Custom}}"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
<!--<h:Cattach.RightTemplate>
|
<!--<h:Cattach.RightTemplate>
|
||||||
<ControlTemplate>
|
<ControlTemplate>
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ using Hopetry.Provider;
|
||||||
using Hopetry.Services;
|
using Hopetry.Services;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using SqlSugar;
|
using SqlSugar;
|
||||||
using System.Windows.Data;
|
|
||||||
|
|
||||||
namespace Hopetry.ViewModel.Send;
|
namespace Hopetry.ViewModel.Send;
|
||||||
|
|
||||||
|
|
@ -20,15 +19,16 @@ namespace Hopetry.ViewModel.Send;
|
||||||
public class DownViewModel : MvcViewModelBase
|
public class DownViewModel : MvcViewModelBase
|
||||||
{
|
{
|
||||||
private readonly MinioService _minioService;
|
private readonly MinioService _minioService;
|
||||||
|
|
||||||
// todo 完成取消下载及暂停下载逻辑
|
public RelayCommand<MinioDownloadTask> OpenDownItemFolder { get; set; }
|
||||||
public RelayCommand<DownItem> OpenDownItemFolder { get; set; }
|
|
||||||
public RelayCommand<string> LoadData { get; set; }
|
|
||||||
private readonly ConcurrentQueue<MinioDownloadTask> _taskQueue = new();
|
private readonly ConcurrentQueue<MinioDownloadTask> _taskQueue = new();
|
||||||
private SemaphoreSlim _concurrencySemaphore;
|
private SemaphoreSlim _concurrencySemaphore;
|
||||||
|
|
||||||
private CancellationTokenSource _processingCts = new();
|
private CancellationTokenSource _processingCts = new();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 全部任务动态标题
|
||||||
|
/// </summary>
|
||||||
private string _allTaskHeader;
|
private string _allTaskHeader;
|
||||||
|
|
||||||
public string AllTaskHeader
|
public string AllTaskHeader
|
||||||
|
|
@ -66,10 +66,8 @@ public class DownViewModel : MvcViewModelBase
|
||||||
}
|
}
|
||||||
|
|
||||||
// 绑定属性
|
// 绑定属性
|
||||||
public ObservableCollection<MinioDownloadTask> Tasks { get; } = new();
|
public ObservableCollection<MinioDownloadTask> AllTasks { get;set; } = new();
|
||||||
|
|
||||||
// 所有任务
|
|
||||||
public ObservableCollection<MinioDownloadTask> AllTasks { get; set; }
|
|
||||||
|
|
||||||
public ICollectionView RunningTasksView { get; set; }
|
public ICollectionView RunningTasksView { get; set; }
|
||||||
public ICollectionView FinishedTasksView { get; set; }
|
public ICollectionView FinishedTasksView { get; set; }
|
||||||
|
|
@ -133,28 +131,28 @@ public class DownViewModel : MvcViewModelBase
|
||||||
AllTasks = new ObservableCollection<MinioDownloadTask>(data);
|
AllTasks = new ObservableCollection<MinioDownloadTask>(data);
|
||||||
AllTaskHeader = $"全部({AllTasks.Count})";
|
AllTaskHeader = $"全部({AllTasks.Count})";
|
||||||
Console.WriteLine(JsonConvert.SerializeObject(data));
|
Console.WriteLine(JsonConvert.SerializeObject(data));
|
||||||
OpenDownItemFolder = new RelayCommand<DownItem>(DoOpenDownItemFolder);
|
OpenDownItemFolder = new RelayCommand<MinioDownloadTask>(DoOpenDownItemFolder);
|
||||||
// 命令初始化
|
// 命令初始化
|
||||||
// AddTaskCommand = new RelayCommand(AddTask, CanAddTask);
|
// AddTaskCommand = new RelayCommand(AddTask, CanAddTask);
|
||||||
// 修正:使用 CollectionViewSource 确保通知
|
// 修正:使用 CollectionViewSource 确保通知
|
||||||
var cvsRunning = new CollectionViewSource { Source = AllTasks };
|
var cvsRunning = new CollectionViewSource { Source = AllTasks };
|
||||||
cvsRunning.Filter += (s, e) =>
|
cvsRunning.Filter += (s, e) =>
|
||||||
{
|
{
|
||||||
var b = ((MinioDownloadTask)e.Item).Status == "下载中";
|
var b = ((MinioDownloadTask)e.Item).Status is "下载中" or "等待中" or "已暂停";
|
||||||
e.Accepted = b;
|
e.Accepted = b;
|
||||||
};
|
};
|
||||||
RunningTasksView = cvsRunning.View;
|
RunningTasksView = cvsRunning.View;
|
||||||
|
|
||||||
var cvsPaused = new CollectionViewSource { Source = AllTasks };
|
var cvsFinished = new CollectionViewSource { Source = AllTasks };
|
||||||
cvsPaused.Filter += (s, e) =>
|
cvsFinished.Filter += (s, e) =>
|
||||||
{
|
{
|
||||||
var b = ((MinioDownloadTask)e.Item).Status == "已完成";
|
var b = ((MinioDownloadTask)e.Item).Status == "已完成";
|
||||||
e.Accepted = b;
|
e.Accepted = b;
|
||||||
};
|
};
|
||||||
FinishedTasksView = cvsPaused.View;
|
FinishedTasksView = cvsFinished.View;
|
||||||
if (FinishedTasksView is ListCollectionView finishListView)
|
if (FinishedTasksView is ListCollectionView finishListView)
|
||||||
{
|
{
|
||||||
FinishedTaskHeader = $"下载中({finishListView.Count})";
|
FinishedTaskHeader = $"已完成({finishListView.Count})";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (RunningTasksView is ListCollectionView runningListView)
|
if (RunningTasksView is ListCollectionView runningListView)
|
||||||
|
|
@ -199,7 +197,7 @@ public class DownViewModel : MvcViewModelBase
|
||||||
private void AddTask()
|
private void AddTask()
|
||||||
{
|
{
|
||||||
var task = new MinioDownloadTask(_minioService, NewBucket, NewObjectName);
|
var task = new MinioDownloadTask(_minioService, NewBucket, NewObjectName);
|
||||||
Tasks.Add(task);
|
AllTasks.Add(task);
|
||||||
_taskQueue.Enqueue(task);
|
_taskQueue.Enqueue(task);
|
||||||
RaisePropertyChanged(nameof(NewBucket));
|
RaisePropertyChanged(nameof(NewBucket));
|
||||||
RaisePropertyChanged(nameof(NewObjectName));
|
RaisePropertyChanged(nameof(NewObjectName));
|
||||||
|
|
@ -266,7 +264,7 @@ public class DownViewModel : MvcViewModelBase
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DoOpenDownItemFolder(DownItem para)
|
public void DoOpenDownItemFolder(MinioDownloadTask para)
|
||||||
{
|
{
|
||||||
Console.WriteLine($"点击了什么值:{JsonConvert.SerializeObject(para)}");
|
Console.WriteLine($"点击了什么值:{JsonConvert.SerializeObject(para)}");
|
||||||
Process.Start("explorer.exe", para.FilePath);
|
Process.Start("explorer.exe", para.FilePath);
|
||||||
|
|
|
||||||
|
|
@ -5,19 +5,22 @@ using System.Collections.ObjectModel;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Windows;
|
using System.Windows;
|
||||||
using System.Windows.Threading;
|
using System.Windows.Threading;
|
||||||
|
using Hopetry.Provider;
|
||||||
|
|
||||||
namespace HeBianGu.App.Disk
|
namespace HeBianGu.App.Disk
|
||||||
{
|
{
|
||||||
[ViewModel("Send")]
|
[ViewModel("Send")]
|
||||||
internal class SendViewModel : MvcViewModelBase
|
internal class SendViewModel : MvcViewModelBase
|
||||||
{
|
{
|
||||||
protected override void Init()
|
public SendViewModel()
|
||||||
{
|
{
|
||||||
LinkActions.Add(new LinkAction() { Action = "Down", Controller = "Send", DisplayName = "正在下载", Logo = "\xe6f3" });
|
LinkActions.Add(new LinkAction() { Action = "Down", Controller = "Send", DisplayName = "正在下载", Logo = "\xe6f3" });
|
||||||
LinkActions.Add(new LinkAction() { Action = "UpLoad", Controller = "Send", DisplayName = "正在上传", Logo = "\xe6fe" });
|
LinkActions.Add(new LinkAction() { Action = "UpLoad", Controller = "Send", DisplayName = "正在上传", Logo = "\xe6fe" });
|
||||||
LinkActions.Add(new LinkAction() { Action = "CompleteUpload", Controller = "Send", DisplayName = "上传完成", Logo = "\xe613" });
|
LinkActions.Add(new LinkAction() { Action = "CompleteUpload", Controller = "Send", DisplayName = "上传完成", Logo = "\xe613" });
|
||||||
//LinkActions.Add(new LinkAction() { Action = "Down", Controller = "Send", DisplayName = "文件快传", Logo = "\xe764" });
|
//LinkActions.Add(new LinkAction() { Action = "Down", Controller = "Send", DisplayName = "文件快传", Logo = "\xe764" });
|
||||||
|
}
|
||||||
|
protected override void Init()
|
||||||
|
{
|
||||||
|
|
||||||
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(() =>
|
Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Loaded, new Action(() =>
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue