Compare commits

...

2 Commits

Author SHA1 Message Date
liulb@mesnac.com de67e88911 10 months ago
liulb@mesnac.com c1006e4c69 添加门体、箱体异常数据采集 10 months ago

@ -14,7 +14,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("Admin.Core.RealTimeService")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+f9d9caac0eee191810018a8da33b8e1237b0f0fb")]
[assembly: System.Reflection.AssemblyProductAttribute("Admin.Core.RealTimeService")]
[assembly: System.Reflection.AssemblyTitleAttribute("Admin.Core.RealTimeService")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

@ -1 +1 @@
0868e6bde5b49a65a126b91d794e990427a11761
eadcc1228f6056a0472f8d77385e47a79ee23c2d78d9df09d62b6ffbc0733c9f

@ -8,4 +8,6 @@ build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = Admin.Core.RealTimeService
build_property.ProjectDir = E:\c#\AUCMA\最新代码整合\new\Admin.Core.RealTimeService\
build_property.ProjectDir = D:\Project\gitea\AUCMA\SCADA\Admin.Core.RealTimeService\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =

@ -74,6 +74,7 @@
<ItemGroup>
<ProjectReference Include="..\Admin.Core.Extensions\Admin.Core.Extensions.csproj" />
<ProjectReference Include="..\Aucma.Core.DataCollector\Aucma.Core.DataCollector.csproj" />
</ItemGroup>
<ItemGroup>

@ -19,6 +19,8 @@ using Admin.Core.Model.Model_New;
using static ICSharpCode.SharpZipLib.Zip.ExtendedUnixData;
using Microsoft.IdentityModel.Logging;
using Admin.Core.Socket;
using Admin.Core.Service;
using TouchSocket.Core;
namespace Aucma.Core.BoxFoam.Business
{
@ -218,6 +220,7 @@ namespace Aucma.Core.BoxFoam.Business
{
flag = false;
var obj = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("PqPlc"));
var foamLine1 = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("foamLine1Plc"));//发泡线1
if (obj != null)
{
if (obj.plc.IsConnected)
@ -230,26 +233,119 @@ namespace Aucma.Core.BoxFoam.Business
case "PB01_001":
item.SpaceStock= obj.plc.ReadInt16("DB200.440");
item.OnRouteAmount = item.SpaceStock-obj.plc.ReadInt16("DB200.88");
if (foamLine1 != null)
{
if (foamLine1.plc.IsConnected)
{
item.MaterialType = obj.plc.ReadString("DB400.16.0");
if (!string.IsNullOrEmpty(item.MaterialType))
{
var printBarCode001 = _printBarCodeServices.FirstAsync(d => d.MaterialCode == item.MaterialType).Result;
if (printBarCode001 != null)
{
item.typeNameA = printBarCode001.MaterialName;
}
}
}
}
break;
case "PB01_002":
item.SpaceStock = obj.plc.ReadInt16("DB200.442");
item.OnRouteAmount = item.SpaceStock - obj.plc.ReadInt16("DB200.90");
if (foamLine1 != null)
{
if (foamLine1.plc.IsConnected)
{
item.MaterialType = obj.plc.ReadString("DB400.28.0");
if (!string.IsNullOrEmpty(item.MaterialType))
{
var printBarCode002 = _printBarCodeServices.FirstAsync(d => d.MaterialCode == item.MaterialType).Result;
if (printBarCode002 != null)
{
item.typeNameA = printBarCode002.MaterialName;
}
}
}
}
break;
case "PB01_003":
item.SpaceStock = obj.plc.ReadInt16("DB200.444");
item.OnRouteAmount = item.SpaceStock - obj.plc.ReadInt16("DB200.92");
if (foamLine1 != null)
{
if (foamLine1.plc.IsConnected)
{
item.MaterialType = obj.plc.ReadString("DB400.40.0");
if (!string.IsNullOrEmpty(item.MaterialType))
{
var printBarCode003 = _printBarCodeServices.FirstAsync(d => d.MaterialCode == item.MaterialType).Result;
if (printBarCode003 != null)
{
item.typeNameA = printBarCode003.MaterialName;
}
}
}
}
break;
case "PB01_004":
item.SpaceStock = obj.plc.ReadInt16("DB200.446");
item.OnRouteAmount = item.SpaceStock - obj.plc.ReadInt16("DB200.94");
if (foamLine1 != null)
{
if (foamLine1.plc.IsConnected)
{
item.MaterialType = obj.plc.ReadString("DB400.28.0");
if (!string.IsNullOrEmpty(item.MaterialType))
{
var printBarCode004 = _printBarCodeServices.FirstAsync(d => d.MaterialCode == item.MaterialType).Result;
if (printBarCode004 != null)
{
item.typeNameA = printBarCode004.MaterialName;
}
}
}
}
break;
case "PB01_005":
item.SpaceStock = obj.plc.ReadInt16("DB200.448");
item.OnRouteAmount = item.SpaceStock - obj.plc.ReadInt16("DB200.96");
if (foamLine1 != null)
{
if (foamLine1.plc.IsConnected)
{
item.MaterialType = obj.plc.ReadString("DB400.52.0");
if (!string.IsNullOrEmpty(item.MaterialType))
{
var printBarCode005 = _printBarCodeServices.FirstAsync(d => d.MaterialCode == item.MaterialType).Result;
if (printBarCode005 != null)
{
item.typeNameA = printBarCode005.MaterialName;
}
}
}
}
break;
case "PB01_006":
item.SpaceStock = obj.plc.ReadInt16("DB200.450");
item.OnRouteAmount = item.SpaceStock - obj.plc.ReadInt16("DB200.98");
item.MaterialType = obj.plc.ReadString("DB400.64.0");
if (foamLine1 != null)
{
if (foamLine1.plc.IsConnected)
{
if (!string.IsNullOrEmpty(item.MaterialType))
{
var printBarCode006 = _printBarCodeServices.FirstAsync(d => d.MaterialCode == item.MaterialType).Result;
if (printBarCode006 != null)
{
item.typeNameA = printBarCode006.MaterialName;
}
}
}
}
break;
default:
break;
@ -264,11 +360,11 @@ namespace Aucma.Core.BoxFoam.Business
}
}
}
Thread.Sleep(1000);
Thread.Sleep(3000);
}
catch (Exception ex)
{
Console.WriteLine($"异常:{ex.Message}");
Console.WriteLine($"更新泡前库库库存,类型异常:{ex.Message}");
}
finally { flag = true; }
}

