change - 首页实现

master
wenjy 9 months ago
parent bb60cda328
commit e7ae39cc08

@ -58,9 +58,9 @@ namespace SlnMesnac.WPF
var appConfig = ServiceProvider.GetService<AppConfig>();
Log.Information($"系统初始化完成,日志存放路径:{appConfig?.logPath}");
var loginWindow = ServiceProvider.GetRequiredService<LoginWindow>();
loginWindow.WindowStartupLocation = WindowStartupLocation.CenterScreen;
loginWindow.Show();
var mainWindow = ServiceProvider.GetRequiredService<MainWindow>();
mainWindow.WindowStartupLocation = WindowStartupLocation.CenterScreen;
mainWindow.Show();
}
@ -86,7 +86,6 @@ namespace SlnMesnac.WPF
Assembly[] assemblies = {
Assembly.LoadFrom("SlnMesnac.Repository.dll"),
Assembly.LoadFrom("SlnMesnac.Plc.dll"),
Assembly.LoadFrom("SlnMesnac.Rfid.dll"),
Assembly.LoadFrom("SlnMesnac.Common.dll"),
Assembly.LoadFrom("SlnMesnac.TouchSocket.dll"),
@ -112,22 +111,6 @@ namespace SlnMesnac.WPF
// 注册ORM
services.AddSqlSugarSetup();
// 注册PLC工厂
//services.AddPlcFactorySetup();
//services.AddJob();
// 注册 EventBus 服务
//services.AddEventBus(builder =>
//{
// // 注册 ToDo 事件订阅者
// builder.AddSubscriber<ToDoEventSubscriber>();
//});
}
// Exit事件

