一个简单的c#项目实例

目录

一:创建项目

二引入依赖项以及创建文件夹

1.这里是项目所需要的文件夹以及引用的包

2.这里是效果展示

3.mainwindow前后台代码

4.app.xaml 

5.MonitorView

下载地址 :练习: 1 2 3 1 2 3 1 2 3icon-default.png?t=N7T8https://gitee.com/gyk159/practice.git


一:创建项目

该项目为wpf程序

这里选WPF应用程序,同时点击下一步

注意项目存放位置 项目名字然后点击下一步然后等待项目加载,之后就可以着手项目的编写了

二引入依赖项以及创建文件夹

1.这里是项目所需要的文件夹以及引用的包

点击安装 这样就可以引用对应的包了

2.这里是效果展示

3.mainwindow前后台代码

这里是对页面的区域进行切割同时放入对应的控件。

<Window x:Class="test1.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:local="clr-namespace:test1"
        mc:Ignorable="d"
        Title="这是一个学习的项目" Height="700" Width="1150"  Name="Window"
        WindowStartupLocation="CenterScreen" 
        FontFamily="微软雅黑"
        FontSize="12" FontWeight="ExtraLight" Background="Transparent">
    <WindowChrome.WindowChrome>
        <WindowChrome GlassFrameThickness="-1"/>
    </WindowChrome.WindowChrome>
    <!--这是对缩放关闭按钮的样式重写 也可以在App.xaml里写-->
    <!--<Window.Resources>  
        <Style TargetType="Button" x:Name="ControlButtonStyle">
            <Setter Property="Width" Value="40"/>
            <Setter Property="Background" Value="#11ffffff"/>
            <Setter Property="Foreground" Value="White"/>
            <Setter Property="FontFamily" Value="Assets/Fonts/#iconfont"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Grid Background="{TemplateBinding Background}">
                            <Border Name="root">
                                <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/>
                            </Border>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="root" Property="Background" Value="#33ffffff"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>-->
    <Grid>
        <Grid.Background>
            <RadialGradientBrush>
                <GradientStop Color="#FF285173" Offset="0"/>
                <GradientStop Color="#FF244967" Offset="0.3"/>
                <GradientStop Color="#FF14273A" Offset="1"/>
            </RadialGradientBrush>
        </Grid.Background>
        <Grid.RowDefinitions>
            <RowDefinition Height="45"/>
            <RowDefinition/>
            <RowDefinition Height="20"/>
        </Grid.RowDefinitions>
        <!--标题部分-->
        <Border Grid.Row="0" Background="#5518AABD"  BorderThickness="0,0,0,1">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="60"/>
                    <ColumnDefinition Width="auto"/>
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>
                <Image Source="Assets/Images/Logo.png" Margin="10" Grid.Column="0"/>
                <StackPanel Grid.Column="1" VerticalAlignment="Center">
                    <TextBlock Text="{Binding Title,ElementName=Window}" 
                               Foreground="White" 
                               FontSize="16"/>
                    <!--RelativeSource={RelativeSource AncestorType=Window}  上面没命名的话  否则ElementName=Window-->
                    <TextBlock Text="随便写点什么"
                               Foreground="LightGray" 
                               FontSize="9" Margin="0,2,0,0" 
                               HorizontalAlignment="Center"/>
                </StackPanel>
                <Grid Grid.Column="2">
                    <Grid.RowDefinitions>
                        <RowDefinition/>
                        <RowDefinition Height="13"/>
                    </Grid.RowDefinitions>
                    <Border HorizontalAlignment="Right" WindowChrome.IsHitTestVisibleInChrome="True" 
                            Background="Transparent"
                            Width="200">
                        <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
                            <Button Width="40" Content="&#xe624;" Style="{StaticResource ControlButtonStyle}"/>
                            <Button Width="40" Content="&#xe600;" Style="{StaticResource ControlButtonStyle}"/>
                            <Button Width="40" Content="&#xe609;" Style="{StaticResource ControlButtonStyle}"
                                    Background="DarkRed" Click="Button_Click"/>
                        </StackPanel>
                    </Border>

                    <Border Grid.Row="1" BorderBrush="#5518AABD" BorderThickness="0,1,0,0"/>
                    <Border Grid.Row="1" Margin="0,3,0,2">
                        <Border.Background>
                            <VisualBrush TileMode="Tile" Viewport="0,0,7,7" ViewportUnits="Absolute">
                                <VisualBrush.Visual>
                                    <Grid Width="20" Height="20" >
                                        <Line X1="0" Y1="10" X2="10" Y2="0" Stroke="Gray"  
                                              StrokeThickness="1"/>
                                    </Grid>
                                </VisualBrush.Visual>
                            </VisualBrush>
                        </Border.Background>
                    </Border>
                </Grid>
            </Grid>
        </Border>
        <!--内容部分-->
        <ContentControl Grid.Row="1" Content="{Binding PageContant}"/>
        <!--状态栏部分-->
        <Border Grid.Row="2"  BorderBrush="#5518AABD" BorderThickness="0,1,0,0">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition/>
                    <ColumnDefinition Width="auto"/>
                </Grid.ColumnDefinitions>
                <Border Margin="0,5">
                    <Border.Background>
                        <VisualBrush TileMode="Tile" Viewport="0,0,7,7" ViewportUnits="Absolute">
                            <VisualBrush.Visual>
                                <Grid Width="20" Height="20">
                                    <Line X1="0" Y1="10" X2="10" Y2="0" Stroke="Gray" StrokeThickness="1"/>
                                </Grid>
                            </VisualBrush.Visual>
                        </VisualBrush>
                    </Border.Background>
                </Border>
                <TextBlock Grid.Column="1" Text="随便写点什么"
                           Foreground="DarkRed" VerticalAlignment="Center"
                           FontSize="11" FontWeight="Bold" Margin="10,1"/>
            </Grid>
        </Border>
    </Grid>