@ -17,6 +17,7 @@ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System.Net.Sockets;
using System.Text;
using Aucma.Core.DataCollector;
namespace Aucma.Core.BoxFoam
{
@ -106,6 +107,7 @@ namespace Aucma.Core.BoxFoam
app.UsePlcMildd(runPlcService);
//¿ªÆôɨÂë·þÎñ
app.UseTouchSocketMildd(socket);
app.UseDataCollectorExtensions();
}
#region ×¢²á·þÎñ

@ -157,22 +157,24 @@
<ColumnDefinition Width="5*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" Grid.Row="0" BorderBrush="White" BorderThickness="1" >
<TextBlock Text="型号1" FontSize="18" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<TextBlock Text="型号" FontSize="18" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
<Border Grid.Column="1" Grid.Row="0" BorderBrush="White" BorderThickness="1">
<Button Command="{Binding DataContext.SubmitCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}" CommandParameter="{Binding Text, ElementName=spaceCodeText}" Background="Transparent" Height="auto">
<TextBlock Text="{Binding materialType}" FontSize="16" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" />
<!--<Button Command="{Binding DataContext.SubmitCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}" CommandParameter="{Binding Text, ElementName=spaceCodeText}" Background="Transparent" Height="auto">
<TextBlock Text="{Binding materialType}" FontSize="16" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Button>
</Button>-->
</Border>
<Border Grid.Column="2" Grid.Row="0" BorderBrush="White" BorderThickness="1" >
<TextBlock Text="名称" FontSize="18" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
<Border Grid.Column="3" Grid.Row="0" BorderBrush="White" BorderThickness="1">
<Button Command="{Binding DataContext.SubmitCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}" CommandParameter="{Binding Text, ElementName=spaceCodeText}" Background="Transparent" Height="auto">
<TextBlock Text="{Binding typeNameA}" FontSize="16" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" />
<!--<Button Command="{Binding DataContext.SubmitCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}" CommandParameter="{Binding Text, ElementName=spaceCodeText}" Background="Transparent" Height="auto">
<TextBlock Text="{Binding typeNameA}" FontSize="16" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Button>
</Button>-->
</Border>
<Border Grid.Column="0" Grid.Row="1" BorderBrush="White" BorderThickness="1" >
<!--<Border Grid.Column="0" Grid.Row="1" BorderBrush="White" BorderThickness="1" >
<TextBlock Text="型号2" FontSize="18" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center"/>
</Border>
<Border Grid.Column="1" Grid.Row="1" BorderBrush="White" BorderThickness="1">
@ -203,7 +205,7 @@
<Button Command="{Binding DataContext.SubmitCommand3, RelativeSource={RelativeSource AncestorType=ItemsControl}}" CommandParameter="{Binding Text, ElementName=spaceCodeText}" Background="Transparent" Height="auto">
<TextBlock Text="{Binding typeNameC}" FontSize="16" Foreground="White" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Button>
</Border>
</Border>-->
</Grid>
</Border>