@ -6,263 +6,52 @@
xmlns:local="clr-namespace:SlnMesnac.WPF"
mc:Ignorable="d"
Title="MainWindow" Height="1080" Width="1920"
WindowState="Maximized" WindowStyle="None" ResizeMode="NoResize" Topmost="False">
<Window.Background>
<ImageBrush ImageSource="/Templates/image/background.jpg" />
</Window.Background>
WindowState="Maximized" Topmost="False" Background="#ECF5F8">
<!--WindowStyle="None" ResizeMode="NoResize"-->
<Border Margin="5" Background="Transparent" CornerRadius="10">
<Border.Effect>
<DropShadowEffect Color="Gray" ShadowDepth="0" BlurRadius="5" Opacity="0.3" Direction="0"></DropShadowEffect>
</Border.Effect>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*"/>
<RowDefinition Height="7*"/>
<RowDefinition Height="0.7*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="12*"/>
</Grid.RowDefinitions>
<Border Grid.Row="0" BorderBrush="Red" BorderThickness="0" CornerRadius="5" Background="Transparent" Margin="2,2">
<Border Grid.Row="0" Background="#194B9F">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="7*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="6*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Center">
<TextBlock Text="生产控制系统" FontSize="50" Foreground="White" FontWeight="Bold"/>
</StackPanel>
<StackPanel Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Right">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="白班" FontSize="25" Foreground="White" FontWeight="Bold" Margin="0,0,30,0"/>
<TextBlock Grid.Column="1" Text="|" FontSize="25" Foreground="White" FontWeight="Bold" Margin="0,0,30,0"/>
<TextBlock Grid.Column="2" Text="SCADA" FontSize="25" Foreground="White" FontWeight="Bold" Margin="0,0,10,0"/>
</Grid>
</StackPanel>
<Border Grid.Column="0" Background="#1352B2">
<StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Text="MESNAC" FontSize="24" Foreground="White" FontFamily="四圆黑" FontWeight="Bold"/>
<TextBlock Text=" 软控" FontSize="24" Foreground="White" FontFamily="四圆黑" FontWeight="Bold"/>
</StackPanel>
</Border>
<Border Grid.Column="1" Background="Transparent">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center">
<TextBlock Text="工业高频RFID测试展示" FontSize="24" Foreground="White" FontFamily="四圆黑" FontWeight="Bold" Margin="20,0,0,0"/>
</StackPanel>
</Border>
<Border Grid.Column="2" Background="#0A56C7">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock FontFamily="/Templates/fonts/font_5w2octy6l1q/#iconfont" Text="&#xe669;" FontSize="22" Foreground="White" FontWeight="Bold"/>
<TextBlock Text="首页" FontSize="22" Foreground="White" FontFamily="四圆黑" FontWeight="Bold" Margin="5,0"/>
</StackPanel>
</Border>
<Border Grid.Column="3" Background="Transparent">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
<TextBlock FontFamily="/Templates/fonts/font_5w2octy6l1q/#iconfont" Text="&#xf018f;" FontSize="26" Foreground="White" FontWeight="Bold" Margin="0,1,0,0"/>
<TextBlock Text="设置" FontSize="22" Foreground="White" FontWeight="Bold" Margin="5,0,20,0"/>
</StackPanel>
</Border>
</Grid>
</Border>
<Border Grid.Row="1" BorderBrush="Red" BorderThickness="0" CornerRadius="5" Background="Transparent" Margin="2,25,2,2">
<Border Grid.Row="1" Background="Transparent">
<ContentControl Content="{Binding UserContent}"/>
</Border>
<Border Grid.Row="2" BorderBrush="#1254AB" BorderThickness="2" CornerRadius="5" Background="Transparent" Margin="6,2,6,7">
<Border.Effect>
<DropShadowEffect Color="#1254AB" Direction="270" BlurRadius="10" ShadowDepth="5" Opacity="0.5"/>
</Border.Effect>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Left" Orientation="Horizontal">
<Button Content="首 页" x:Name="Index" Command="{Binding ControlOnClickCommand}" CommandParameter="{Binding Name,ElementName=Index}" Style="{StaticResource MaterialDesignFlatMidBgButton}" Width="100" Height="30" Background="#009999" BorderBrush="#FF36B5C1" Margin="10,0,10,0"/>
<Button Content="代码生成" x:Name="Generate" Command="{Binding FormControlCommand}" CommandParameter="{Binding Name,ElementName=Generate}" Style="{StaticResource MaterialDesignFlatMidBgButton}" Width="100" Height="30" Background="#009999" BorderBrush="#FF36B5C1" Margin="0,0,10,0"/>
<Button Content="键 盘" Command="{Binding OpenSystemKeyboardCommand}" Style="{StaticResource MaterialDesignFlatMidBgButton}" Width="100" Height="30" Background="#009999" BorderBrush="#FF36B5C1" Margin="0,0,10,0"/>
<Button Content="最小化" x:Name="Minimized" Command="{Binding FormControlCommand}" CommandParameter="{Binding Name,ElementName=Minimized}" Style="{StaticResource MaterialDesignFlatMidBgButton}" Width="100" Height="30" Background="#FF9900" BorderBrush="#FF9900" Margin="0,0,10,0"/>
<Button Content="退 出" x:Name="Exit" Command="{Binding FormControlCommand}" CommandParameter="{Binding Name,ElementName=Exit}" Style="{StaticResource MaterialDesignFlatMidBgButton}" Width="100" Height="30" Background="#FF0033" BorderBrush="#FF0033" Margin="0,0,10,0"/>
</StackPanel>
<StackPanel Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Right" Orientation="Horizontal">
<!--多行状态显示-->
<!--<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Margin="0,0,0,0" VerticalAlignment="Center">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="1">
<TextBlock Text="连接状态" FontSize="15" Foreground="Black" Margin="2,0,10,0"/>
</StackPanel>
<StackPanel Grid.Column="0">
<Ellipse Width="20" Height="20">
<Ellipse.Style>
<Style TargetType="Ellipse">
<Style.Triggers>
<DataTrigger Binding="{Binding PresentColor}" Value="0">
<Setter Property="Shape.Fill" Value="Orange"/>
</DataTrigger>
<DataTrigger Binding="{Binding PresentColor}" Value="1">
<Setter Property="Shape.Fill" Value="Green"/>
</DataTrigger>
<DataTrigger Binding="{Binding PresentColor}" Value="2">
<Setter Property="Shape.Fill" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Ellipse.Style>
</Ellipse>
</StackPanel>
</Grid>
</StackPanel>
</Grid>
</StackPanel>
<StackPanel Grid.Row="1" Margin="0,10,0,0" VerticalAlignment="Center">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="1">
<TextBlock Text="连接状态" FontSize="15" Foreground="Black" Margin="2,0,10,0"/>
</StackPanel>
<StackPanel Grid.Column="0">
<Ellipse Width="20" Height="20">
<Ellipse.Style>
<Style TargetType="Ellipse">
<Style.Triggers>
<DataTrigger Binding="{Binding PresentColor}" Value="0">
<Setter Property="Shape.Fill" Value="Orange"/>
</DataTrigger>
<DataTrigger Binding="{Binding PresentColor}" Value="1">
<Setter Property="Shape.Fill" Value="Green"/>
</DataTrigger>
<DataTrigger Binding="{Binding PresentColor}" Value="2">
<Setter Property="Shape.Fill" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Ellipse.Style>
</Ellipse>
</StackPanel>
</Grid>
</StackPanel>
</Grid>
</StackPanel>
</Grid>-->
<!--单行状态显示-->
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<Ellipse Width="30" Height="30">
<Ellipse.Style>
<Style TargetType="Ellipse">
<Style.Triggers>
<DataTrigger Binding="{Binding ShellScannerStatus}" Value="0">
<Setter Property="Shape.Fill" Value="Orange"/>
</DataTrigger>
<DataTrigger Binding="{Binding ShellScannerStatus}" Value="1">
<Setter Property="Shape.Fill" Value="Green"/>
</DataTrigger>
<DataTrigger Binding="{Binding ShellScannerStatus}" Value="2">
<Setter Property="Shape.Fill" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Ellipse.Style>
</Ellipse>
</StackPanel>
<StackPanel Grid.Column="1" VerticalAlignment="Center">
<TextBlock Text="箱壳扫码器" FontSize="15" Foreground="#FFFFFF" Margin="2,0,10,0"/>
</StackPanel>
</Grid>
</StackPanel>
<StackPanel Grid.Column="1">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<Ellipse Width="30" Height="30">
<Ellipse.Style>
<Style TargetType="Ellipse">
<Style.Triggers>
<DataTrigger Binding="{Binding BoldScannerStatus}" Value="0">
<Setter Property="Shape.Fill" Value="Orange"/>
</DataTrigger>
<DataTrigger Binding="{Binding BoldScannerStatus}" Value="1">
<Setter Property="Shape.Fill" Value="Green"/>
</DataTrigger>
<DataTrigger Binding="{Binding BoldScannerStatus}" Value="2">
<Setter Property="Shape.Fill" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Ellipse.Style>
</Ellipse>
</StackPanel>
<StackPanel Grid.Column="1" VerticalAlignment="Center">
<TextBlock Text="内胆扫码器" FontSize="15" Foreground="#FFFFFF" Margin="2,0,10,0"/>
</StackPanel>
</Grid>
</StackPanel>
<StackPanel Grid.Column="2">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<Ellipse Width="30" Height="30">
<Ellipse.Style>
<Style TargetType="Ellipse">
<Style.Triggers>
<DataTrigger Binding="{Binding PlcStatus}" Value="0">
<Setter Property="Shape.Fill" Value="Orange"/>
</DataTrigger>
<DataTrigger Binding="{Binding PlcStatus}" Value="1">
<Setter Property="Shape.Fill" Value="Green"/>
</DataTrigger>
<DataTrigger Binding="{Binding PlcStatus}" Value="2">
<Setter Property="Shape.Fill" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Ellipse.Style>
</Ellipse>
</StackPanel>
<StackPanel Grid.Column="1" VerticalAlignment="Center">
<TextBlock Text="PLC状态" FontSize="15" Foreground="#FFFFFF" Margin="2,0,10,0"/>
</StackPanel>
</Grid>
</StackPanel>
</Grid>
</StackPanel>
</Grid>
</Border>
</Grid>
</Border>
</Window>

