Sfoglia il codice sorgente

修改MQTT主题

样式分支
pry 2 anni fa
parent
commit
c7e8399b23
10 ha cambiato i file con 2198 aggiunte e 1300 eliminazioni
  1. +12
    -4
      BPASmartClient.Business/Plugin/DeviceMgr.cs
  2. +5
    -2
      BPASmartClient.Business/TopicDefine.cs
  3. +1465
    -863
      BPASmartClient.CustomResource/Themes/GenricStyle.xaml
  4. +454
    -324
      BPASmartClient.CustomResource/Themes/MyStyle.xaml
  5. +9
    -0
      BPASmartClient.Http/APIHelper.cs
  6. +2
    -1
      BPASmartClient.MORKSM.BK.PLC/MorksMachine.cs
  7. +1
    -1
      BPASmartClient.Modbus/ModbusTcp.cs
  8. +38
    -19
      BPASmartClient.MorkS/Control.cs
  9. +4
    -4
      BPASmartClient/DeviceInfo.xml
  10. +208
    -82
      BPASmartClient/MainWindow.xaml

+ 12
- 4
BPASmartClient.Business/Plugin/DeviceMgr.cs Vedi File

@@ -80,9 +80,10 @@ namespace BPASmartClient.Business
try
{
int PushType = i;//0:主料 1:辅料
var jsondata = new { device.DeviceId, PushType };
string header = $"[{InternetInfo.StockServer}/stock/GetItemInfo]_[{DateTime.Now.Ticks}]".AESEncrypt();
string url = $"{InternetInfo.StockServer}/stock/GetItemInfo";
int clientId = device.DeviceId;
var jsondata = new { clientId, PushType };
string header = $"[/stock/GetItemInfo]_[{DateTime.Now.Ticks}]".AESEncrypt();
string url = $"{InternetInfo.StockServer}GetItemInfo";
result = APIHelper.GetInstance.HttpRequest(url, header, jsondata, RequestType.POST);

if (PushType == 1)
@@ -96,12 +97,17 @@ namespace BPASmartClient.Business
}
else if (PushType == 0)
{
var apiData = JsonConvert.DeserializeObject<OrderMaterialDelivery>(result);
EventBus.EventBus.GetInstance().Publish(new MaterialDeliveryEvent()
{
Id = device.DeviceId,
orderMaterialDelivery = JsonConvert.DeserializeObject<OrderMaterialDelivery>(result)
orderMaterialDelivery = apiData
});
MessageLog.GetInstance.Show("接收到物料信息");
apiData?.BatchingInfo?.ForEach(x =>
{
MessageLog.GetInstance.Show($"物料ID:=[{x.BatchingId}],{x.BatchingLoc}号位置:{x.BatchingCount}");
});
}
}
catch (Exception ex)
@@ -114,6 +120,8 @@ namespace BPASmartClient.Business
});
}