</Window>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using test1.Base;
using test1.ViewModels;
using test1.Views;

namespace test1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        MainViewModel mainViewModel=new MainViewModel();

        public Command DetailCommand { get; set; }
        public Command GoBackCommand { get; set; }
        public Command SettingsCommand { get; set; }

        public MainWindow()
        {
            InitializeComponent();
            this.DataContext = mainViewModel;
            mainViewModel.PageContant = new MonitorView();

            DetailCommand = new Command(DoDetailCommand);

            GoBackCommand = new Command(DoGoBackCommand);

            SettingsCommand = new Command(DoSettingsCommand);

        }

        private void DoSettingsCommand(object obj)
        {
            new SettingsWindow() { Owner = this }.ShowDialog();
        }
        private void DoDetailCommand(object obj)
        {
            WorkshopView view = new WorkshopView();
            mainViewModel.PageContant = view;
            //位移
            ThicknessAnimation thicknessAnimation = new ThicknessAnimation(
               new Thickness(0, 50, 0, -50), new Thickness(0, 0, 0, 0),
               new TimeSpan(0, 0, 0, 0, 400));
            //透明度
            DoubleAnimation doubleAnimation = new DoubleAnimation(0, 1, new TimeSpan(0, 0, 0, 0, 400));

            Storyboard.SetTarget(thicknessAnimation, view);
            Storyboard.SetTarget(doubleAnimation, view);
            Storyboard.SetTargetProperty(thicknessAnimation, new PropertyPath("Margin"));
            Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("Opacity"));

            Storyboard storyboard = new Storyboard();   
            storyboard.Children.Add(thicknessAnimation);
            storyboard.Children.Add(doubleAnimation);

            storyboard.Begin();

        }

        private void DoGoBackCommand(object obj)
        {
            MonitorView monitorView = new MonitorView();
            mainViewModel.PageContant = monitorView;

            // 透明度
            DoubleAnimation doubleAnimation = new DoubleAnimation(0, 1, new TimeSpan(0, 0, 0, 0, 400));

            Storyboard.SetTarget(doubleAnimation, monitorView);
            Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath("Opacity"));

            Storyboard storyboard = new Storyboard();
            storyboard.Children.Add(doubleAnimation);

            storyboard.Begin();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            this.Close();
        }
    }
}

4.app.xaml 