@ -0,0 +1,115 @@
<UserControl x:Class="SlnMesnac.WPF.Page.IndexControl"
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:SlnMesnac.WPF.Page"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<UserControl.Resources>
</UserControl.Resources>
<Grid>
<Grid.Background>
<ImageBrush ImageSource="/Templates/image/background.jpg" />
</Grid.Background>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2.3*"/>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="2.2*"/>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="2.5*"/>
</Grid.ColumnDefinitions>
<!--<Border Grid.Row="0" Grid.Column="0" BorderBrush="Black" BorderThickness="2"/>
<Border Grid.Row="0" Grid.Column="1" BorderBrush="Black" BorderThickness="2"/>
<Border Grid.Row="0" Grid.Column="2" BorderBrush="Black" BorderThickness="2"/>
<Border Grid.Row="0" Grid.Column="3" BorderBrush="Black" BorderThickness="2"/>
<Border Grid.Row="0" Grid.Column="4" BorderBrush="Black" BorderThickness="2"/>
<Border Grid.Row="0" Grid.Column="5" BorderBrush="Black" BorderThickness="2"/>
<Border Grid.Row="0" Grid.Column="6" BorderBrush="Black" BorderThickness="2"/>
<Border Grid.Row="0" Grid.Column="7" BorderBrush="Black" BorderThickness="2"/>
<Border Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="8" BorderBrush="Black" BorderThickness="2"/>
<Border Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="8" BorderBrush="Black" BorderThickness="2"/>
<Border Grid.Row="3" Grid.Column="0" BorderBrush="Black" BorderThickness="2"/>
<Border Grid.Row="3" Grid.Column="1" BorderBrush="Black" BorderThickness="2"/>
<Border Grid.Row="3" Grid.Column="2" BorderBrush="Black" BorderThickness="2"/>
<Border Grid.Row="3" Grid.Column="3" BorderBrush="Black" BorderThickness="2"/>
<Border Grid.Row="3" Grid.Column="4" BorderBrush="Black" BorderThickness="2"/>
<Border Grid.Row="3" Grid.Column="5" BorderBrush="Black" BorderThickness="2"/>
<Border Grid.Row="3" Grid.Column="6" BorderBrush="Black" BorderThickness="2"/>
<Border Grid.Row="3" Grid.Column="7" BorderBrush="Black" BorderThickness="2"/>
<Border Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="8" BorderBrush="Black" BorderThickness="2"/>-->
<Border Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2">
<StackPanel Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="20,0,0,10">
<TextBlock Text="I68" FontSize="22" Foreground="Black" FontWeight="Bold" HorizontalAlignment="Center"/>
<TextBox FontSize="18" Foreground="Black" Width="150" Height="30"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Button Content="读取" Command="{Binding ControlOnClickCommand}" Foreground="White" Style="{StaticResource MaterialDesignFlatMidBgButton}" Width="70" Height="30" Background="#194B9F" BorderBrush="#194B9F" Margin="5,5"/>
<Button Content="写入" Command="{Binding ControlOnClickCommand}" Foreground="White" Style="{StaticResource MaterialDesignFlatMidBgButton}" Width="70" Height="30" Background="#194B9F" BorderBrush="#194B9F" Margin="5,5"/>
</StackPanel>
</StackPanel>
</Border>
<Border Grid.Row="0" Grid.Column="3" Grid.ColumnSpan="2">
<StackPanel Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="10,0,0,10">
<TextBlock Text="I68" FontSize="22" Foreground="Black" FontWeight="Bold" HorizontalAlignment="Center"/>
<TextBox FontSize="18" Foreground="Black" Width="150" Height="30"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Button Content="读取" Command="{Binding ControlOnClickCommand}" Foreground="White" Style="{StaticResource MaterialDesignFlatMidBgButton}" Width="70" Height="30" Background="#194B9F" BorderBrush="#194B9F" Margin="5,5"/>
<Button Content="写入" Command="{Binding ControlOnClickCommand}" Foreground="White" Style="{StaticResource MaterialDesignFlatMidBgButton}" Width="70" Height="30" Background="#194B9F" BorderBrush="#194B9F" Margin="5,5"/>
</StackPanel>
</StackPanel>
</Border>
<Border Grid.Row="0" Grid.Column="6" >
<StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,10">
<TextBlock Text="I68" FontSize="22" Foreground="Black" FontWeight="Bold" HorizontalAlignment="Center"/>
<TextBox FontSize="18" Foreground="Black" Width="150" Height="30"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Button Content="读取" Command="{Binding ControlOnClickCommand}" Foreground="White" Style="{StaticResource MaterialDesignFlatMidBgButton}" Width="70" Height="30" Background="#194B9F" BorderBrush="#194B9F" Margin="5,5"/>
<Button Content="写入" Command="{Binding ControlOnClickCommand}" Foreground="White" Style="{StaticResource MaterialDesignFlatMidBgButton}" Width="70" Height="30" Background="#194B9F" BorderBrush="#194B9F" Margin="5,5"/>
</StackPanel>
</StackPanel>
</Border>
<Border Grid.Row="3" Grid.Column="2">
<StackPanel Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="0,0,0,10">
<TextBlock Text="I68" FontSize="22" Foreground="Black" FontWeight="Bold" HorizontalAlignment="Center"/>
<TextBox FontSize="18" Foreground="Black" Width="150" Height="30"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Button Content="读取" Command="{Binding ControlOnClickCommand}" Foreground="White" Style="{StaticResource MaterialDesignFlatMidBgButton}" Width="70" Height="30" Background="#194B9F" BorderBrush="#194B9F" Margin="5,5"/>
<Button Content="写入" Command="{Binding ControlOnClickCommand}" Foreground="White" Style="{StaticResource MaterialDesignFlatMidBgButton}" Width="70" Height="30" Background="#194B9F" BorderBrush="#194B9F" Margin="5,5"/>
</StackPanel>
</StackPanel>
</Border>
<Border Grid.Row="3" Grid.Column="4">
<StackPanel Orientation="Vertical" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="0,0,0,10">
<TextBlock Text="I68" FontSize="22" Foreground="Black" FontWeight="Bold" HorizontalAlignment="Center"/>
<TextBox FontSize="18" Foreground="Black" Width="150" Height="30"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Button Content="读取" Command="{Binding ControlOnClickCommand}" Foreground="White" Style="{StaticResource MaterialDesignFlatMidBgButton}" Width="70" Height="30" Background="#194B9F" BorderBrush="#194B9F" Margin="5,5"/>
<Button Content="写入" Command="{Binding ControlOnClickCommand}" Foreground="White" Style="{StaticResource MaterialDesignFlatMidBgButton}" Width="70" Height="30" Background="#194B9F" BorderBrush="#194B9F" Margin="5,5"/>
</StackPanel>
</StackPanel>
</Border>
<Border Grid.Row="3" Grid.Column="6">
<StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="0,0,0,10">
<TextBlock Text="I68" FontSize="22" Foreground="Black" FontWeight="Bold" HorizontalAlignment="Center"/>
<TextBox FontSize="18" Foreground="Black" Width="150" Height="30"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
<Button Content="读取" Command="{Binding ControlOnClickCommand}" Foreground="White" Style="{StaticResource MaterialDesignFlatMidBgButton}" Width="70" Height="30" Background="#194B9F" BorderBrush="#194B9F" Margin="5,5"/>
<Button Content="写入" Command="{Binding ControlOnClickCommand}" Foreground="White" Style="{StaticResource MaterialDesignFlatMidBgButton}" Width="70" Height="30" Background="#194B9F" BorderBrush="#194B9F" Margin="5,5"/>
</StackPanel>
</StackPanel>
</Border>
</Grid>
</UserControl>