public void StopService()
{
this.devices.ForEach(device => device.Stop());


+ 5
- 2
BPASmartClient.Business/TopicDefine.cs Vedi File

@@ -29,8 +29,11 @@ namespace BPASmartClient.Business
PushHeartbeatTopics = new Dictionary<DeviceClientType, string>();
foreach (var device in devices)
{
SubscribTopics.Add(TOPIC.GetInstance.GetOrderPushTopic(device.DeviceType, Plugin.GetInstance().GetPlugin<ConfigMgr>().ClientId));
SubscribTopics.Add(TOPIC.GetInstance.GetBusinessTopic(device.DeviceType, Plugin.GetInstance().GetPlugin<ConfigMgr>().ClientId));
//SubscribTopics.Add(TOPIC.GetInstance.GetOrderPushTopic(device.DeviceType, Plugin.GetInstance().GetPlugin<ConfigMgr>().ClientId));
//SubscribTopics.Add(TOPIC.GetInstance.GetBusinessTopic(device.DeviceType, Plugin.GetInstance().GetPlugin<ConfigMgr>().ClientId));

SubscribTopics.Add(TOPIC.GetInstance.GetOrderPushTopic(device.DeviceType, device.DeviceId));
SubscribTopics.Add(TOPIC.GetInstance.GetBusinessTopic(device.DeviceType, device.DeviceId));

PushHeartbeatTopics.Add(device.DeviceType, TOPIC.GetInstance.GetHeatbeatTopic(device.DeviceType));
}


+ 1465
- 863
BPASmartClient.CustomResource/Themes/GenricStyle.xaml
File diff soppresso perché troppo grande
Vedi File


+ 454
- 324
BPASmartClient.CustomResource/Themes/MyStyle.xaml
File diff soppresso perché troppo grande
Vedi File


+ 9
- 0
BPASmartClient.Http/APIHelper.cs Vedi File

@@ -8,6 +8,8 @@ using System.Text;
using System.Threading.Tasks;
using System.Web;
using Newtonsoft.Json;
using System.Net.Http;

namespace BPASmartClient.Http
{
public class APIHelper
@@ -17,6 +19,13 @@ namespace BPASmartClient.Http
public static APIHelper GetInstance => _Instance ?? (_Instance = new APIHelper());
private APIHelper() { }

/// <summary>
/// POST 数据请求
/// </summary>
/// <param name="url">地址</param>
/// <param name="data">参数数据</param>
/// <param name="head">请求头</param>
/// <returns></returns>
public string PostData(string url, string data, string head)
{
byte[] b = Encoding.UTF8.GetBytes(data);//把字符串转换为二进制


+ 2
- 1
BPASmartClient.MORKSM.BK.PLC/MorksMachine.cs Vedi File

@@ -18,6 +18,7 @@ namespace BPASmartClient.MORKSM.BK.PLC

public override void Init()
{
modbusTcp.ModbusTcpConnect(IpAddress, Port);
//读取数据
EventBus.EventBus.GetInstance().Subscribe<ReadModel>(DeviceId, delegate (IEvent @event, EventCallBackHandle callBack)
{
@@ -63,7 +64,7 @@ namespace BPASmartClient.MORKSM.BK.PLC

public override void Start()
{
modbusTcp.ModbusTcpConnect(IpAddress, Port);
}

public override void Stop()


+ 1
- 1
BPASmartClient.Modbus/ModbusTcp.cs Vedi File

@@ -195,7 +195,7 @@ namespace BPASmartClient.Modbus
}
catch (Exception ex)
{
MessageLog.GetInstance.ShowEx(ex.ToString());
MessageLog.GetInstance.ShowEx($"读取地址:【{startAddress}】,读取类型:【{readType}】出错,{ex.ToString()}");
if (ex.InnerException is SocketException)
{
tcpClient = null;


+ 38
- 19
BPASmartClient.MorkS/Control.cs Vedi File

@@ -36,7 +36,24 @@ namespace BPASmartClient.MorkS
DataParse();
ReadPLCData();
Main();
//初始化中

ThreadManage.GetInstance().StartLong(new Action(() =>
{
if (RTrig.GetInstance("ResetProgram").Start(Initing))
{
ThreadManage.GetInstance().StopTask("MainTask", new Action(() =>
{
ThreadManage.GetInstance().StopTask("ReadPLCData", new Action(() =>
{
mORKS = null;
mORKS = new GVL_MORKS();
ReadPLCData();
Main();
}));
}));
}
Thread.Sleep(10);
}), "ResetProgram");
}

public override void Stop()
@@ -63,6 +80,7 @@ namespace BPASmartClient.MorkS
if (@event is RecipeBomEvent recipe)
{
recipeBoms = recipe.recipeBoms;
WriteRecipeBoms();
}
});
}
@@ -135,24 +153,24 @@ namespace BPASmartClient.MorkS
}
}));

