XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEToolBox

【WPF】XFE工具箱

公开
关注 0 Fork 0 Star 0
UTF-8
<Window x:Class="XFEToolBox.Client.Views.Windows.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:windows="clr-namespace:XFEToolBox.Client.ViewModel.Windows"
        xmlns:controls="clr-namespace:XFEToolBox.WpfCore.Controls;assembly=XFEToolBox.WpfCore"
        mc:Ignorable="d"
        d:DataContext="{d:DesignInstance Type=windows:MainWindowViewModel}"
        Title="XFE工具箱" Height="460" Width="730" MinHeight="450" MinWidth="720" WindowState="Normal" Background="Transparent" WindowStyle="None" AllowsTransparency="True" WindowStartupLocation="CenterScreen" Icon="/Resources/Icon/XFEToolBoxIcon.ico" Loaded="Window_Loaded">
    <Window.Resources>
        <Style x:Key="AccountEntryStyle" TargetType="Border">
            <Setter Property="Height" Value="46"/>
            <Setter Property="Margin" Value="9"/>
            <Setter Property="Padding" Value="8,5"/>
            <Setter Property="VerticalAlignment" Value="Bottom"/>
            <Setter Property="Background">
                <Setter.Value><SolidColorBrush Color="#FFFFFF"/></Setter.Value>
            </Setter>
            <Setter Property="BorderBrush">
                <Setter.Value><SolidColorBrush Color="#4D9898E7"/></Setter.Value>
            </Setter>
            <Setter Property="BorderThickness" Value="1"/>
            <Setter Property="CornerRadius" Value="13"/>
            <Setter Property="Cursor" Value="Hand"/>
            <Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>
            <Setter Property="RenderTransform">
                <Setter.Value><ScaleTransform ScaleX="1" ScaleY="1"/></Setter.Value>
            </Setter>
            <Setter Property="Effect">
                <Setter.Value><DropShadowEffect Color="#7777C9" BlurRadius="14" ShadowDepth="3" Opacity="0"/></Setter.Value>
            </Setter>
            <Style.Triggers>
                <EventTrigger RoutedEvent="MouseEnter">
                    <BeginStoryboard>
                        <Storyboard>
                            <ColorAnimation Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" To="#F7F7FF" Duration="0:0:0.16"/>
                            <ColorAnimation Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" To="#9898E7" Duration="0:0:0.16"/>
                            <DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)" To="1.025" Duration="0:0:0.16"/>
                            <DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)" To="1.025" Duration="0:0:0.16"/>
                            <DoubleAnimation Storyboard.TargetProperty="(UIElement.Effect).(DropShadowEffect.Opacity)" To="0.22" Duration="0:0:0.16"/>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
                <EventTrigger RoutedEvent="MouseLeave">
                    <BeginStoryboard>
                        <Storyboard>
                            <ColorAnimation Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" To="#FFFFFF" Duration="0:0:0.18"/>
                            <ColorAnimation Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)" To="#4D9898E7" Duration="0:0:0.18"/>
                            <DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)" To="1" Duration="0:0:0.18"/>
                            <DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)" To="1" Duration="0:0:0.18"/>
                            <DoubleAnimation Storyboard.TargetProperty="(UIElement.Effect).(DropShadowEffect.Opacity)" To="0" Duration="0:0:0.18"/>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
                <EventTrigger RoutedEvent="MouseLeftButtonDown">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)" To="0.97" Duration="0:0:0.08"/>
                            <DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)" To="0.97" Duration="0:0:0.08"/>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
                <EventTrigger RoutedEvent="MouseLeftButtonUp">
                    <BeginStoryboard>
                        <Storyboard>
                            <DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleX)" To="1.025" Duration="0:0:0.12"/>
                            <DoubleAnimation Storyboard.TargetProperty="(UIElement.RenderTransform).(ScaleTransform.ScaleY)" To="1.025" Duration="0:0:0.12"/>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>

    <Grid x:Name="TutorialHost">
        <controls:RoundedClipBorder x:Name="MainSurface" CornerRadius="19" Background="{DynamicResource MainColor}" Margin="5">
            <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="180"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="25"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <Border CornerRadius="20,0,0,20" Grid.Column="0" Grid.Row="0" Grid.RowSpan="2" Background="{DynamicResource BackgroundColor}"/>
            <Border Grid.Column="1" Grid.Row="0" Background="Transparent">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="45"/>
                        <ColumnDefinition Width="45"/>
                    </Grid.ColumnDefinitions>
                    <Border x:Name="backTabBorder" CornerRadius="10" Style="{StaticResource TabBorderStyle}" Visibility="Collapsed" MouseLeftButtonUp="BackTabBorder_MouseLeftButtonUp">
                        <Image HorizontalAlignment="Center" VerticalAlignment="Center" Margin="4" Source="/Resources/Image/back.png"/>
                    </Border>
                    <controls:WindowCaptionBar x:Name="CaptionBar" Grid.Column="1" Grid.ColumnSpan="3" CloseRequested="CaptionBar_CloseRequested"/>
                </Grid>
            </Border>
            <Border Grid.Column="0" Grid.Row="0" Background="Transparent">
                <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center">
                    <Span Foreground="#9898e7" FontSize="18" FontWeight="Bold">XFE·工具箱</Span>
                </TextBlock>
            </Border>
            <ScrollViewer Grid.Column="0" Grid.Row="1" Margin="0,0,0,65" VerticalScrollBarVisibility="Hidden" HorizontalScrollBarVisibility="Disabled">
            <StackPanel>
                <controls:NavigationButton x:Name="mainButton" Command="{Binding NavigateToPageCommand}" CommandParameter="home">
                    <Grid>
                        <Grid.ColumnDefinitions><ColumnDefinition Width="40"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
                        <Image Source="/Resources/Image/grid.png" Margin="5"/>
                        <TextBlock Grid.Column="1" Style="{StaticResource NavigationButtonText}" Text="首页"/>
                    </Grid>
                </controls:NavigationButton>
                <controls:NavigationButton x:Name="chatButton" Command="{Binding NavigateToPageCommand}" CommandParameter="chat">
                    <Grid>
                        <Grid.ColumnDefinitions><ColumnDefinition Width="40"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
                        <Viewbox Width="25" Height="25" Margin="7">
                            <Grid Width="24" Height="24">
                                <Path Fill="#9898E7"
                                      Data="M4,3 H20 C21.1,3 22,3.9 22,5 V14.5 C22,15.6 21.1,16.5 20,16.5 H10 L5,21 V16.5 H4 C2.9,16.5 2,15.6 2,14.5 V5 C2,3.9 2.9,3 4,3 Z"/>
                                <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,3">
                                    <Ellipse Width="2.6" Height="2.6" Fill="White" Margin="1.2,0"/>
                                    <Ellipse Width="2.6" Height="2.6" Fill="White" Margin="1.2,0"/>
                                    <Ellipse Width="2.6" Height="2.6" Fill="White" Margin="1.2,0"/>
                                </StackPanel>
                            </Grid>
                        </Viewbox>
                        <TextBlock Grid.Column="1" Style="{StaticResource NavigationButtonText}" Text="聊天"/>
                    </Grid>
                </controls:NavigationButton>
                <controls:NavigationButton x:Name="toolBoxButton" Command="{Binding NavigateToPageCommand}" CommandParameter="tool">
                    <Grid>
                        <Grid.ColumnDefinitions><ColumnDefinition Width="40"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
                        <Image Source="/Resources/Image/toolbox.png" Margin="7"/>
                        <TextBlock Grid.Column="1" Style="{StaticResource NavigationButtonText}" Text="工具箱"/>
                    </Grid>
                </controls:NavigationButton>
                <controls:NavigationButton x:Name="workshopButton" Command="{Binding NavigateToPageCommand}" CommandParameter="workshop">
                    <Grid><Grid.ColumnDefinitions><ColumnDefinition Width="40"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><Image Source="/Resources/Image/wrench.png" Margin="7"/><TextBlock Grid.Column="1" Style="{StaticResource NavigationButtonText}" Text="工具工坊"/></Grid>
                </controls:NavigationButton>
                <controls:NavigationButton x:Name="consoleButton" Command="{Binding NavigateToPageCommand}" CommandParameter="console">
                    <Grid>
                        <Grid.ColumnDefinitions><ColumnDefinition Width="40"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
                        <Image Source="/Resources/Image/console.png" Margin="7"/>
                        <TextBlock Grid.Column="1" Style="{StaticResource NavigationButtonText}" Text="C#控制台"/>
                    </Grid>
                </controls:NavigationButton>
                <controls:NavigationButton x:Name="downloadButton" Command="{Binding NavigateToPageCommand}" CommandParameter="download">
                    <Grid>
                        <Grid.ColumnDefinitions><ColumnDefinition Width="40"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
                        <Image Source="/Resources/Image/download.png" Margin="7"/>
                        <TextBlock Grid.Column="1" Style="{StaticResource NavigationButtonText}" Text="下载专区"/>
                    </Grid>
                </controls:NavigationButton>
                <controls:NavigationButton x:Name="settingButton" Command="{Binding NavigateToPageCommand}" CommandParameter="setting">
                    <Grid>
                        <Grid.ColumnDefinitions><ColumnDefinition Width="40"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
                        <Image Source="/Resources/Image/setting.png" Margin="7"/>
                        <TextBlock Grid.Column="1" Style="{StaticResource NavigationButtonText}" Text="选项设置"/>
                    </Grid>
                </controls:NavigationButton>

                <controls:NavigationButton x:Name="serverManagementButton" Visibility="{Binding AdministratorVisibility}" Command="{Binding NavigateToPageCommand}" CommandParameter="serverManagement">
                    <Grid><Grid.ColumnDefinitions><ColumnDefinition Width="40"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions><Image Source="/Resources/Image/wrench.png" Margin="7"/><TextBlock Grid.Column="1" Style="{StaticResource NavigationButtonText}" Text="服务器管理"/></Grid>
                </controls:NavigationButton>
            </StackPanel>
            </ScrollViewer>

            <!-- 账户入口固定在左下角,点击后进入个人中心。 -->
            <Border x:Name="AccountEntry" Grid.Column="0" Grid.Row="1" Style="{StaticResource AccountEntryStyle}"
                    ToolTip="打开个人中心" MouseLeftButtonUp="AccountEntry_MouseLeftButtonUp">
                <Grid>
                    <Grid.ColumnDefinitions><ColumnDefinition Width="32"/><ColumnDefinition Width="*"/></Grid.ColumnDefinitions>
                    <controls:PersonPicture Width="29" Height="29" FontSize="10.5"
                                            DisplayName="{Binding CurrentUserName}"
                                            IsOnline="{Binding IsCurrentUserOnline}"/>
                    <StackPanel Grid.Column="1" Margin="8,0,2,0" VerticalAlignment="Center">
                        <TextBlock Text="{Binding CurrentUserName}" Foreground="#4B4B5E" FontSize="12" FontWeight="SemiBold" TextTrimming="CharacterEllipsis"/>
                        <TextBlock Text="{Binding CurrentUserRole}" Foreground="#8A8A9D" FontSize="9.5"/>
                    </StackPanel>
                </Grid>
            </Border>

                <Frame x:Name="contentFrame" Style="{StaticResource NavigationFrame}" Content="{Binding CurrentPage}" Navigated="ContentFrame_Navigated"/>
            </Grid>
        </controls:RoundedClipBorder>

        <!-- 与工具运行窗口复用同一个白色圆角拖动控件。 -->
        <controls:WindowResizeGrip Margin="0,0,5,5" ResizeCompleted="WindowResizeGrip_ResizeCompleted"/>
    </Grid>
</Window>