@ -217,7 +217,7 @@
"EquipName": "foamLine1Plc",
"PlcType": "Siemens",
"Enabled": true,
"IP":"10.10.93.21",
"IP": "10.10.93.21",
"Port": 102
},
{
@ -225,7 +225,7 @@
"EquipName": "foamLine2Plc",
"PlcType": "Siemens",
"Enabled": true,
"IP":"10.10.93.1",
"IP": "10.10.93.1",
"Port": 102
},
{
@ -245,6 +245,9 @@
"BeforeStoreCode": "PQK-001",
"ProductlineCode": "CX_02"
},
"StationInfo": {
"StationCode": "1004"
},
"IpRateLimiting": {
"EnableEndpointRateLimiting": false, //False: globally executed, true: executed for each
"StackBlockedRequests": false, //False: Number of rejections should be recorded on another counter

@ -15,7 +15,7 @@ namespace Aucma.Core.DataCollector.Factory
/// </summary>
public class BoxFoamFactory : DataCollectorFactory
{
private PlcModel _plc = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("Test"));
private PlcModel _plc = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("foamMachinePlc"));
public BoxFoamFactory(IBaseDeviceParamServices deviceParamServices, IRecordDeviceAlarmInfoServices deviceAlarmInfoServices, IRecordDeviceElectricityServices deviceElectricityServices) : base(deviceParamServices, deviceAlarmInfoServices, deviceElectricityServices)
{
@ -37,7 +37,7 @@ namespace Aucma.Core.DataCollector.Factory
Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}采集设备报警信息");
var plc = _plc.plc;
var deviceParams = base._deviceParamServices.Query(x => x.DeviceCode == "E00009");
var deviceParams = base._deviceParamServices.Query(x => x.DeviceCode == "E00015");
if (deviceParams != null)
{
@ -73,7 +73,7 @@ namespace Aucma.Core.DataCollector.Factory
else
{
Task.Delay(base.AlarmReadTimer).Wait();
_plc = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("Test"));
_plc = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("Test"));
}
}
catch (Exception ex)

@ -0,0 +1,91 @@
using Admin.Core.IService.IService_New;
using Admin.Core.Model.Model_New;
using Aucma.Core.HwPLc;
using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Aucma.Core.DataCollector.Factory
{
/// <summary>
/// 夹具数据采集
/// </summary>
public class BoxFoamFixture1Factory : DataCollectorFactory
{
private PlcModel _plc = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("foamLine1Plc"));
public BoxFoamFixture1Factory(IBaseDeviceParamServices deviceParamServices, IRecordDeviceAlarmInfoServices deviceAlarmInfoServices, IRecordDeviceElectricityServices deviceElectricityServices) : base(deviceParamServices, deviceAlarmInfoServices, deviceElectricityServices)
{
}
/// <summary>
/// 采集泡前库、发泡线、发泡机、泡后库设备报警信息
/// </summary>
/// <param name="deviceAlarmInfos"></param>
public override void CollectDeviceAlarmInfo(out List<Record_DeviceAlarmInfo> deviceAlarmInfos)
{
while (true)
{
try
{
if (_plc != null)
{
Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}采集发泡线1设备报警信息");
var plc = _plc.plc;
var deviceParams = base._deviceParamServices.Query(x => x.DeviceCode == "E00013");
if (deviceParams != null)
{
deviceAlarmInfos = new List<Record_DeviceAlarmInfo>();
string batchId = System.Guid.NewGuid().ToString("N");
foreach (var item in deviceParams)
{
base.ReadParamValueByPlc(plc, item.ParamAddress, item.ParamType, out int paramValue);
if (paramValue != 0)
{
deviceAlarmInfos.Add(new Record_DeviceAlarmInfo()
{
BatchId = batchId,
DeviceCode = item.DeviceCode,
DeviceType = "1",
ParamCode = item.ParamCode,
ParamValue = paramValue.ToString(),
AlarmInfo = item.ParamName,
AlarmTime = DateTime.Now,
CreadtedTime = DateTime.Now,
});
}
}
if (deviceAlarmInfos.Count > 0)
{
base._deviceAlarmInfoServices.AddAsync(deviceAlarmInfos);
}
}
Task.Delay(base.AlarmReadTimer).Wait();
}
else
{
Task.Delay(base.AlarmReadTimer).Wait();
_plc = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("foamLine1Plc"));
}
}
catch (Exception ex)
{
base._logger.Error($"采集泡前库、发泡线、发泡机、泡后库设备报警信息:{ex.Message}");
}
}
}
public override void CollectDeviceElectricity(out List<Record_DeviceElectricity> deviceElectricitys)
{
throw new NotImplementedException();
}
}
}