ReadData("M550.0", 20, new Action<bool[]>((bools) =>
{
//alarm.MachineLeftLowTemperature = bools[0];
//alarm.MachineRightLowTemperature = bools[1];
//alarm.Supply1_LossBowl = bools[2];
//alarm.Supply2_LossBowl = bools[3];
//alarm.Supply1_ErrorOutBowl = bools[4];
//alarm.Supply2_ErrorOutBowl = bools[5];
//alarm.PushBowlCylinderError = bools[6];
//alarm.NoodleMacCommunicateError = bools[7];
//alarm.DosingMacCommunicateError = bools[8];
//alarm.RobotMacCommunicateError = bools[9];
//alarm.RobotInitError = bools[11];
//alarm.RobotUrgentStop = bools[12];
//alarm.RobotNotInRemoteMode = bools[13];
//alarm.RobotNotInReady = bools[14];
//alarm.RobotSelfInException = bools[15];
}));
//ReadData("M550.0", 20, new Action<bool[]>((bools) =>
//{
// //alarm.MachineLeftLowTemperature = bools[0];
// //alarm.MachineRightLowTemperature = bools[1];
// //alarm.Supply1_LossBowl = bools[2];
// //alarm.Supply2_LossBowl = bools[3];
// //alarm.Supply1_ErrorOutBowl = bools[4];
// //alarm.Supply2_ErrorOutBowl = bools[5];
// //alarm.PushBowlCylinderError = bools[6];
// //alarm.NoodleMacCommunicateError = bools[7];
// //alarm.DosingMacCommunicateError = bools[8];
// //alarm.RobotMacCommunicateError = bools[9];
// //alarm.RobotInitError = bools[11];
// //alarm.RobotUrgentStop = bools[12];
// //alarm.RobotNotInRemoteMode = bools[13];
// //alarm.RobotNotInReady = bools[14];
// //alarm.RobotSelfInException = bools[15];
//}));