<Application x:Class="test1.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:test1"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <Style TargetType="Button" x:Key="ButtonStyle">
            <Setter Property="Foreground" Value="#AAA"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Border BorderThickness="1" Background="Transparent" Name="border">
                            <Border.BorderBrush>
                                <LinearGradientBrush StartPoint="0,0" EndPoint="1,0">
                                    <GradientStop Color="#22FFFFFF" Offset="0"/>
                                    <GradientStop Color="#77FFFFFF" Offset="0.5"/>
                                    <GradientStop Color="#22FFFFFF" Offset="1"/>
                                </LinearGradientBrush>
                            </Border.BorderBrush>

                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
                                <TextBlock Text="{TemplateBinding Tag}" FontFamily="Assets/Fonts/#iconfont" FontSize="14" VerticalAlignment="Center" Margin="0,2,5,0"/>
                                <TextBlock Text="{TemplateBinding Content}" VerticalAlignment="Center"/>
                            </StackPanel>

                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="border"  Property="Background" Value="#11FFFFFF"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        
        <Style TargetType="Button" x:Key="ControlButtonStyle">
            <Setter Property="Width" Value="40"/>
            <Setter Property="Background" Value="#11FFFFFF"/>
            <Setter Property="Foreground" Value="White"/>
            <Setter Property="FontFamily" Value="Assets/Fonts/#iconfont"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Grid Background="{TemplateBinding Background}">
                            <Border Name="root">
                                <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/>
                            </Border>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="root" Property="Background" Value="#33FFFFFF"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Application.Resources>
</Application>

5.MonitorView

右键点击views点击添加 点击用户控件点击添加

 