@ -0,0 +1,91 @@
using Admin.Core.IService.IService_New;
using Admin.Core.Model.Model_New;
using Aucma.Core.HwPLc;
using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Aucma.Core.DataCollector.Factory
{
/// <summary>
/// 夹具数据采集
/// </summary>
public class BoxFoamFixture2Factory : DataCollectorFactory
{
private PlcModel _plc = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("foamLine2Plc"));
public BoxFoamFixture2Factory(IBaseDeviceParamServices deviceParamServices, IRecordDeviceAlarmInfoServices deviceAlarmInfoServices, IRecordDeviceElectricityServices deviceElectricityServices) : base(deviceParamServices, deviceAlarmInfoServices, deviceElectricityServices)
{
}
/// <summary>
/// 采集泡前库、发泡线、发泡机、泡后库设备报警信息
/// </summary>
/// <param name="deviceAlarmInfos"></param>
public override void CollectDeviceAlarmInfo(out List<Record_DeviceAlarmInfo> deviceAlarmInfos)
{
while (true)
{
try
{
if (_plc != null)
{
Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}采集发泡线2设备报警信息");
var plc = _plc.plc;
var deviceParams = base._deviceParamServices.Query(x => x.DeviceCode == "E00014");
if (deviceParams != null)
{
deviceAlarmInfos = new List<Record_DeviceAlarmInfo>();
string batchId = System.Guid.NewGuid().ToString("N");
foreach (var item in deviceParams)
{
base.ReadParamValueByPlc(plc, item.ParamAddress, item.ParamType, out int paramValue);
if (paramValue != 0)
{
deviceAlarmInfos.Add(new Record_DeviceAlarmInfo()
{
BatchId = batchId,
DeviceCode = item.DeviceCode,
DeviceType = "1",
ParamCode = item.ParamCode,
ParamValue = paramValue.ToString(),
AlarmInfo = item.ParamName,
AlarmTime = DateTime.Now,
CreadtedTime = DateTime.Now,
});
}
}
if (deviceAlarmInfos.Count > 0)
{
base._deviceAlarmInfoServices.AddAsync(deviceAlarmInfos);
}
}
Task.Delay(base.AlarmReadTimer).Wait();
}
else
{
Task.Delay(base.AlarmReadTimer).Wait();
_plc = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("foamLine2Plc"));
}
}
catch (Exception ex)
{
base._logger.Error($"采集泡前库、发泡线、发泡机、泡后库设备报警信息:{ex.Message}");
}
}
}
public override void CollectDeviceElectricity(out List<Record_DeviceElectricity> deviceElectricitys)
{
throw new NotImplementedException();
}
}
}

@ -2,6 +2,7 @@
using Admin.Core.Model.Model_New;
using Aucma.Core.HwPLc;
using log4net;
using StackExchange.Profiling.Internal;
using System;
using System.Collections.Generic;
using System.Linq;
@ -11,11 +12,11 @@ using System.Threading.Tasks;
namespace Aucma.Core.DataCollector.Factory
{
/// <summary>
/// 体发泡数据采集
/// 体发泡数据采集
/// </summary>
public class DoorFoamFactory : DataCollectorFactory
{
private PlcModel _plc = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("Test"));
private PlcModel _plc = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("FoamPlc"));
public DoorFoamFactory(IBaseDeviceParamServices deviceParamServices, IRecordDeviceAlarmInfoServices deviceAlarmInfoServices, IRecordDeviceElectricityServices deviceElectricityServices) : base(deviceParamServices, deviceAlarmInfoServices, deviceElectricityServices)
{
@ -31,13 +32,14 @@ namespace Aucma.Core.DataCollector.Factory
{
try
{
Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}获取PLC:{_plc.ToJson()}");
if (_plc != null)
{
Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}获取PLC状态:{_plc.IsConnect}");
Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}采集设备报警信息");
var plc = _plc.plc;
var deviceParams = base._deviceParamServices.Query(x => x.DeviceCode == "E00009");
var deviceParams = base._deviceParamServices.Query(x => x.DeviceCode == "E00026");
if (deviceParams != null)
{
@ -73,12 +75,13 @@ namespace Aucma.Core.DataCollector.Factory
else
{
Task.Delay(base.AlarmReadTimer).Wait();
_plc = PlcHelper.melsecList.FirstOrDefault(d => d.EquipName.Equals("Test"));
_plc = PlcHelper.siemensList.FirstOrDefault(d => d.EquipName.Equals("FoamPlc"));
}
}
catch (Exception ex)
{
base._logger.Error($"采集泡前库、发泡线、发泡机、泡后库设备报警信息:{ex.Message}");
Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}采集泡前库、发泡线、发泡机、泡后库设备报警信息:{ex.Message}");
base._logger.Error($"采集泡前库、发泡线、发泡机、泡后库设备报警信息:{ex.Message}");
}
}
}