@ -0,0 +1,30 @@
using SlnMesnac.WPF.Attribute;
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 SlnMesnac.WPF.Page
{
/// <summary>
/// IndexControl.xaml 的交互逻辑
/// </summary>
[RegisterAsSingletonAttribute]
public partial class IndexControl : UserControl
{
public IndexControl()
{
InitializeComponent();
}
}
}

@ -0,0 +1,113 @@
<UserControl x:Class="SlnMesnac.WPF.Page.ProductDetails.DetailsEditControl"
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:SlnMesnac.WPF.Page.ProductDetails"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800" Background="Transparent">
<Grid Margin="5,10">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="3*"/>
<RowDefinition Height="2*"/>
<RowDefinition Height="5*"/>
</Grid.RowDefinitions>
<Border Grid.Row="0" Background="White" BorderBrush="White" BorderThickness="2" CornerRadius="3" Margin="10,10">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="3*"/>
<ColumnDefinition Width="7*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Background="Transparent" BorderBrush="#5B93EA" BorderThickness="2" CornerRadius="3" Margin="10,10"></Border>
<Border Grid.Column="1" Background="Transparent" CornerRadius="3" Margin="10,10">
<StackPanel Orientation="Vertical" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="0,10,0,0">
<Border Background="#1052AE" CornerRadius="5,5,5,0" Width="400" Height="40">
<TextBlock Text="无线射频识别RFID HW-RFR-050系列" Foreground="White" FontSize="20" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="10,0,0,0"/>
</Border>
<TextBlock Text="HW-RFR-050-B-003-1204S" Foreground="Black" FontSize="24" Margin="0,20"/>
<Border Background="#E6EDF6" CornerRadius="5" Width="150" Height="40" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="0,30,0,0"/>
</StackPanel>
</Border>
</Grid>
</Border>
<Border Grid.Row="1" Background="White" BorderBrush="White" BorderThickness="2" CornerRadius="3" Margin="10,10">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="7*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="1" Background="Transparent" BorderBrush="#5B93EA" BorderThickness="2" CornerRadius="3" Margin="10,10"></Border>
<!--<Border Grid.Column="0" Background="Transparent" CornerRadius="3" Margin="10,10">
</Border>-->
<StackPanel Grid.Column="0" Width="600" Orientation="Vertical" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="10,10,0,0">
<Border Background="#E6EDF6" CornerRadius="18" Height="40" Margin="0,10">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock FontFamily="/Templates/fonts/font_5w2octy6l1q/#iconfont" Text="&#xe61d;" Foreground="#1550B7" FontSize="22" VerticalAlignment="Center" Margin="5,0,0,0"/>
<TextBlock Text="体积小,三防性能优。" Foreground="#1550B7" FontSize="20" HorizontalAlignment="Left" VerticalAlignment="Center" />
</StackPanel>
</Border>
<Border Background="#E6EDF6" CornerRadius="18" Height="40" Margin="0,10">
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<TextBlock FontFamily="/Templates/fonts/font_5w2octy6l1q/#iconfont" Text="&#xe61d;" Foreground="#1550B7" FontSize="22" VerticalAlignment="Center" Margin="5,0,0,0"/>
<TextBlock Text="远距稳定识别。" Foreground="#1550B7" FontSize="20" HorizontalAlignment="Left" VerticalAlignment="Center" />
</StackPanel>
</Border>
</StackPanel>
</Grid>
</Border>
<Border Grid.Row="2" Background="White" BorderBrush="White" BorderThickness="2" CornerRadius="3" Margin="10,10">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Border Grid.Row="0" BorderBrush="Green" BorderThickness="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="3*"/>
<RowDefinition Height="6*"/>
</Grid.RowDefinitions>
<Border Grid.Row="0" BorderBrush="#1352B2" BorderThickness="10,0,0,0">
<Border.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="#D3DCF4" Offset="0.0"/>
<GradientStop Color="#FFFFFF" Offset="1.0"/>
</LinearGradientBrush>
</Border.Background>
<TextBlock Text="小尺寸" Foreground="#1550B7" FontSize="20" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="20,0,0,0"/>
</Border>
<TextBlock Grid.Row="1" Text=" HW-RFR-050-B-XX高频读写器的尺寸为39.8*72*13mm其可以固定在设计尺寸小的位
置。如辊轴输送线的辊轴与辊轴的中间缝隙,可以用来识别底部托盘标签。" TextWrapping="Wrap" FontSize="20" LineHeight="10"/>
</Grid>
</Border>
</Grid>
</Border>
</Grid>
</Border>
<Border Grid.Column="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="4.5*"/>
<RowDefinition Height="6*"/>
<RowDefinition Height="3*"/>
</Grid.RowDefinitions>
<Border Grid.Row="0" Background="White" BorderBrush="White" BorderThickness="2" CornerRadius="3" Margin="10,10"></Border>
<Border Grid.Row="1" Background="White" BorderBrush="White" BorderThickness="2" CornerRadius="3" Margin="10,10"></Border>
<Border Grid.Row="2" Background="White" BorderBrush="White" BorderThickness="2" CornerRadius="3" Margin="10,10"></Border>
</Grid>
</Border>
</Grid>
</UserControl>