EventBus.EventBus.GetInstance().Publish(new ReadModel() { Id = DeviceId, Address = "VW372", Length = 1 }, (o) =>
{
@@ -185,6 +203,7 @@ namespace BPASmartClient.MorkS
if (@event == null) return;
if (@event is DoOrderEvent order)
{
if (order.MorkOrder.GoodBatchings == null) return;
OrderCount++;
MessageLog.GetInstance.Show($"接收到{OrderCount}次订单");
foreach (var item in order.MorkOrder.GoodBatchings)


+ 4
- 4
BPASmartClient/DeviceInfo.xml Vedi File

@@ -24,18 +24,18 @@
<Peripheral Module="BPASmartClient.MORKSM.BK.PLC.MorksMachine">
<Parameters>
<IpAddress>127.0.0.1</IpAddress>
<Port>1</Port>
<Port>502</Port>
</Parameters>
</Peripheral>

<Peripheral Module="BPASmartClient.MORKSM.BK.PLC.MorksMachine">
<!--<Peripheral Module="BPASmartClient.MORKSM.BK.PLC.MorksMachine">
<Parameters>
<IpAddress>127.0.10.1</IpAddress>
<Port>11</Port>
</Parameters>
</Peripheral>
</Peripheral>-->

<Peripheral Module="BPASmartClient.KLMCoffee.CoffeeMachine">
<Peripheral Module="BPASmartClient.KLMCoffee.CoffeeMachine">
<Parameters>
<PortName>COM8</PortName>
<BaudRate>38400</BaudRate>


+ 208
- 82
BPASmartClient/MainWindow.xaml Vedi File

@@ -1,135 +1,261 @@
<Window x:Class="BPASmartClient.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:BPASmartClient"
xmlns:vm="clr-namespace:BPASmartClient.ViewModel;assembly=BPASmartClient.ViewModel"
xmlns:pry="clr-namespace:BPASmartClient.CustomResource.UserControls;assembly=BPASmartClient.CustomResource"
Title="MainWindow" Width="1600"
Height="900"
AllowsTransparency="True"
Background="{x:Null}"
Topmost="False"
WindowStartupLocation="CenterScreen"
WindowStyle="None"
mc:Ignorable="d">
<Window
x:Class="BPASmartClient.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:local="clr-namespace:BPASmartClient"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:pry="clr-namespace:BPASmartClient.CustomResource.UserControls;assembly=BPASmartClient.CustomResource"
xmlns:vm="clr-namespace:BPASmartClient.ViewModel;assembly=BPASmartClient.ViewModel"
Title="MainWindow"
Width="1600"
Height="900"
AllowsTransparency="True"
Background="{x:Null}"
Topmost="False"
WindowStartupLocation="CenterScreen"
WindowStyle="None"
mc:Ignorable="d">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/GenricStyle.xaml"/>
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/MyStyle.xaml"/>
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/GenricStyle.xaml" />
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/MyStyle.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Window.DataContext>
<vm:MainViewModel></vm:MainViewModel>
<vm:MainViewModel />
</Window.DataContext>
<Border Style="{DynamicResource border主窗体背景}" x:Name="br" >
<Border x:Name="br" Style="{DynamicResource border主窗体背景}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="60"/>
<RowDefinition/>
<RowDefinition Height="60" />
<RowDefinition />
</Grid.RowDefinitions>

<!--标题-->
<!-- 标题 -->
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="300"></ColumnDefinition>
<ColumnDefinition ></ColumnDefinition>
<ColumnDefinition Width="300" />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Border Grid.ColumnSpan="2" Style="{DynamicResource bordertop矩形}"></Border>
<Border Style="{DynamicResource bordertopL}"></Border>
<Image Margin="10,0,0,0" VerticalAlignment="Center" Style="{DynamicResource imagetop_Title}" ></Image>
<Border Grid.ColumnSpan="2" Style="{DynamicResource bordertop矩形}" />
<Border Style="{DynamicResource bordertopL}" />
<Image
Margin="10,0,0,0"
VerticalAlignment="Center"
Style="{DynamicResource imagetop_Title}" />
<Grid Grid.Column="1">
<Menu >
<MenuItem Header="状态监视" >
<MenuItem Header="日志监视" FontSize="12" Click="MenuItem_Click" Tag="LogView" />
<Separator/>
<MenuItem Header="订单监视" FontSize="12" Click="MenuItem_Click" Tag="RealTimeDataControl" />
<Separator/>
<MenuItem Header="设备监视" FontSize="12" Click="MenuItem_Click" Tag="RealTimeDataControl" />
<Separator/>
<MenuItem Header="告警监视" FontSize="12" Click="MenuItem_Click" Tag="RealTimeDataControl" />
<Separator/>
<MenuItem Header="IOT监视" FontSize="12" Click="MenuItem_Click" Tag="RealTimeDataControl" />
<Menu>
<MenuItem Header="状态监视">
<MenuItem
Click="MenuItem_Click"
FontSize="12"
Header="日志监视"
Tag="LogView" />
<Separator />
<MenuItem
Click="MenuItem_Click"
FontSize="12"
Header="订单监视"
Tag="OrderStatusView" />
<Separator />
<MenuItem
Click="MenuItem_Click"
FontSize="12"
Header="设备监视"
Tag="RealTimeDataControl" />
<Separator />
<MenuItem
Click="MenuItem_Click"
FontSize="12"
Header="告警监视"
Tag="RealTimeDataControl" />
<Separator />
<MenuItem
Click="MenuItem_Click"
FontSize="12"
Header="IOT监视"
Tag="RealTimeDataControl" />
</MenuItem>
<MenuItem Header="综合查询">
<MenuItem Header="告警查询" FontSize="12" Click="MenuItem_Click" Tag="HistoryFaultControl"/>
<Separator/>
<MenuItem Header="日志查询" FontSize="12" Click="MenuItem_Click" Tag="MaintenanceNotificationControl"/>
<Separator/>
<MenuItem Header="维护查询" FontSize="12" Click="MenuItem_Click" Tag="WorkorderManagementControl"/>
<MenuItem
Click="MenuItem_Click"
FontSize="12"
Header="告警查询"
Tag="HistoryFaultControl" />
<Separator />
<MenuItem
Click="MenuItem_Click"
FontSize="12"
Header="日志查询"
Tag="MaintenanceNotificationControl" />
<Separator />
<MenuItem
Click="MenuItem_Click"
FontSize="12"
Header="维护查询"
Tag="WorkorderManagementControl" />
</MenuItem>
<MenuItem Header="功能列表">
<MenuItem Header="加盟商管理" FontSize="12" Click="MenuItem_Click" Tag="OnOffControl"/>
<Separator/>
<MenuItem Header="功能列表2" FontSize="12" Click="MenuItem_Click" Tag="SystemParameterControl" />
<MenuItem
Click="MenuItem_Click"
FontSize="12"
Header="加盟商管理"
Tag="OnOffControl" />
<Separator />
<MenuItem
Click="MenuItem_Click"
FontSize="12"
Header="功能列表2"
Tag="SystemParameterControl" />
</MenuItem>
<MenuItem Header="参数配置">
<MenuItem Header="参数设置" FontSize="12" Click="MenuItem_Click" Tag="OnOffControl"/>
<Separator/>
<MenuItem Header="系统设置" FontSize="12" Click="MenuItem_Click" Tag="SystemParameterControl" />
<Separator/>
<MenuItem Header="退出程序" FontSize="12" Click="MenuItem_Click" Tag="RealTimevideoControl"/>
<MenuItem
Click="MenuItem_Click"
FontSize="12"
Header="参数设置"
Tag="OnOffControl" />
<Separator />
<MenuItem
Click="MenuItem_Click"
FontSize="12"
Header="系统设置"
Tag="SystemParameterControl" />
<Separator />
<MenuItem
Click="MenuItem_Click"
FontSize="12"
Header="退出程序"
Tag="RealTimevideoControl" />
</MenuItem>
<MenuItem Header="系统帮助">
<MenuItem Header="版本更新历史" FontSize="12" Click="MenuItem_Click" Tag="OnOffControl"/>
<Separator/>
<MenuItem Header="帮助文档" FontSize="12" Click="MenuItem_Click" Tag="SystemParameterControl" />
<MenuItem
Click="MenuItem_Click"
FontSize="12"
Header="版本更新历史"
Tag="OnOffControl" />
<Separator />
<MenuItem
Click="MenuItem_Click"
FontSize="12"
Header="帮助文档"
Tag="SystemParameterControl" />
</MenuItem>
</Menu>
</Grid>

<StackPanel Grid.Column="4" Orientation="Horizontal" HorizontalAlignment="Right" Height="50" VerticalAlignment="Top">
<StackPanel
Grid.Column="4"
Height="50"
HorizontalAlignment="Right"
VerticalAlignment="Top"
Orientation="Horizontal">
<Border Style="{DynamicResource border竖线}" />
<StackPanel Margin="5" HorizontalAlignment="Center" VerticalAlignment="Center" >
<StackPanel
Margin="5"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<TextBlock FontSize="12">网</TextBlock>
<TextBlock FontSize="12">络</TextBlock>
</StackPanel>
<ToggleButton Margin="5" VerticalAlignment="Center" ToolTip="网络连接状态" HorizontalAlignment="Center" Style="{DynamicResource StatusBtnStyle网络连接状态}" DataContext="{Binding GaoJingMessage}" Cursor="Hand"/>
<ToggleButton
Margin="5"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Cursor="Hand"
DataContext="{Binding GaoJingMessage}"
Style="{DynamicResource StatusBtnStyle网络连接状态}"
ToolTip="网络连接状态" />
<Border Style="{DynamicResource border竖线}" />
<ToggleButton VerticalAlignment="Center" ToolTip="告警消息" HorizontalAlignment="Center" Style="{DynamicResource StatusBtnStyle告警}" DataContext="{Binding GaoJingMessage}" Cursor="Hand"/>
<ToggleButton
HorizontalAlignment="Center"
VerticalAlignment="Center"
Cursor="Hand"
DataContext="{Binding GaoJingMessage}"
Style="{DynamicResource StatusBtnStyle告警}"
ToolTip="告警消息" />
<Border Style="{DynamicResource border竖线}" />
<Grid Margin="10,0,10,0" VerticalAlignment="Center" >
<Grid Margin="10,0,10,0" VerticalAlignment="Center">
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition/>
<RowDefinition Height="30" />
<RowDefinition />
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Grid.Row="0">
<TextBlock x:Name="time" FontSize="16" Text="18:00:00"/>
<Image Style="{DynamicResource timeImage}" Margin="10,0,0,0"/>
<StackPanel Grid.Row="0" Orientation="Horizontal">
<TextBlock
x:Name="time"
FontSize="16"
Text="18:00:00" />
<Image Margin="10,0,0,0" Style="{DynamicResource timeImage}" />
</StackPanel>
<StackPanel Grid.Row="1" Orientation="Horizontal">
<TextBlock x:Name="dateRL" FontSize="10" >星期一</TextBlock>
<TextBlock x:Name="date" Margin="10,0,0,0" FontSize="10" >2021-11-13</TextBlock>
<StackPanel Grid.Row="1" Orientation="Horizontal">
<TextBlock x:Name="dateRL" FontSize="10">星期一</TextBlock>
<TextBlock
x:Name="date"
Margin="10,0,0,0"
FontSize="10">
2021-11-13
</TextBlock>
</StackPanel>
</Grid>
<Border Style="{DynamicResource border竖线}" />
<Button x:Name="ButClose" Grid.Column="4" Margin="10,0,20,0" Style="{DynamicResource CommonBtnStyle退出按钮}" VerticalAlignment="Center" ToolTip="退出程序" Cursor="Hand" Content="退出"/>
<Button
x:Name="ButClose"
Grid.Column="4"
Margin="10,0,20,0"
VerticalAlignment="Center"
Content="退出"
Cursor="Hand"
Style="{DynamicResource CommonBtnStyle退出按钮}"
ToolTip="退出程序" />
</StackPanel>
</Grid>

<!--底部窗体-->
<!-- 底部窗体 -->
<Grid Grid.Row="1" Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="45"/>
<RowDefinition/>
<RowDefinition Height="45" />
<RowDefinition />
</Grid.RowDefinitions>
<!--顶部装饰-->
<Border Grid.Row="0" Style="{DynamicResource border右下}" Grid.RowSpan="2" />
<Border Grid.Row="0" Style="{DynamicResource border左下}" Grid.RowSpan="2" />
<Border Grid.Row="0" Style="{DynamicResource border右上}" Grid.RowSpan="2" />
<Border Grid.Row="0" Style="{DynamicResource border左上}" Grid.RowSpan="2" />
<!-- 顶部装饰 -->
<Border
Grid.Row="0"
Grid.RowSpan="2"
Style="{DynamicResource border右下}" />
<Border
Grid.Row="0"
Grid.RowSpan="2"
Style="{DynamicResource border左下}" />
<Border
Grid.Row="0"
Grid.RowSpan="2"
Style="{DynamicResource border右上}" />
<Border
Grid.Row="0"
Grid.RowSpan="2"
Style="{DynamicResource border左上}" />
<Grid Margin="10">
<Border Style="{DynamicResource borderFromTitle}" Width="600"></Border>
<Button Grid.Row="0" Content="返回" Style="{DynamicResource CommonBtn_返回}" HorizontalAlignment="Left" VerticalAlignment="Top" Click="Button_Click"/>
<TextBlock x:Name="Title" HorizontalAlignment="Center" FontSize="16" Foreground="#feffff">日志监控界面</TextBlock>
<Border Width="600" Style="{DynamicResource borderFromTitle}" />
<Button
Grid.Row="0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Click="Button_Click"
Content="返回"
Style="{DynamicResource CommonBtn_返回}" />
<TextBlock
x:Name="Title"
HorizontalAlignment="Center"
FontSize="16"
Foreground="#feffff">
日志监控界面
</TextBlock>
</Grid>
<!--#region 底部窗体栏-->

<ContentControl Grid.Row="1" x:Name="contentRegion"/>
<ContentControl x:Name="contentRegion" Grid.Row="1" />
<!--#endregion-->
<!--<Button Grid.Row="2" Content="返回" Style="{DynamicResource CommonBtn_返回}" HorizontalAlignment="Left" VerticalAlignment="Top" Click="Button_Click"/>



Caricamento…
Annulla
Salva