@ -75,6 +75,7 @@
<ItemGroup>
<ProjectReference Include="..\Admin.Core.Extensions\Admin.Core.Extensions.csproj" />
<ProjectReference Include="..\Aucma.Core.DataCollector\Aucma.Core.DataCollector.csproj" />
</ItemGroup>
<ItemGroup>

@ -17,6 +17,7 @@ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using System.Net.Sockets;
using System.Text;
using Aucma.Core.DataCollector;
namespace Aucma.Core.DoorFoam
{
@ -94,8 +95,10 @@ namespace Aucma.Core.DoorFoam
app.UseStaticFiles();
//PLC
app.UsePlcMildd(runPlcService);
//
//扫码器socket 通讯
app.UseTouchSocketMildd(socket);
//门体异常数据采集
app.UseDataCollectorExtensions();
}
#region ×¢²á·þÎñ

@ -6,11 +6,13 @@
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:local="clr-namespace:Aucma.Core.PrintTo.Views"
mc:Ignorable="d"
Title="登录"
FontFamily="Microsoft YaHei"
Title="登录"
x:Name="MainWindow"
FontFamily="Microsoft YaHei"
WindowStartupLocation="CenterScreen"
WindowStyle="ToolWindow" WindowState="Normal" ResizeMode="NoResize"
Height="600" Width="800">
WindowState="Maximized" d:DesignWidth="1200" d:DesignHeight="900"
WindowStyle="ToolWindow" ResizeMode="NoResize">
<Window.Background>
<ImageBrush ImageSource="/Assets/Images/login-background.png" />
</Window.Background>
@ -18,46 +20,23 @@
<Border.Effect>
<DropShadowEffect Color="Gray" ShadowDepth="0" BlurRadius="5" Opacity="0.3" Direction="0"></DropShadowEffect>
</Border.Effect>
<Canvas>
<StackPanel >
<Image Source="/Assets/Images/Newlog.png" Width="100" />
</StackPanel>
<materialDesign:Card Background="#fff" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="200 100"
UniformCornerRadius="15" Width="400" Height="300" Opacity="0.9"
>
<materialDesign:DialogHost CloseOnClickAway="True" x:Name="DialogHost" >
<StackPanel>
<TextBox Margin="0 50 0 0"
x:Name="txtUserName"
Width="300"
FontSize="12"
materialDesign:HintAssist.Hint="账号"
BorderThickness="1"
BorderBrush="{StaticResource MaterialDesignDivider}"
Style="{StaticResource MaterialDesignOutlinedTextBox}"
>
</TextBox>
<PasswordBox
Margin="0 10 0 0"
x:Name="txtPassword"
Width="300"
FontSize="12"
materialDesign:HintAssist.Hint="密码"
BorderThickness="1"
BorderBrush="{StaticResource MaterialDesignDivider}"
Style="{StaticResource MaterialDesignOutlinedPasswordBox}"
></PasswordBox>
<Button Margin="0 20 0 0"
x:Name="loginBtn"
Style="{StaticResource MaterialDesignFlatMidBgButton}"
Width="300"
Height="53"
materialDesign:ButtonAssist.CornerRadius="10"
Content="登录"/>
</StackPanel>
</materialDesign:DialogHost>
</materialDesign:Card>
<Canvas x:Name="canvas">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<UniformGrid Rows="0">
</UniformGrid>
<UniformGrid Rows="0">
</UniformGrid>
<UniformGrid Rows="0">
</UniformGrid>
</Grid>
</Canvas>
</Border>
</Window>

Loading…
Cancel
Save