@ -0,0 +1,31 @@
using SlnMesnac.WPF.Attribute;
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 SlnMesnac.WPF.Page.ProductDetails
{
/// <summary>
/// DetailsEditControl.xaml 的交互逻辑
/// </summary>
[RegisterAsSingletonAttribute]
public partial class DetailsEditControl : UserControl
{
public DetailsEditControl()
{
InitializeComponent();
}
}
}

@ -0,0 +1,12 @@
<UserControl x:Class="SlnMesnac.WPF.Page.ProductDetails.ProductDetailsControl"
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:SlnMesnac.WPF.Page.ProductDetails"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
</Grid>
</UserControl>

@ -0,0 +1,28 @@
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 SlnMesnac.WPF.Page.ProductDetails
{
/// <summary>
/// ProductDetailsControl.xaml 的交互逻辑
/// </summary>
public partial class ProductDetailsControl : UserControl
{
public ProductDetailsControl()
{
InitializeComponent();
}
}
}

@ -10,6 +10,7 @@
<ItemGroup>
<None Remove="appsettings.json" />
<None Remove="Templates\fonts\font_5w2octy6l1q\iconfont.ttf" />
<None Remove="Templates\gif\loading.gif" />
<None Remove="Templates\image\background.jpg" />
<None Remove="Templates\image\login-background.jpg" />
@ -27,7 +28,6 @@
<ProjectReference Include="..\SlnMesnac.Config\SlnMesnac.Config.csproj" />
<ProjectReference Include="..\SlnMesnac.Extensions\SlnMesnac.Extensions.csproj" />
<ProjectReference Include="..\SlnMesnac.Generate\SlnMesnac.Generate.csproj" />
<ProjectReference Include="..\SlnMesnac.Ioc\SlnMesnac.Ioc.csproj" />
<ProjectReference Include="..\SlnMesnac.Model\SlnMesnac.Model.csproj" />
<ProjectReference Include="..\SlnMesnac.Mqtt\SlnMesnac.Mqtt.csproj" />
<ProjectReference Include="..\SlnMesnac.Plc\SlnMesnac.Plc.csproj" />
@ -50,6 +50,9 @@
</ItemGroup>
<ItemGroup>
<Resource Include="Templates\fonts\font_5w2octy6l1q\iconfont.ttf">
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</Resource>
<Resource Include="Templates\gif\loading.gif" />
<Resource Include="Templates\image\background.jpg" />
<Resource Include="Templates\image\login-background.jpg" />