<UserControl x:Class="test1.Views.MonitorView"
             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:test1.Views"
             xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
             xmlns:zxc="clr-namespace:test1.Controls"
             mc:Ignorable="d" 
             d:DesignHeight="650" d:DesignWidth="1100">
    <UserControl.Resources>
        <Style TargetType="GroupBox">
            <Setter Property="Margin" Value="10,5"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="GroupBox">
                        <Grid>
                            <Polyline Points="0 30,0 10,10 0,30 0" Stroke="#9918AABD" StrokeThickness="1" 
                                      VerticalAlignment="Top" HorizontalAlignment="Left"/>
                            <Ellipse Width="4" Height="4" VerticalAlignment="Top" HorizontalAlignment="Left"
                                     Fill="#9918AABD" Margin="24,-2,0,0"/>
                            <Ellipse Width="4" Height="4" VerticalAlignment="Top" HorizontalAlignment="Left"
                                     Fill="#9918AABD" Margin="-2,24,0,0"/>
                            <Path Data="M0 0,3 3,30 3,33 0,68 0,73 7,78 7,78 10M8 0,25 0" Stroke="#5518AABD"
                                   VerticalAlignment="Top" HorizontalAlignment="Right"/>
                            <Polyline Points="0,0 0,15 10,15" Stroke="#5518AABD"  
                                      VerticalAlignment="Bottom" HorizontalAlignment="Left"/>
                            <Polyline Points="10,0 0,10" Stroke="#5518AABD"  
                                      VerticalAlignment="Bottom" HorizontalAlignment="Right"/>
                            <Polygon Points="0,7 7 7 7 0" Fill="#9918AABD" 
                                     VerticalAlignment="Bottom" HorizontalAlignment="Right"/>
                            <Border BorderBrush="#5518AABD" BorderThickness="0,1,0,0" VerticalAlignment="Top"
                                    Margin="30,-0.5,78,0"/>
                            <Border BorderBrush="#5518AABD" BorderThickness="0,0,1,0" HorizontalAlignment="Right"
                                    Margin="0,10"/>
                            <Border BorderBrush="#5518AABD" BorderThickness="0,1,0,0" VerticalAlignment="Bottom"
                                    Margin="10,0"/>
                            <Border BorderBrush="#5518AABD" BorderThickness="0,0,1,0" HorizontalAlignment="Left"
                                    Margin="-0.5,15"/>
                            <Path Data="M0 0,3 0,5 4,3 8,0 8,3 4" Fill="#9918AABD" VerticalAlignment="Top" 
                                  HorizontalAlignment="Left" Margin="10,13"/>
                            <Path Data="M0 0,3 0,5 4,3 8,0 8,3 4" Fill="#5518AABD" VerticalAlignment="Top" 
                                  HorizontalAlignment="Left" Margin="16,13"/>
                            <TextBlock Text="{TemplateBinding Header}" Foreground="#18AABD" VerticalAlignment="Top"
                                       HorizontalAlignment="Left" Margin="25,8"/>
                            <ContentPresenter/>
                        </Grid> 
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </UserControl.Resources>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="50"/>
            <RowDefinition/>
            <RowDefinition Height="120"/>
        </Grid.RowDefinitions>  
        <!--第一行-->
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="200"/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
                <TextBlock Text="20:00" VerticalAlignment="Center" Foreground="White"
                           FontSize="30" FontFamily="../Assets/Fonts/#Digital Display"/>
                <StackPanel TextBlock.Foreground="White" TextBlock.FontSize="10" Margin="15,0,0,0">
                    <TextBlock Text="2022-07-05"/>
                    <TextBlock Text="星期五" HorizontalAlignment="Right"/>
                </StackPanel>
            </StackPanel>
            <!--计数-->
            <StackPanel Grid.Column="1" 
                        Orientation="Horizontal" 
                        HorizontalAlignment="Left"
                        VerticalAlignment="Center" 
                        Margin="20,0,0,0">
                <StackPanel.Resources>
                    <DataTemplate x:Key="dataTemp">
                        <Border Width="15" Background="#3318AABD" Margin="2,0">
                            <TextBlock Text="{Binding}" VerticalAlignment="Center" HorizontalAlignment="Center"
                                           Foreground="White" FontSize="16" FontWeight="Normal"/>
                        </Border>
                    </DataTemplate>
                </StackPanel.Resources>
                <TextBlock Text="&#xe661;"
                           FontFamily="../Assets/Fonts/#iconfont"
                           Foreground="#55ffffff" 
                           FontSize="20"
                           VerticalAlignment="Center"/>
                <TextBlock Text="机台&#13;总数" 
                           VerticalAlignment="Center"
                           Foreground="#55ffffff" 
                           Margin="10,0" 
                           FontSize="10"/>
                <ItemsControl ItemsSource="{Binding Total}" ItemTemplate="{StaticResource dataTemp}" >
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <VirtualizingStackPanel Orientation="Horizontal"/>
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
                </ItemsControl>
                <TextBlock Text="生产计数" VerticalAlignment="Center" Foreground="#99FFFFFF" Margin="20,0,10,0"/>
                <ItemsControl ItemsSource="{Binding ProductionCount}" ItemTemplate="{StaticResource dataTemp}">
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <VirtualizingStackPanel Orientation="Horizontal"/>
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
                </ItemsControl>

                <TextBlock Text="不良计数" VerticalAlignment="Center" Foreground="#99FFFFFF" Margin="20,0,10,0"/>
                <ItemsControl ItemsSource="{Binding BadCount}" ItemTemplate="{StaticResource dataTemp}">
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <VirtualizingStackPanel Orientation="Horizontal"/>
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
                </ItemsControl>
            </StackPanel>
            <Button Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="20,0"
                    Content="配置" Tag="&#xe625;" Style="{StaticResource ButtonStyle}" Height="33" Width="80"
                    Command="{Binding SettingsCommand,RelativeSource={RelativeSource AncestorType=Window}}">

            </Button>
        </Grid>
        <!--第二行-->
        <Grid Grid.Row="1">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <!--第一列-->
            <UniformGrid Columns="1" Margin="10,0" Grid.Column="0">
                <GroupBox Header="环境">
                    <ItemsControl ItemsSource="{Binding Evironment}" VerticalAlignment="Center" >
                        <ItemsControl.ItemsPanel>
                            <ItemsPanelTemplate>
                                <UniformGrid Columns="4"/>
                            </ItemsPanelTemplate>
                        </ItemsControl.ItemsPanel>
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center">
                                    <TextBlock Text="{Binding Value}" HorizontalAlignment="Center" FontSize="16"
                                               Foreground="#FF2BEDF1" Margin="0,5"/>
                                    <TextBlock Text="{Binding Header}" Foreground="#AAFFFFFF" FontSize="10"/>
                                </StackPanel>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                    </ItemsControl>
                </GroupBox>
                <GroupBox Header="产能">
                    <Grid>
                        <lvc:CartesianChart Margin="20,35,20,5">
                            <lvc:CartesianChart.Series>
                                <lvc:ColumnSeries Values="300,400,480,450,380,450,450,330,340,280,220"
                                              MaxColumnWidth="10" Title="生产计数">
                                    <lvc:ColumnSeries.Fill>
                                        <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                            <GradientStop Color="#FF3FBBE6" Offset="0"/>
                                            <GradientStop Color="#FF2BEDF1" Offset="1"/>
                                        </LinearGradientBrush>
                                    </lvc:ColumnSeries.Fill>
                                </lvc:ColumnSeries>

                                <lvc:ColumnSeries Values="15,55,15,40,38,45,25,15" MaxColumnWidth="10"
                                              Title="不良计数">
                                    <lvc:ColumnSeries.Fill>
                                        <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                            <GradientStop Color="#FFFB9A9A" Offset="0"/>
                                            <GradientStop Color="#FFFF5151" Offset="1"/>
                                        </LinearGradientBrush>
                                    </lvc:ColumnSeries.Fill>
                                </lvc:ColumnSeries>

                            </lvc:CartesianChart.Series>
                            <lvc:CartesianChart.AxisX>
                                <lvc:Axis Labels="8:00,9:00,10:00,11:00,12:00,13:00,14:00,15:00,16:00,17:00,18:00">
                                    <lvc:Axis.Separator>
                                        <lvc:Separator Step="1" StrokeThickness="0"/>
                                    </lvc:Axis.Separator>
                                </lvc:Axis>
                            </lvc:CartesianChart.AxisX>
                            <lvc:CartesianChart.AxisY>
                                <lvc:Axis MinValue="0" MaxValue="500" >
                                    <lvc:Axis.Separator>
                                        <lvc:Separator Step="100" Stroke="#11ffffff"/>
                                    </lvc:Axis.Separator>
                                </lvc:Axis>
                            </lvc:CartesianChart.AxisY>
                        </lvc:CartesianChart>
                        <StackPanel Orientation="Horizontal" VerticalAlignment="Top" HorizontalAlignment="Right" Margin="10">
                            <Border Width="6" Height="6" Background="#FF2BEDF1" Margin="5,0"/>
                            <TextBlock Text="生产计数" FontSize="10" Foreground="#44FFFFFF"/>
                            <Border Width="6" Height="6" Background="#FFFF5151" Margin="5,0"/>
                            <TextBlock Text="不良计数" FontSize="10" Foreground="#44FFFFFF"/>
                        </StackPanel>
                    </Grid>
                    
                </GroupBox>
                <GroupBox Header="质量">
                    <lvc:CartesianChart Margin="20,35,20,5">
                        <lvc:CartesianChart.Series>
                            <lvc:LineSeries Values="15,55,15,40,38,45,25,15,45,25,15,49" Title="不良计数"
                                            PointGeometrySize="0" Stroke="#FF2BEDF1" StrokeThickness="1">
                                <lvc:LineSeries.Fill>
                                    <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                        <GradientStop Color="#552BEDF1" Offset="0"/>
                                        <GradientStop Color="Transparent" Offset="1"/>
                                    </LinearGradientBrush>
                                </lvc:LineSeries.Fill>
                            </lvc:LineSeries>
                        </lvc:CartesianChart.Series>
                        <lvc:CartesianChart.AxisX>
                            <lvc:Axis Labels="8:00,9:00,10:00,11:00,12:00,13:00,14:00,15:00,16:00,17:00,18:00">
                                <lvc:Axis.Separator>
                                    <lvc:Separator Step="1" StrokeThickness="0"/>
                                </lvc:Axis.Separator>
                            </lvc:Axis>
                        </lvc:CartesianChart.AxisX>
                        <lvc:CartesianChart.AxisY>
                            <lvc:Axis MinValue="0" MaxValue="100">
                                <lvc:Axis.Separator>
                                    <lvc:Separator Step="20" Stroke="#11FFFFFF"/>
                                </lvc:Axis.Separator>
                            </lvc:Axis>
                        </lvc:CartesianChart.AxisY>
                    </lvc:CartesianChart>
                </GroupBox>
            </UniformGrid>
            <!--第二列-->
            <Grid Grid.Column="1" >
                <Grid.RowDefinitions>
                    <RowDefinition />
                    <RowDefinition Height="120"/>
                    <RowDefinition Height="1.5*"/>
                </Grid.RowDefinitions>
                <Border Width="400" Height="150" Grid.RowSpan="2" VerticalAlignment="Top" HorizontalAlignment="Right">
                    <Border.Background>
                        <ImageBrush ImageSource="../Assets/Images/device.png" Stretch="Uniform"/>
                    </Border.Background>
                </Border>
                <Grid Grid.Row="1">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="30"/>
                        <RowDefinition/>
                    </Grid.RowDefinitions>
                    <TextBlock VerticalAlignment="Top" HorizontalAlignment="Left"  Foreground="#99FFFFFF"
                               FontWeight="Normal">
                        <Run Text="&#xe68d;" FontFamily="../Assets/Fonts/#iconfont"/>
                        <Run Text="报警记录"/>
                    </TextBlock>
                    <ItemsControl Grid.Row="1" ItemsSource="{Binding AlarmList}">
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <Grid Height="23">
                                    <Grid.ColumnDefinitions>
                                        <ColumnDefinition Width="20"/>
                                        <ColumnDefinition Width="30"/>
                                        <ColumnDefinition Width="1.3*"/>
                                        <ColumnDefinition/>
                                        <ColumnDefinition Width="0.5*"/>
                                    </Grid.ColumnDefinitions>
                                    <Border Width="6" Height="6" Background="IndianRed" CornerRadius="3" VerticalAlignment="Center" HorizontalAlignment="Center"/>
                                    <TextBlock Text="{Binding Num}" Grid.Column="1" VerticalAlignment="Center"
                                               HorizontalAlignment="Center" Foreground="#992BEDF1" FontWeight="Normal"/>
                                    <TextBlock Text="{Binding Message}" 
                                               Grid.Column="2" 
                                               VerticalAlignment="Center" 
                                               Foreground="#992BEDF1" 
                                               FontWeight="Normal"/>
                                    <TextBlock Text="{Binding Time}" 
                                               Grid.Column="3" 
                                               VerticalAlignment="Center"  
                                               Foreground="#992BEDF1" 
                                               FontWeight="Normal"/>
                                    <TextBlock Text="{Binding Duration ,StringFormat=时长{0}秒}" 
                                               Grid.Column="4" 
                                               VerticalAlignment="Center" 
                                               HorizontalAlignment="Center"  
                                               Foreground="#992BEDF1" 
                                               FontWeight="Normal"/>
                                </Grid>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                    </ItemsControl>
                </Grid>

                <GroupBox Grid.Row="2" Header="数据异常报警比例" Margin="0,5">
                    <lvc:PieChart InnerRadius="45" Margin="0,40,0,20">
                        <lvc:PieChart.Resources>
                            <Style TargetType="lvc:PieSeries">
                                <Setter Property="DataLabelsTemplate">
                                    <Setter.Value>
                                        <DataTemplate>
                                            <StackPanel Orientation="Horizontal" TextBlock.Foreground="#44FFFFFF">
                                                <TextBlock Text="{Binding Point.SeriesView.Title}" Margin="0,0,5,0"/>
                                                <TextBlock Text="{Binding Point.SeriesView.Values[0]}"/>
                                            </StackPanel>
                                        </DataTemplate>
                                    </Setter.Value>
                                </Setter>
                            </Style>
                        </lvc:PieChart.Resources>
                        <lvc:PieChart.Series>
                            <lvc:PieSeries Values="10" StrokeThickness="0" LabelPosition="OutsideSlice" DataLabels="True" Title="压差"/>
                            <lvc:PieSeries Values="50" StrokeThickness="0" LabelPosition="OutsideSlice" DataLabels="True" Title="压差1"/>
                            <lvc:PieSeries Values="60" StrokeThickness="0" LabelPosition="OutsideSlice" DataLabels="True" Title="压差2"/>
                            <lvc:PieSeries Values="10" StrokeThickness="0" LabelPosition="OutsideSlice" DataLabels="True" Title="压差3"/>
                            <lvc:PieSeries Values="50" StrokeThickness="0" LabelPosition="OutsideSlice" DataLabels="True" Title="压差4"/>
                            <lvc:PieSeries Values="20" StrokeThickness="0" LabelPosition="OutsideSlice" DataLabels="True" Title="压差5"/>
                            <lvc:PieSeries Values="90" StrokeThickness="0" LabelPosition="OutsideSlice" DataLabels="True" Title="压差6"/>
                            <lvc:PieSeries Values="20" StrokeThickness="0" LabelPosition="OutsideSlice" DataLabels="True" Title="压差7"/>
                            <lvc:PieSeries Values="20" StrokeThickness="0" LabelPosition="OutsideSlice" DataLabels="True" Title="压差8"/>
                            <lvc:PieSeries Values="20" StrokeThickness="0" LabelPosition="OutsideSlice" DataLabels="True" Title="压差9"/>
                            <lvc:PieSeries Values="20" StrokeThickness="0" LabelPosition="OutsideSlice" DataLabels="True" Title="压差10"/>
                        </lvc:PieChart.Series>
                    </lvc:PieChart>
                </GroupBox>
            </Grid>
            
            <!--第三列-->
            <UniformGrid Columns="1" Margin="10,0" Grid.Column="2">
                <GroupBox Header="设备">
                    <ItemsControl ItemsSource="{Binding DeviceMonitor}" VerticalAlignment="Center">
                        <ItemsControl.ItemsPanel>
                            <ItemsPanelTemplate>
                                <UniformGrid  Columns="4"/>
                            </ItemsPanelTemplate>
                        </ItemsControl.ItemsPanel>
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <StackPanel VerticalAlignment="Center" HorizontalAlignment="Center" Margin="0,5">
                                    <TextBlock Text="{Binding Value}" HorizontalAlignment="Center" FontSize="16" Foreground="#FF2BEDF1" Margin="0,5"/>
                                    <TextBlock Text="{Binding Header}" Foreground="#AAFFFFFF" FontSize="10"/>
                                </StackPanel>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                    </ItemsControl>
                </GroupBox>
                <GroupBox Header="能耗">
                    <zxc:RaderChart ItemsSources="{Binding RaderDatas}"/> 
                </GroupBox>
                <GroupBox Header="人力">
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition/>
                            <ColumnDefinition Width="1.8*"/>
                        </Grid.ColumnDefinitions>
                        <StackPanel VerticalAlignment="Center" Margin="0,20,0,0">
                            <TextBlock Text="1600" HorizontalAlignment="Center" Foreground="#99FFFFFF" FontSize="25"/>
                            <TextBlock Text="在职在岗" HorizontalAlignment="Center" FontSize="12" Foreground="#55FFFFFF"
                                   Margin="0,5"/>
                        </StackPanel>

                        <Grid Grid.Column="1">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="30"/>
                                <RowDefinition/>
                            </Grid.RowDefinitions>
                            <TextBlock Text="缺岗统计" VerticalAlignment="Center" Foreground="#18AABD"/>
                            <ItemsControl ItemsSource="{Binding PersonnelList}" Grid.Row="1">
                                <ItemsControl.ItemTemplate>
                                    <DataTemplate>
                                        <Grid Height="23">
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="10"/>
                                                <ColumnDefinition Width="50"/>
                                                <ColumnDefinition Width="40"/>
                                                <ColumnDefinition />
                                            </Grid.ColumnDefinitions>
                                            <Border Width="5" Height="5" CornerRadius="5" Background="Orange"/>
                                            <TextBlock Text="{Binding Name}" Grid.Column="1" VerticalAlignment="Center"
                                                       HorizontalAlignment="Center" FontSize="11" Foreground="#99FFFFFF"/>
                                            <TextBlock Text="{Binding Duties}" Grid.Column="2" VerticalAlignment="Center"
                                                       HorizontalAlignment="Center" FontSize="11" Foreground="#99FFFFFF"/>

                                            <StackPanel Orientation="Horizontal" Grid.Column="3">
                                                <Border Background="#AA2BEDF1" Height="3" Width="70" Margin="5,0"/>
                                                <TextBlock Text="{Binding ManHour}" VerticalAlignment="Center" Foreground="#99FFFFFF" FontSize="9"/>
                                            </StackPanel>
                                        </Grid>
                                    </DataTemplate>
                                </ItemsControl.ItemTemplate>
                            </ItemsControl>
                        </Grid>
                    </Grid>
                </GroupBox>
            </UniformGrid>
        </Grid>
        <!--第三行-->
        <ItemsControl ItemsSource="{Binding WorkshopList}" Grid.Row="2"  Margin="10,0">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <UniformGrid Rows="1"/>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Border BorderBrush="#9918AABD" BorderThickness="0,1,0,0" Background="#0A18AABD" Margin="10,5">
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="30"/>
                                <RowDefinition/>
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="90"/>
                                <ColumnDefinition/>
                            </Grid.ColumnDefinitions>
                            <TextBlock Text="{Binding Name}" VerticalAlignment="Center" HorizontalAlignment="Left"
                                       Foreground="#18AABD" Margin="10,0"/>
                            
                            <TextBlock Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Right" Margin="10,0">
                                <Hyperlink Foreground="#33FFFFFF" TextDecorations="None"
                                           Command="{Binding DetailCommand,RelativeSource={RelativeSource AncestorType=Window} }" 
                                           CommandParameter="{Binding}" 
                                           >[详情]</Hyperlink>
                            </TextBlock>


                            <StackPanel  Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center">
                                <TextBlock Text="机台总数" Foreground="#55ffffff" FontSize="10"/>
                                <TextBlock Text="{Binding TotalCount}" HorizontalAlignment="Center" 
                                           FontSize="30" Foreground="#99ffffff" Margin="0,5"/>
                            </StackPanel>
                            <UniformGrid Grid.Row="1" Grid.Column="1">
                                <StackPanel>
                                    <TextBlock Text="{Binding WorkCount}" HorizontalAlignment="Center" FontSize="16" Foreground="LightSeaGreen" FontWeight="Normal"/>
                                    <TextBlock Text="作业" HorizontalAlignment="Center" Foreground="#55FFFFFF" FontSize="10"/>
                                </StackPanel>
                                <StackPanel>
                                    <TextBlock Text="{Binding WaitCount}" HorizontalAlignment="Center" FontSize="16" Foreground="DarkOrange" FontWeight="Normal"/>
                                    <TextBlock Text="等待" HorizontalAlignment="Center" Foreground="#55FFFFFF" />
                                </StackPanel>
                                <StackPanel>
                                    <TextBlock Text="{Binding FaultCount}" HorizontalAlignment="Center" FontSize="16" Foreground="DarkRed" FontWeight="Normal"/>
                                    <TextBlock Text="故障" HorizontalAlignment="Center" Foreground="#55FFFFFF"/>
                                </StackPanel>
                                <StackPanel>
                                    <TextBlock Text="{Binding StopCount}" HorizontalAlignment="Center" FontSize="16" Foreground="Gray" FontWeight="Normal"/>
                                    <TextBlock Text="停机" HorizontalAlignment="Center" Foreground="#55FFFFFF"/>
                                </StackPanel>
                            </UniformGrid>
                        </Grid>
                    </Border>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </Grid>
</UserControl>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace test1.Views
{
    /// <summary>
    /// MonitorView.xaml 的交互逻辑
    /// </summary>
    public partial class MonitorView : UserControl
    {
        public MonitorView()
        {
            InitializeComponent();
        }
    }
}

三:结束语

现在写出的还不够完善,还需要在去观摩学习,虽然有很多不足的地方,接下来我会不断的去改进,下次会少贴源码,对项目结构多做分析。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值