@ -0,0 +1,539 @@
/* Logo 字体 */
@font-face {
font-family: "iconfont logo";
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
}
.logo {
font-family: "iconfont logo";
font-size: 160px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* tabs */
.nav-tabs {
position: relative;
}
.nav-tabs .nav-more {
position: absolute;
right: 0;
bottom: 0;
height: 42px;
line-height: 42px;
color: #666;
}
#tabs {
border-bottom: 1px solid #eee;
}
#tabs li {
cursor: pointer;
width: 100px;
height: 40px;
line-height: 40px;
text-align: center;
font-size: 16px;
border-bottom: 2px solid transparent;
position: relative;
z-index: 1;
margin-bottom: -1px;
color: #666;
}
#tabs .active {
border-bottom-color: #f00;
color: #222;
}
.tab-container .content {
display: none;
}
/* 页面布局 */
.main {
padding: 30px 100px;
width: 960px;
margin: 0 auto;
}
.main .logo {
color: #333;
text-align: left;
margin-bottom: 30px;
line-height: 1;
height: 110px;
margin-top: -50px;
overflow: hidden;
*zoom: 1;
}
.main .logo a {
font-size: 160px;
color: #333;
}
.helps {
margin-top: 40px;
}
.helps pre {
padding: 20px;
margin: 10px 0;
border: solid 1px #e7e1cd;
background-color: #fffdef;
overflow: auto;
}
.icon_lists {
width: 100% !important;
overflow: hidden;
*zoom: 1;
}
.icon_lists li {
width: 100px;
margin-bottom: 10px;
margin-right: 20px;
text-align: center;
list-style: none !important;
cursor: default;
}
.icon_lists li .code-name {
line-height: 1.2;
}
.icon_lists .icon {
display: block;
height: 100px;
line-height: 100px;
font-size: 42px;
margin: 10px auto;
color: #333;
-webkit-transition: font-size 0.25s linear, width 0.25s linear;
-moz-transition: font-size 0.25s linear, width 0.25s linear;
transition: font-size 0.25s linear, width 0.25s linear;
}
.icon_lists .icon:hover {
font-size: 100px;
}
.icon_lists .svg-icon {
/* 通过设置 font-size 来改变图标大小 */
width: 1em;
/* 图标和文字相邻时,垂直对齐 */
vertical-align: -0.15em;
/* 通过设置 color 来改变 SVG 的颜色/fill */
fill: currentColor;
/* path stroke viewBox IE
normalize.css */
overflow: hidden;
}
.icon_lists li .name,
.icon_lists li .code-name {
color: #666;
}
/* markdown 样式 */
.markdown {
color: #666;
font-size: 14px;
line-height: 1.8;
}
.highlight {
line-height: 1.5;
}
.markdown img {
vertical-align: middle;
max-width: 100%;
}
.markdown h1 {
color: #404040;
font-weight: 500;
line-height: 40px;
margin-bottom: 24px;
}
.markdown h2,
.markdown h3,
.markdown h4,
.markdown h5,
.markdown h6 {
color: #404040;
margin: 1.6em 0 0.6em 0;
font-weight: 500;
clear: both;
}
.markdown h1 {
font-size: 28px;
}
.markdown h2 {
font-size: 22px;
}
.markdown h3 {
font-size: 16px;
}
.markdown h4 {
font-size: 14px;
}
.markdown h5 {
font-size: 12px;
}
.markdown h6 {
font-size: 12px;
}
.markdown hr {
height: 1px;
border: 0;
background: #e9e9e9;
margin: 16px 0;
clear: both;
}
.markdown p {
margin: 1em 0;
}
.markdown>p,
.markdown>blockquote,
.markdown>.highlight,
.markdown>ol,
.markdown>ul {
width: 80%;
}
.markdown ul>li {
list-style: circle;
}
.markdown>ul li,
.markdown blockquote ul>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown>ul li p,
.markdown>ol li p {
margin: 0.6em 0;
}
.markdown ol>li {
list-style: decimal;
}
.markdown>ol li,
.markdown blockquote ol>li {
margin-left: 20px;
padding-left: 4px;
}
.markdown code {
margin: 0 3px;
padding: 0 5px;
background: #eee;
border-radius: 3px;
}
.markdown strong,
.markdown b {
font-weight: 600;
}
.markdown>table {
border-collapse: collapse;
border-spacing: 0px;
empty-cells: show;
border: 1px solid #e9e9e9;
width: 95%;
margin-bottom: 24px;
}
.markdown>table th {
white-space: nowrap;
color: #333;
font-weight: 600;
}
.markdown>table th,
.markdown>table td {
border: 1px solid #e9e9e9;
padding: 8px 16px;
text-align: left;
}
.markdown>table th {
background: #F7F7F7;
}
.markdown blockquote {
font-size: 90%;
color: #999;
border-left: 4px solid #e9e9e9;
padding-left: 0.8em;
margin: 1em 0;
}
.markdown blockquote p {
margin: 0;
}
.markdown .anchor {
opacity: 0;
transition: opacity 0.3s ease;
margin-left: 8px;
}
.markdown .waiting {
color: #ccc;
}
.markdown h1:hover .anchor,
.markdown h2:hover .anchor,
.markdown h3:hover .anchor,
.markdown h4:hover .anchor,
.markdown h5:hover .anchor,
.markdown h6:hover .anchor {
opacity: 1;
display: inline-block;
}
.markdown>br,
.markdown>p>br {
clear: both;
}
.hljs {
display: block;
background: white;
padding: 0.5em;
color: #333333;
overflow-x: auto;
}
.hljs-comment,
.hljs-meta {
color: #969896;
}
.hljs-string,
.hljs-variable,
.hljs-template-variable,
.hljs-strong,
.hljs-emphasis,
.hljs-quote {
color: #df5000;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-type {
color: #a71d5d;
}
.hljs-literal,
.hljs-symbol,
.hljs-bullet,
.hljs-attribute {
color: #0086b3;
}
.hljs-section,
.hljs-name {
color: #63a35c;
}
.hljs-tag {
color: #333333;
}
.hljs-title,
.hljs-attr,
.hljs-selector-id,
.hljs-selector-class,
.hljs-selector-attr,
.hljs-selector-pseudo {
color: #795da3;
}
.hljs-addition {
color: #55a532;
background-color: #eaffea;
}
.hljs-deletion {
color: #bd2c00;
background-color: #ffecec;
}
.hljs-link {
text-decoration: underline;
}
/* 代码高亮 */
/* PrismJS 1.15.0
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection,
pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection,
pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre)>code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre)>code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
background: hsla(0, 0%, 100%, .5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}

@ -0,0 +1,414 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>iconfont Demo</title>
<link rel="shortcut icon" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg" type="image/x-icon"/>
<link rel="icon" type="image/svg+xml" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg"/>
<link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css">
<link rel="stylesheet" href="demo.css">
<link rel="stylesheet" href="iconfont.css">
<script src="iconfont.js"></script>
<!-- jQuery -->
<script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script>
<!-- 代码高亮 -->
<script src="https://a1.alicdn.com/oss/uploads/2018/12/26/a3f714d0-08e6-11e9-8a15-ebf944d7534c.js"></script>
<style>
.main .logo {
margin-top: 0;
height: auto;
}
.main .logo a {
display: flex;
align-items: center;
}
.main .logo .sub-title {
margin-left: 0.5em;
font-size: 22px;
color: #fff;
background: linear-gradient(-45deg, #3967FF, #B500FE);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
</style>
</head>
<body>
<div class="main">
<h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank">
<img width="200" src="https://img.alicdn.com/imgextra/i3/O1CN01Mn65HV1FfSEzR6DKv_!!6000000000514-55-tps-228-59.svg">
</a></h1>
<div class="nav-tabs">
<ul id="tabs" class="dib-box">
<li class="dib active"><span>Unicode</span></li>
<li class="dib"><span>Font class</span></li>
<li class="dib"><span>Symbol</span></li>
</ul>
</div>
<div class="tab-container">
<div class="content unicode" style="display: block;">
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont">&#xf018f;</span>
<div class="name">设置</div>
<div class="code-name">&amp;#xf018f;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe62d;</span>
<div class="name">设置</div>
<div class="code-name">&amp;#xe62d;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe624;</span>
<div class="name">关闭</div>
<div class="code-name">&amp;#xe624;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe627;</span>
<div class="name">对勾</div>
<div class="code-name">&amp;#xe627;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe62e;</span>
<div class="name">首页</div>
<div class="code-name">&amp;#xe62e;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe642;</span>
<div class="name">转入</div>
<div class="code-name">&amp;#xe642;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe645;</span>
<div class="name">常用购票人编辑32</div>
<div class="code-name">&amp;#xe645;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe646;</span>
<div class="name">删除</div>
<div class="code-name">&amp;#xe646;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe669;</span>
<div class="name">首页</div>
<div class="code-name">&amp;#xe669;</div>
</li>
<li class="dib">
<span class="icon iconfont">&#xe61d;</span>
<div class="name">对勾</div>
<div class="code-name">&amp;#xe61d;</div>
</li>
</ul>
<div class="article markdown">
<h2 id="unicode-">Unicode 引用</h2>
<hr>
<p>Unicode 是字体在网页端最原始的应用方式,特点是:</p>
<ul>
<li>支持按字体的方式去动态调整图标大小,颜色等等。</li>
<li>默认情况下不支持多色,直接添加多色图标会自动去色。</li>
</ul>
<blockquote>
<p>注意:新版 iconfont 支持两种方式引用多色图标SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)</p>
</blockquote>
<p>Unicode 使用步骤如下:</p>
<h3 id="-font-face">第一步:拷贝项目下面生成的 <code>@font-face</code></h3>
<pre><code class="language-css"
>@font-face {
font-family: 'iconfont';
src: url('iconfont.ttf?t=1742193918446') format('truetype');
}
</code></pre>
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
<pre><code class="language-css"
>.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
</code></pre>
<h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3>
<pre>
<code class="language-html"
>&lt;span class="iconfont"&gt;&amp;#x33;&lt;/span&gt;
</code></pre>
<blockquote>
<p>"iconfont" 是你项目下的 font-family。可以通过编辑项目查看默认是 "iconfont"。</p>
</blockquote>
</div>
</div>
<div class="content font-class">
<ul class="icon_lists dib-box">
<li class="dib">
<span class="icon iconfont icon-shezhi"></span>
<div class="name">
设置
</div>
<div class="code-name">.icon-shezhi
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-weibiaoti2fuzhi16"></span>
<div class="name">
设置
</div>
<div class="code-name">.icon-weibiaoti2fuzhi16
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-guanbi"></span>
<div class="name">
关闭
</div>
<div class="code-name">.icon-guanbi
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-duigou"></span>
<div class="name">
对勾
</div>
<div class="code-name">.icon-duigou
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-shouye"></span>
<div class="name">
首页
</div>
<div class="code-name">.icon-shouye
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-zhuanru"></span>
<div class="name">
转入
</div>
<div class="code-name">.icon-zhuanru
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-changyonggoupiaorenbianji"></span>
<div class="name">
常用购票人编辑32
</div>
<div class="code-name">.icon-changyonggoupiaorenbianji
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-changyonggoupiaorenshanchu"></span>
<div class="name">
删除
</div>
<div class="code-name">.icon-changyonggoupiaorenshanchu
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-shouye1"></span>
<div class="name">
首页
</div>
<div class="code-name">.icon-shouye1
</div>
</li>
<li class="dib">
<span class="icon iconfont icon-duigou1"></span>
<div class="name">
对勾
</div>
<div class="code-name">.icon-duigou1
</div>
</li>
</ul>
<div class="article markdown">
<h2 id="font-class-">font-class 引用</h2>
<hr>
<p>font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。</p>
<p>与 Unicode 使用方式相比,具有如下特点:</p>
<ul>
<li>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li>
<li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</li>
</ul>
<p>使用步骤如下:</p>
<h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3>
<pre><code class="language-html">&lt;link rel="stylesheet" href="./iconfont.css"&gt;
</code></pre>
<h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
<pre><code class="language-html">&lt;span class="iconfont icon-xxx"&gt;&lt;/span&gt;
</code></pre>
<blockquote>
<p>"
iconfont" 是你项目下的 font-family。可以通过编辑项目查看默认是 "iconfont"。</p>
</blockquote>
</div>
</div>
<div class="content symbol">
<ul class="icon_lists dib-box">
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-shezhi"></use>
</svg>
<div class="name">设置</div>
<div class="code-name">#icon-shezhi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-weibiaoti2fuzhi16"></use>
</svg>
<div class="name">设置</div>
<div class="code-name">#icon-weibiaoti2fuzhi16</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-guanbi"></use>
</svg>
<div class="name">关闭</div>
<div class="code-name">#icon-guanbi</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-duigou"></use>
</svg>
<div class="name">对勾</div>
<div class="code-name">#icon-duigou</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-shouye"></use>
</svg>
<div class="name">首页</div>
<div class="code-name">#icon-shouye</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-zhuanru"></use>
</svg>
<div class="name">转入</div>
<div class="code-name">#icon-zhuanru</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-changyonggoupiaorenbianji"></use>
</svg>
<div class="name">常用购票人编辑32</div>
<div class="code-name">#icon-changyonggoupiaorenbianji</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-changyonggoupiaorenshanchu"></use>
</svg>
<div class="name">删除</div>
<div class="code-name">#icon-changyonggoupiaorenshanchu</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-shouye1"></use>
</svg>
<div class="name">首页</div>
<div class="code-name">#icon-shouye1</div>
</li>
<li class="dib">
<svg class="icon svg-icon" aria-hidden="true">
<use xlink:href="#icon-duigou1"></use>
</svg>
<div class="name">对勾</div>
<div class="code-name">#icon-duigou1</div>
</li>
</ul>
<div class="article markdown">
<h2 id="symbol-">Symbol 引用</h2>
<hr>
<p>这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇<a href="">文章</a>
这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:</p>
<ul>
<li>支持多色图标了,不再受单色限制。</li>
<li>通过一些技巧,支持像字体那样,通过 <code>font-size</code>, <code>color</code> 来调整样式。</li>
<li>兼容性较差,支持 IE9+,及现代浏览器。</li>
<li>浏览器渲染 SVG 的性能一般,还不如 png。</li>
</ul>
<p>使用步骤如下:</p>
<h3 id="-symbol-">第一步:引入项目下面生成的 symbol 代码:</h3>
<pre><code class="language-html">&lt;script src="./iconfont.js"&gt;&lt;/script&gt;
</code></pre>
<h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3>
<pre><code class="language-html">&lt;style&gt;
.icon {
width: 1em;
height: 1em;
vertical-align: -0.15em;
fill: currentColor;
overflow: hidden;
}
&lt;/style&gt;
</code></pre>
<h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>
<pre><code class="language-html">&lt;svg class="icon" aria-hidden="true"&gt;
&lt;use xlink:href="#icon-xxx"&gt;&lt;/use&gt;
&lt;/svg&gt;
</code></pre>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function () {
$('.tab-container .content:first').show()
$('#tabs li').click(function (e) {
var tabContent = $('.tab-container .content')
var index = $(this).index()
if ($(this).hasClass('active')) {
return
} else {
$('#tabs li').removeClass('active')
$(this).addClass('active')
tabContent.hide().eq(index).fadeIn()
}
})
})
</script>
</body>
</html>

@ -0,0 +1,53 @@
@font-face {
font-family: "iconfont"; /* Project id */
src: url('iconfont.ttf?t=1742193918446') format('truetype');
}
.iconfont {
font-family: "iconfont" !important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-shezhi:before {
content: "\f018f";
}
.icon-weibiaoti2fuzhi16:before {
content: "\e62d";
}
.icon-guanbi:before {
content: "\e624";
}
.icon-duigou:before {
content: "\e627";
}
.icon-shouye:before {
content: "\e62e";
}
.icon-zhuanru:before {
content: "\e642";
}
.icon-changyonggoupiaorenbianji:before {
content: "\e645";
}
.icon-changyonggoupiaorenshanchu:before {
content: "\e646";
}
.icon-shouye1:before {
content: "\e669";
}
.icon-duigou1:before {
content: "\e61d";
}

File diff suppressed because one or more lines are too long

@ -0,0 +1,79 @@
{
"id": "",
"name": "",
"font_family": "iconfont",
"css_prefix_text": "icon-",
"description": "",
"glyphs": [
{
"icon_id": "162882",
"name": "设置",
"font_class": "shezhi",
"unicode": "f018f",
"unicode_decimal": 983439
},
{
"icon_id": "1068822",
"name": "设置",
"font_class": "weibiaoti2fuzhi16",
"unicode": "e62d",
"unicode_decimal": 58925
},
{
"icon_id": "2674473",
"name": "关闭",
"font_class": "guanbi",
"unicode": "e624",
"unicode_decimal": 58916
},
{
"icon_id": "2674480",
"name": "对勾",
"font_class": "duigou",
"unicode": "e627",
"unicode_decimal": 58919
},
{
"icon_id": "2675009",
"name": "首页",
"font_class": "shouye",
"unicode": "e62e",
"unicode_decimal": 58926
},
{
"icon_id": "2811153",
"name": "转入",
"font_class": "zhuanru",
"unicode": "e642",
"unicode_decimal": 58946
},
{
"icon_id": "2892817",
"name": "常用购票人编辑32",
"font_class": "changyonggoupiaorenbianji",
"unicode": "e645",
"unicode_decimal": 58949
},
{
"icon_id": "2892818",
"name": "删除",
"font_class": "changyonggoupiaorenshanchu",
"unicode": "e646",
"unicode_decimal": 58950
},
{
"icon_id": "12331675",
"name": "首页",
"font_class": "shouye1",
"unicode": "e669",
"unicode_decimal": 58985
},
{
"icon_id": "15953722",
"name": "对勾",
"font_class": "duigou1",
"unicode": "e61d",
"unicode_decimal": 58909
}
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 251 KiB

@ -4,7 +4,9 @@ using CommunityToolkit.Mvvm.Input;
using Microsoft.Extensions.DependencyInjection;
using SlnMesnac.Serilog;
using SlnMesnac.WPF.Attribute;
using SlnMesnac.WPF.Page;
using SlnMesnac.WPF.Page.Generate;
using SlnMesnac.WPF.Page.ProductDetails;
using SlnMesnac.WPF.ViewModel.Base;
using System;
using System.Windows;
@ -16,7 +18,8 @@ namespace SlnMesnac.WPF.ViewModel
{
public readonly SerilogHelper _logger;
private readonly GenerateControl _generateControl;
private readonly IndexControl _indexControl;
private readonly DetailsEditControl _detailsEditControl;
#region 参数定义
/// <summary>
/// PLC设备状态
@ -54,12 +57,14 @@ namespace SlnMesnac.WPF.ViewModel
#endregion
public MainWindowViewModel(SerilogHelper logger,GenerateControl generateControl)
public MainWindowViewModel(SerilogHelper logger,GenerateControl generateControl,IndexControl indexControl, DetailsEditControl detailsEditControl)
{
_logger = logger;
_generateControl = generateControl;
_indexControl = indexControl;
_detailsEditControl = detailsEditControl;
this.UserContent = _detailsEditControl;
}
/// <summary>

Loading…
Cancel
Save