基于WPF技术的换热站智能监控系统13--控制设备开关

1、本节目的

本次工作量相对有点大,有点难度,需要熟悉MVVM模式,特别是属性绑定和命令驱动,目标是点击水泵开关,让风扇转动或停止,风扇连接的管道液体流动或静止。

,具体对应关系是:

1)默认情况下风扇是转动的,液体是流动的

2)点击【关】,风扇停止,液体静止

3)点击【开】,风扇转动,液体流动

2、创建命令基类

3、创建视图基类

 

 4、创建主窗体视图模型

 

 

5、控件绑定命令

 因为有3个按钮,如何区分是哪个按钮的点击命令,所以需要带命令参数commandparameter属性,以区分不同按钮,后台命令动作能根据参数来区分判断处理。

6、控件绑定属性 

 

7、后台代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Input;
using West.HeatExchange.Base;namespace West.HeatExchange.ViewModels
{public class MainViewModel : ViewModelBase{public MainViewModel() {//每隔1秒更新时间Task.Run(() => {while (true){Thread.Sleep(1000);string txtDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");NowTime = Convert.ToDateTime(txtDate);}});}private bool pump1State = true;/// <summary>///  水泵1状态 /// </summary>public bool Pump1State{get{return pump1State;}set{pump1State = value;OnPropertyChanged();}}private bool pump2State = true;/// <summary>///  水泵2状态 /// </summary>public bool Pump2State{get{return pump2State;}set{pump2State = value;OnPropertyChanged();}}private bool pump3State = true;/// <summary>///  水泵3状态 /// </summary>public bool Pump3State{get{return pump3State;}set{pump3State = value;OnPropertyChanged();}}private string waterDirection1 = "EW";/// <summary>///  水泵1水流状态 /// </summary>public string WaterDirection1{get{return waterDirection1;}set{waterDirection1 = value;OnPropertyChanged();}}private string waterDirection2 = "EW";/// <summary>///  水泵2水流状态 /// </summary>public string WaterDirection2{get{return waterDirection2;}set{waterDirection2 = value;OnPropertyChanged();}}private string waterDirection3 = "EW";/// <summary>///  水泵3水流状态 /// </summary>public string WaterDirection3{get{return waterDirection3;}set{waterDirection3 = value;OnPropertyChanged();}}private string waterDirection32 = "WE";/// <summary>///  水泵3水流状态 /// </summary>public string WaterDirection32{get{return waterDirection32;}set{waterDirection32 = value;OnPropertyChanged();}}private DateTime nowTime = DateTime.Now;/// <summary>/// 系统时间/// </summary>public DateTime NowTime{get { return nowTime; }set{nowTime = value;OnPropertyChanged();}}/// </summary>/// <summary>/// 关按钮的命令处理/// </summary>public ICommand StopCommand{get{return new RelayCommand(o =>{//获取传递过来的参数值string s = o.ToString();//根据不同的值区分是哪个关的按钮switch (s){case "1":Pump1State = false;WaterDirection1 = "NONE";break;case "2":Pump2State = false;WaterDirection2 = "NONE";break;case "3":Pump3State = false;WaterDirection3 = "NONE";WaterDirection32 = "NONE";break;} });}}/// <summary>/// 开按钮命令的处理/// </summary>public ICommand StartCommand{get{return new RelayCommand(o =>{string s = o.ToString();switch (s){case "1":Pump1State = true;WaterDirection1 = "EW";break;case "2":Pump2State = true;WaterDirection2 = "EW";break;case "3":Pump3State = true;WaterDirection3 = "EW";WaterDirection32 = "WE";break;}});}} }
}

8、运行效果

 默认运行程序时,各设备是运行状态 ,因为是截图,不是动画,所以图片是静止的

点击[关]按钮,管道静止流动,风扇停止转动

 

 

8、前台代码

 

<Window x:Class="West.HeatExchange.Views.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:West.HeatExchange.Views"mc:Ignorable="d"xmlns:c="clr-namespace:West.HeatExchange.Controls"xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"WindowStyle="None" AllowsTransparency="True" WindowStartupLocation="CenterScreen" ResizeMode="CanResizeWithGrip"Background="#F7F9FA" FontFamily="Microsoft YaHei" Foreground="#333"Title="MainWindow" Height="650" Width="1200"  ><!--窗体资源--><Window.Resources><!--手动模式/自动模式单选控件样式--><Style TargetType="RadioButton" x:Key="ModeButtonStyle"><Setter Property="Background" Value="#FFF0F4F8"/><Setter Property="Foreground" Value="Gray"/><Setter Property="FontSize" Value="12"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="RadioButton"><Border Background="{TemplateBinding Background}" Name="bor"><ContentPresenter Margin="30,5"/></Border></ControlTemplate></Setter.Value></Setter><!--触发器--><Style.Triggers><Trigger Property="IsChecked" Value="True"><Setter Property="Background" Value="#FF3BBAFF"/><Setter Property="Foreground" Value="White"/></Trigger></Style.Triggers></Style><!--水泵开样式--><Style TargetType="RadioButton" x:Key="LeftSwitchButtonStyle"><Setter Property="Background" Value="#FFF0F4F8"/><Setter Property="Foreground" Value="Gray"/><Setter Property="HorizontalAlignment" Value="Center"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="RadioButton"><Grid><!--绘制下划线--><Border BorderBrush="Transparent" BorderThickness="0,0,0,1" Height="30" Margin="5,0" Name="bor" Width="20" HorizontalAlignment="Left"/><!--绘制曲线--><Path Data="M3 0 45 0 48 3 28 20 3 20 0 17 0 3z" Stroke="#DDD" StrokeThickness="1" Fill="{TemplateBinding Background}" Margin="0,0,2,0" VerticalAlignment="Center"/><TextBlock Text="开" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="10" Margin="0,0,15,0"/></Grid><!--触发器--><ControlTemplate.Triggers><Trigger Property="IsChecked" Value="True"><Setter TargetName="bor" Property="Visibility" Value="Visible"/><Setter TargetName="bor" Property="BorderBrush" Value="#FF3BBAFF"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter><Style.Triggers><Trigger Property="IsChecked" Value="True"><Setter Property="Background" Value="#FF3BBAFF"/><Setter Property="Foreground" Value="White"/></Trigger></Style.Triggers></Style><!--水泵关样式--><Style TargetType="RadioButton" x:Key="RightSwitchButtonStyle"><Setter Property="Background" Value="#FFF0F4F8"/><Setter Property="Foreground" Value="Gray"/><Setter Property="HorizontalAlignment" Value="Center"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="RadioButton"><Grid><Border BorderBrush="Transparent" BorderThickness="0,0,0,1" Height="30" Margin="8,0" Name="bor" Width="20" HorizontalAlignment="Right"/><Path Data="M0 17 20 0 45 0 48 3 48 17 45 20 3 20z" Stroke="#DDD" StrokeThickness="1" Fill="{TemplateBinding Background}" Margin="0,0,2,0" VerticalAlignment="Center"/><TextBlock Text="关" VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="10" Margin="10,0,0,0"/></Grid><ControlTemplate.Triggers><Trigger Property="IsChecked" Value="True"><Setter TargetName="bor" Property="Visibility" Value="Visible"/><Setter TargetName="bor" Property="BorderBrush" Value="#FF3BBAFF"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter><Style.Triggers><Trigger Property="IsChecked" Value="True"><Setter Property="Background" Value="#FF3BBAFF"/><Setter Property="Foreground" Value="White"/></Trigger></Style.Triggers></Style><!--故障样式--><Style TargetType="CheckBox" x:Key="WarningButtonStyle"><Setter Property="FontSize" Value="11"/><Setter Property="Foreground" Value="White"/><Setter Property="Opacity" Value="0.2"/><Setter Property="Margin" Value="0,2"/><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="CheckBox"><Grid><Border BorderBrush="Red" BorderThickness="1" Padding="1" Name="root"><Border.Background><DrawingBrush TileMode="Tile" Viewport="0,0,0.1,0.2" ><!--画笔填充--><DrawingBrush.Drawing><GeometryDrawing><GeometryDrawing.Pen><Pen Brush="blue" Thickness="10" x:Name="pen"/></GeometryDrawing.Pen><GeometryDrawing.Geometry><LineGeometry StartPoint="50,0" EndPoint="0,50"/></GeometryDrawing.Geometry></GeometryDrawing></DrawingBrush.Drawing></DrawingBrush></Border.Background><Border Background="Red" Margin="0,6,0,0" BorderBrush="White" BorderThickness="1" Height="20"><ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Margin="15,0"/></Border></Border></Grid></ControlTemplate></Setter.Value></Setter><Style.Triggers><Trigger Property="IsChecked" Value="True"><Setter Property="Opacity" Value="1"/></Trigger></Style.Triggers></Style></Window.Resources><DockPanel><!--顶部区域,分5列--><Grid DockPanel.Dock="Top"  ><Grid.ColumnDefinitions><ColumnDefinition Width="48"/><ColumnDefinition Width="Auto"/><ColumnDefinition/><ColumnDefinition Width="Auto"/><ColumnDefinition Width="50"/></Grid.ColumnDefinitions><!--图标--><Border Width="45" Grid.Column="0" Background="#3BBAFF" BorderBrush="#EEE"  BorderThickness="1" HorizontalAlignment="Left"><Image Source="../Assets/Images/Logo_white.png" Margin="8"/></Border><!--背景--><Border Grid.ColumnSpan="4"  Grid.Column="1"   Background="#5E7593"  MouseLeftButtonDown="Border_MouseLeftButtonDown"/><!--文字--><TextBlock Text="换热站远程监控系统" VerticalAlignment="Center" Foreground="White" FontSize="19" Margin="10,0" Grid.Column="1"/><!--时间--><TextBlock  Text="{Binding NowTime, StringFormat={}{0:yyyy年MM月dd日HH时mm分ss秒}}" VerticalAlignment="Center"  Foreground="White" FontSize="19"  Margin="20,0" Grid.Column="3"/><!--退出按钮--><Button   Grid.Column="4" Width="25" Height="25"  Click="Button_Click"><Button.Background><ImageBrush ImageSource="../Assets/Images/closewin.png"/></Button.Background></Button></Grid><!--左侧区域,分5行--><Border DockPanel.Dock="Left" Width="280" Background="White" CornerRadius="3" Margin="30,10,10,10" ><Border.Effect><DropShadowEffect BlurRadius="10" ShadowDepth="0" Color="LightGray" Opacity="0.3"/></Border.Effect><Grid Margin="20,10"><Grid.RowDefinitions><RowDefinition Height="50"/><RowDefinition/><RowDefinition/><RowDefinition Height="1.2*"/><RowDefinition Height="1.2*"/></Grid.RowDefinitions><!--第1行,文字栏--><Border Grid.Row="0" Background="#3BBAFF" CornerRadius="3" Margin="0,8"><StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center"><c:RunLoading Width="23" Height="23" Margin="10,0"/><TextBlock Text="换热站综合信息详情" Foreground="White" FontSize="12" VerticalAlignment="Center"/></StackPanel></Border><!--第2行,历史曲线--><Grid Grid.Row="1" Background="#FFF0F4F8" Margin="0,5"><Border Height="16" VerticalAlignment="Bottom" Background="#FF0E3A52" CornerRadius="8"/><!--livechart图表配置,Values绑定序列数据--><lvc:CartesianChart DisableAnimations="True"><lvc:CartesianChart.Series><lvc:LineSeries Values="29,225,380,97,440,129,532" LineSmoothness="0"  Fill="Transparent"/></lvc:CartesianChart.Series><!--X轴配置--><lvc:CartesianChart.AxisX><lvc:Axis Labels="周一,周二,周三,周四,周五,周六,周日" FontSize="8" Foreground="White"><lvc:Axis.Separator><lvc:Separator StrokeThickness="0" Step="1"/></lvc:Axis.Separator></lvc:Axis></lvc:CartesianChart.AxisX><!--Y轴配置--><lvc:CartesianChart.AxisY><lvc:Axis MinValue="0" MaxValue="600" Foreground="Transparent"></lvc:Axis></lvc:CartesianChart.AxisY></lvc:CartesianChart><Border Background="#3BBAFF" VerticalAlignment="Top" HorizontalAlignment="Left"><TextBlock Text="历史曲线" Foreground="White" FontSize="10" Margin="5,1"/></Border></Grid><!--第3行,能耗排名--><Grid Grid.Row="2" Background="#FFF0F4F8" Margin="0,5"><UniformGrid Columns="1"><!--文字部分--><StackPanel Orientation="Horizontal" VerticalAlignment="Top"><Border Background="#FF3BBAFF"><TextBlock Text="能耗排名" Foreground="White" FontSize="10" Margin="5,1"/></Border><TextBlock FontSize="10" VerticalAlignment="Center" Margin="5,0"><Run Text="耗水" Foreground="#666"/><Run Text="&#xe92e;" FontFamily="../Assets/Fonts/#iconfont"/></TextBlock><TextBlock FontSize="10" VerticalAlignment="Center"><Run Text="耗电" Foreground="#666"/><Run Text="&#xe8b6;" FontFamily="../Assets/Fonts/#iconfont"/></TextBlock><TextBlock  FontSize="10" VerticalAlignment="Center" Margin="5,0"><Run Text="耗热" Foreground="#666"/><Run Text="&#xe60e;" FontFamily="../Assets/Fonts/#iconfont"/></TextBlock></StackPanel><!--耗水--><Grid Margin="0,0,10,0"><Grid.ColumnDefinitions><ColumnDefinition Width="20"/><ColumnDefinition/></Grid.ColumnDefinitions><TextBlock Text="&#xe92e;" FontFamily="../Assets/Fonts/#iconfont" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="#FF3BBAFF"/><ProgressBar Grid.Column="1" Minimum="0" Maximum="200" Value="182" Background="LightGray" Foreground="Orange" Height="4"/></Grid><!--耗电--><Grid Margin="0,0,10,0"><Grid.ColumnDefinitions><ColumnDefinition Width="20"/><ColumnDefinition/></Grid.ColumnDefinitions><TextBlock Text="&#xe8b6;" FontFamily="../Assets/Fonts/#iconfont" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="#FF3BBAFF"/><ProgressBar Grid.Column="1" Minimum="0" Maximum="200" Value="156" Background="LightGray" Foreground="Orange" Height="4"/></Grid><!--耗热--><Grid Margin="0,0,10,0"><Grid.ColumnDefinitions><ColumnDefinition Width="20"/><ColumnDefinition/></Grid.ColumnDefinitions><TextBlock Text="&#xe60e;" FontFamily="../Assets/Fonts/#iconfont" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="#FF3BBAFF"/><ProgressBar Grid.Column="1" Minimum="0" Maximum="200" Value="116" Background="LightGray" Foreground="Orange" Height="4"/></Grid><!--装饰--><Border Height="5" Margin="10,0"><Border.Background><!--线性渐变--><LinearGradientBrush StartPoint="0,0" EndPoint="1,0"><GradientStop Color="#FF3BBAFF" Offset="0"/><GradientStop Color="#113BBAFF" Offset="1"/></LinearGradientBrush></Border.Background></Border></UniformGrid></Grid><!--第4行,故障统计--><Grid Grid.Row="3" Background="#FFF0F4F8" Margin="0,5"><Border Height="16" VerticalAlignment="Bottom" Background="#FF0E3A52" CornerRadius="8"/><lvc:CartesianChart DisableAnimations="True"><lvc:CartesianChart.Series><lvc:ColumnSeries Values="319,223,63,257,335,440,178,223,53,117" MaxColumnWidth="6"/></lvc:CartesianChart.Series><lvc:CartesianChart.AxisX><lvc:Axis Labels="设备1,设备2,设备3,设备4,设备5,设备6,设备7,设备8,设备9,设备10" FontFamily="Microsoft YaHei" FontSize="6" Foreground="White"><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="600" Foreground="Transparent"><lvc:Axis.Separator><lvc:Separator StrokeThickness="1" Stroke="#DDD" Step="760"/></lvc:Axis.Separator></lvc:Axis></lvc:CartesianChart.AxisY></lvc:CartesianChart><Border Background="#FF3BBAFF" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="2"><TextBlock Text="故障统计" Foreground="White" FontSize="10" Margin="5,1"/></Border></Grid><!--第5行,数据报表--><Grid Grid.Row="4" Background="#FFF0F4F8" Margin="0,5"><lvc:PieChart  InnerRadius="40" Width="110" Height="110"  DisableAnimations="True" StartingRotationAngle="0" HoverPushOut="0"  ><!--以下是静态显示--><lvc:PieChart.Series><lvc:PieSeries  Values="23"  Fill="#2BBF6E" StrokeThickness="2" DataLabels="True" Foreground="Black" FontSize="11" LabelPosition="OutsideSlice" Title="锻烧车间"></lvc:PieSeries><lvc:PieSeries  Values="37" Fill="#3DDFEE" StrokeThickness="2" DataLabels="True" Foreground="Black" FontSize="11" LabelPosition="OutsideSlice" Title="模具车间"></lvc:PieSeries><lvc:PieSeries  Values="80" Fill="Red" StrokeThickness="2" DataLabels="True" Foreground="Black" FontSize="11" LabelPosition="OutsideSlice" Title="电噴车间"></lvc:PieSeries><lvc:PieSeries  Values="60" Fill="Blue" StrokeThickness="2" DataLabels="True" Foreground="Black" FontSize="11" LabelPosition="OutsideSlice" Title="组装车间"></lvc:PieSeries></lvc:PieChart.Series></lvc:PieChart><Border Background="#FF3BBAFF" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="2"><TextBlock Text="数据报表" Foreground="White" FontSize="10" Margin="5,1"/></Border></Grid></Grid></Border><!--右上区域,控制模式--><Border Height="80" DockPanel.Dock="Top" Background="White" Margin="0,10,20,0" CornerRadius="3"><Border.Effect><DropShadowEffect BlurRadius="10" ShadowDepth="0" Color="LightGray" Opacity="0.3"/></Border.Effect><UniformGrid Rows="1"><StackPanel VerticalAlignment="Center" HorizontalAlignment="Center"><RadioButton Content="手动模式" IsChecked="True" Style="{StaticResource ModeButtonStyle}"/><RadioButton Content="自动模式" Style="{StaticResource ModeButtonStyle}"/></StackPanel><!--补水泵1--><Grid Background="#88F0F4F8" VerticalAlignment="Center" HorizontalAlignment="Center"><Grid.RowDefinitions><RowDefinition/><RowDefinition/></Grid.RowDefinitions><TextBlock Text="No.1 补水泵" Margin="20,3" HorizontalAlignment="Center"/><Grid Grid.Row="1" Margin="10,0"><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition Width="15"/><ColumnDefinition/></Grid.ColumnDefinitions><RadioButton Grid.Column="0" IsChecked="True"  Command="{Binding StartCommand}" CommandParameter="1" Grid.ColumnSpan="2"  Style="{StaticResource LeftSwitchButtonStyle}" Name="rb"/><RadioButton Grid.Column="1" Grid.ColumnSpan="2" Command="{Binding StopCommand}"  CommandParameter="1" Style="{StaticResource RightSwitchButtonStyle}"/></Grid></Grid><!--补水泵2--><Grid Background="#88F0F4F8" VerticalAlignment="Center" HorizontalAlignment="Center"><Grid.RowDefinitions><RowDefinition/><RowDefinition/></Grid.RowDefinitions><TextBlock Text="No.2 补水泵" Margin="20,3" HorizontalAlignment="Center"/><Grid Grid.Row="1" Margin="10,0"><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition Width="15"/><ColumnDefinition/></Grid.ColumnDefinitions><RadioButton IsChecked="True" Grid.ColumnSpan="2" Command="{Binding StartCommand}" CommandParameter="2" Style="{StaticResource LeftSwitchButtonStyle}"/><RadioButton Grid.Column="1" Grid.ColumnSpan="2" Command="{Binding StopCommand}"  CommandParameter="2" Style="{StaticResource RightSwitchButtonStyle}"/></Grid></Grid><!--补水泵3--><Grid Background="#88F0F4F8" VerticalAlignment="Center" HorizontalAlignment="Center"><Grid.RowDefinitions><RowDefinition/><RowDefinition/></Grid.RowDefinitions><TextBlock Text="No.3 补水泵" Margin="20,3" HorizontalAlignment="Center"/><Grid Grid.Row="1" Margin="10,0"><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition Width="15"/><ColumnDefinition/></Grid.ColumnDefinitions><RadioButton IsChecked="True" Grid.ColumnSpan="2" Command="{Binding StartCommand}" CommandParameter="3" Style="{StaticResource LeftSwitchButtonStyle}"/><RadioButton Grid.Column="1" Grid.ColumnSpan="2" Command="{Binding StopCommand}"  CommandParameter="3" Style="{StaticResource RightSwitchButtonStyle}"/></Grid></Grid><!--故障切换--> <Grid Background="#88F0F4F8" VerticalAlignment="Center" HorizontalAlignment="Center"><Grid.RowDefinitions><RowDefinition/><RowDefinition/></Grid.RowDefinitions><CheckBox Content="循环变频故障" Grid.Row="0" Style="{StaticResource WarningButtonStyle}" IsChecked="True"/><CheckBox Content="补水变频故障" Grid.Row="1" Style="{StaticResource WarningButtonStyle}"/></Grid></UniformGrid></Border><!--右中区域,系统运行--><Border Background="White" Margin="0,10,20,10" CornerRadius="3" ><Border.Effect><DropShadowEffect BlurRadius="10" ShadowDepth="0" Color="LightGray" Opacity="0.3"/></Border.Effect><Canvas><c:PipeLine Height="7" Width="839" Direction="EW" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="10" Canvas.Top="44"/><c:PipeLine x:Name="middle" Panel.ZIndex="3" Canvas.Left="234" Canvas.Top="49"   Direction="EW"   Height="7" Width="182" CapRadius="3"><c:PipeLine.RenderTransform><TransformGroup><RotateTransform Angle="90" ></RotateTransform></TransformGroup></c:PipeLine.RenderTransform></c:PipeLine><c:PipeLine Height="7" Width="619" Direction="EW" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="230" Canvas.Top="224"/><c:PipeLine x:Name="middle2" Panel.ZIndex="3" Canvas.Left="164" Canvas.Top="139.5"   Direction="{Binding WaterDirection2}"   Height="7" Width="185" CapRadius="3"><c:PipeLine.RenderTransform><TransformGroup><RotateTransform Angle="90" ></RotateTransform></TransformGroup></c:PipeLine.RenderTransform></c:PipeLine><c:PipeLine Height="7" Width="399" Direction="{Binding WaterDirection2}" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="450" Canvas.Top="296" Loaded="PipeLine_Loaded" /><c:PipeLine x:Name="right" Panel.ZIndex="3" Margin="0" Canvas.Left="223" Canvas.Top="302" Width="131" Direction="{Binding WaterDirection32}"  Height="7" CapRadius="1"><c:PipeLine.RenderTransform><TransformGroup><TranslateTransform X="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Canvas}, Path=ActualHeight}" Y="0"></TranslateTransform><RotateTransform Angle="90" CenterX="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Canvas}, Path=ActualHeight}" CenterY="0"></RotateTransform></TransformGroup></c:PipeLine.RenderTransform></c:PipeLine><c:PipeLine Height="7" Width="79" Direction="{Binding WaterDirection3}" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="640" Canvas.Top="426" Loaded="PipeLine_Loaded" /><c:PipeLine Height="7" Width="79" Direction="{Binding WaterDirection3}" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="540" Canvas.Top="447" Loaded="PipeLine_Loaded" /><Image Source="../Assets/Images/d1.jpg" Canvas.Left="35" Canvas.Top="29" Height="39" Width="61" HorizontalAlignment="Center" VerticalAlignment="Top"/><Image Source="../Assets/Images/d1.jpg" Canvas.Left="755" Canvas.Top="29" Height="39" Width="61" HorizontalAlignment="Center" VerticalAlignment="Top"/><Image Source="../Assets/Images/d1.jpg" Canvas.Left="755" Canvas.Top="279" Height="39" Width="61" HorizontalAlignment="Center" VerticalAlignment="Top"/><Image Source="../Assets/Images/d1.jpg" Panel.ZIndex="3" Canvas.Left="95" Canvas.Top="429" Height="39" Width="61" HorizontalAlignment="Center" VerticalAlignment="Top"/><Image Source="../Assets/Images/heat_exchange.jpg" Panel.ZIndex="2" Canvas.Left="264" Canvas.Top="20" Height="156" Width="80" HorizontalAlignment="Center" VerticalAlignment="Top"/><Image Source="../Assets/Images/heat_exchange.jpg" Panel.ZIndex="2" Canvas.Left="264" Canvas.Top="200" Height="156" Width="80" HorizontalAlignment="Center" VerticalAlignment="Top"/><Image Source="../Assets/Images/i2.jpg" Canvas.Left="164" Canvas.Top="13" Height="31" Width="25" HorizontalAlignment="Left" VerticalAlignment="Top"/><Image Source="../Assets/Images/i2.jpg" Canvas.Left="424" Canvas.Top="13" Height="31" Width="25" HorizontalAlignment="Left" VerticalAlignment="Top"/><Image Source="../Assets/Images/i2.jpg" Canvas.Left="524" Canvas.Top="85" Height="31" Width="25" HorizontalAlignment="Left" VerticalAlignment="Top"/><Image Source="../Assets/Images/i2.jpg" Canvas.Left="684" Canvas.Top="193" Height="31" Width="25" HorizontalAlignment="Left" VerticalAlignment="Top"/><Image Source="../Assets/Images/i2.jpg" Canvas.Left="584" Canvas.Top="265" Height="31" Width="25" HorizontalAlignment="Left" VerticalAlignment="Top"/><Image Source="../Assets/Images/f2.jpg" Panel.ZIndex="2" Canvas.Left="64" Canvas.Top="115" Height="33" Width="34" HorizontalAlignment="Left" VerticalAlignment="Top"/><Image Source="../Assets/Images/f2.jpg" Panel.ZIndex="2" Canvas.Left="224" Canvas.Top="425" Height="33" Width="34" HorizontalAlignment="Left" VerticalAlignment="Top"/><c:PipeLine Height="7.5"  Width="409" Direction="{Binding WaterDirection1}"  HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="10" Canvas.Top="137"/><c:PipeLine Height="7.5"  Width="259" Direction="{Binding WaterDirection2}" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="158" Canvas.Top="317"/><c:PipeLine Height="7.5"  Width="459" Direction="{Binding WaterDirection3}" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="10" Canvas.Top="447"/><c:PipeLine Height="7.5" Width="399" Direction="{Binding WaterDirection1}" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="450" Canvas.Top="116"/><c:Pump Width="42" Height="38" IsRunning="{Binding Pump1State}" Canvas.Left="411" Canvas.Top="111" HorizontalAlignment="Center" VerticalAlignment="Top"/><c:Pump Width="42" Height="38" IsRunning="{Binding Pump2State}" Canvas.Left="411" Canvas.Top="291" HorizontalAlignment="Center" VerticalAlignment="Top"/><c:Pump Width="42" Height="38" IsRunning="{Binding Pump3State}" Canvas.Left="611" Canvas.Top="421" HorizontalAlignment="Center" VerticalAlignment="Top"/><c:DataBoard Width="75" Height="35" Canvas.Left="30" Canvas.Top="71" ItemsSource="{Binding}"/><c:DataBoard Width="75" Height="40" Canvas.Left="135" Canvas.Top="56" ItemsSource="{Binding}"/><c:DataBoard Width="75" Height="40" Canvas.Left="545" Canvas.Top="71" ItemsSource="{Binding}"/><c:DataBoard Width="75" Height="40" Canvas.Left="595" Canvas.Top="178" ItemsSource="{Binding}"/><c:DataBoard Width="75" Height="40" Canvas.Left="495" Canvas.Top="252" ItemsSource="{Binding}"/><c:DataBoard Width="75" Height="40" Canvas.Left="90" Canvas.Top="383" ItemsSource="{Binding}"/><c:CoolingTower  RunningState="Normal" Width="140" Height="150"  Canvas.Left="415" Canvas.Top="347"></c:CoolingTower></Canvas></Border></DockPanel></Window>

走过路过不要错过,点赞关注收藏又圈粉,共同致富,为财务自由作出贡献 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/28575.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

9.8k star!一款小而美的开源物联网操作系统:RT-Thread

介绍 RT-Thread是一款主要由中国开源社区主导开发的开源实时操作系统&#xff08;RTOS&#xff09;。它不仅是一个实时操作系统内核&#xff0c;也是一个完整的应用系统&#xff0c;包含了实时、嵌入式系统相关的各个组件&#xff0c;如TCP/IP协议栈、文件系统、libc接口、图形…

【算法专题--链表】删除排序链表中的重复元素 -- 高频面试题(图文详解,小白一看就懂!!)

目录 一、前言 二、题目描述 三、解题方法 ⭐双指针 四、总结与提炼 五、共勉 一、前言 删除排序链表中的重复元素这道题&#xff0c;可以说是--链表专题--&#xff0c;最经典的一道题&#xff0c;也是在面试中频率最高的一道题目&#xff0c;通常在面试中&#xff0…

记录一个flink跑kafka connector遇到的问题

【报错】 D:\Java\jdk1.8.0_231\bin\java.exe "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2022.2.3\lib\idea_rt.jar56647:D:\Program Files\JetBrains\IntelliJ IDEA 2022.2.3\bin" -Dfile.encodingUTF-8 -classpath D:\Java\jdk1.8.0_231\jre\lib\cha…

手机照片免费数据恢复软件EasyRecovery2024免费版下载

大家好&#xff01;今天我要给大家推荐一款非常棒的软件——EasyRecovery。相信大家都知道&#xff0c;电脑中的重要文件一旦丢失&#xff0c;对我们的工作和学习都会产生很大的影响。 而EasyRecovery软件就是专门解决这个问题的利器&#xff01;它能够帮助我们快速、有效地恢…

【CSS in Depth2精译】1.1 层叠

CSS 本质上就是声明规则&#xff0c;并让这些特定的规则在各种情况下生效。一个类添加到某个元素上&#xff0c;则应用这个类包含的这一些样式&#xff1b;元素 X 是元素 Y 的一个子节点&#xff0c;则应用另一些样式。浏览器于是根据这些规则&#xff0c;判定所有样式生效的具…

最长不下降子序列LIS详解

最长不下降子序列指的是在一个数字序列中&#xff0c;找到一个最长的子序列&#xff08;可以不连续&#xff09;&#xff0c;使得这个子序列是不下降&#xff08;非递减&#xff09;的。 假如&#xff0c;现有序列A[1&#xff0c;2&#xff0c;3&#xff0c;-1&#xff0c;-2&…

【Android】三种常见的布局LinearLayout、GridLayout、RelativeLayout

【Android】三种常见的布局LinearLayout、GridLayout、RelativeLayout 在 Android 开发中&#xff0c;布局&#xff08;Layout&#xff09;是构建用户界面的基础。通过合理的布局管理&#xff0c;可以确保应用在不同设备和屏幕尺寸上都能有良好的用户体验。本文将简单介绍 And…

Go微服务框架Kratos中makefile命令的使用方法及报错处理

运用 kratos 微服务框架开发项目时&#xff0c;可以使用提供的 makefile 中的命令自动且快速生产相关代码&#xff0c;提高开发效率。 krotos中makefile文件内容如下&#xff1a; GOHOSTOS:$(shell go env GOHOSTOS) GOPATH:$(shell go env GOPATH) VERSION$(shell git descri…

java程序什么时候需要在运行的时候动态修改字节码对象

一、java程序什么时候需要在运行的时候动态修改字节码对象 我认为有两种场景&#xff0c;一种是无法修改源代码的时候&#xff1b;另外一种是功能增强的时候。 1、无法修改源代码 举个例子&#xff0c;java程序依赖的第三方的jar包中发现了bug&#xff0c;但是官方还没有修复…

工程设计问题-步进锥滑轮问题

该问题的主要目标是用5个变量使4阶锥皮带轮的重量最小&#xff0c;其中4个变量是皮带轮每个台阶的直径&#xff0c;最后一个变量是滑轮的宽度。该问题包含11个非线性约束&#xff0c;以保证传动功率必须为0.75马力。 Abhishek Kumar, Guohua Wu, Mostafa Z. Ali, Rammohan Mall…

启动mysql 3.5时出现 MySql 服务正在启动 . MySql 服务无法启动。

有可能是端口冲突 netstat -ano | findstr :3306运行这段代码出现类似&#xff1a; 可以看到端口 3306 已经被进程 ID 为 6284 的进程占用。为了启动新的 MySQL 服务&#xff0c;我们需要停止这个进程或更改新服务的端口&#xff1a; 1、终止进程 taskkill /PID 6284 /F2、确…

【计算机毕业设计】基于Springboot的车辆管理系统【源码+lw+部署文档】

包含论文源码的压缩包较大&#xff0c;请私信或者加我的绿色小软件获取 免责声明&#xff1a;资料部分来源于合法的互联网渠道收集和整理&#xff0c;部分自己学习积累成果&#xff0c;供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者…

贷款投资决策和常用财务函数

前段时间上了一门excel操作的课&#xff0c;本文结合其中介绍财务函数以及投资决策分析相关的部分&#xff0c;对贷款中的现金流计算进行深入的分析。 以等额本息产品为例进行实操计算&#xff0c;假设某产品本金12000元&#xff0c;期限12&#xff0c;IRR利率24%。每期还款113…

项目:双人五子棋对战-对战模块(6)

完整代码见: 邹锦辉个人所有代码: 测试仓库 - Gitee.com 当玩家进入到游戏房间后, 就要开始一局紧张而又刺激的五子棋对战了, 本文将就前端后端的落子与判断胜负的部分作详细讲解. 模块详细讲解 约定前后端交互的接口 首先是建立连接后, 服务器需要生成一些游戏的初始信息(可…

c语言——扫雷游戏(简易版)

目录 前言游戏设计 前言 什么是扫雷游戏&#xff1f; 游戏目标是在最短的时间内根据点击格子出现的数字找出所有非雷格子&#xff0c;同时避免踩雷&#xff0c;踩到一个雷即全盘皆输。 这个游戏对于c语言的初学者来说难度还是挺大的&#xff0c;那我就实现一个初学者也能快速学…

黄仁勋最新建议:找到一门技艺,用一生去完善、磨炼!

“你可能会找到你的英伟达。我希望你们将挫折视为新的机遇。” 黄仁勋职业生涯中最大的教诲并非来自导师或科技公司 CEO&#xff0c;而是来自他在国际旅行时遇到的一位园丁。 近日在加州理工学院毕业典礼上发表演讲时&#xff0c;黄仁勋向毕业生分享了自己在日本京都的小故事。…

2012-2022年各省新质生产力指数数据(含原始数据+结果)

2012-2022年各省新质生产力指数数据&#xff08;含原始数据结果&#xff09; 1、时间&#xff1a;2012-2022年 2、指标&#xff1a;province、year、平均受教育年限、劳动者人力资本结构、高等院校在校学生结构、人均GDP元、在岗职工工资&#xff1a;元、三产从业人员比重、机…

各种机器学习算法的应用场景分别是什么(比如朴素贝叶斯、决策树、K 近邻、SVM、逻辑回归最大熵模型)?

2023简直被人工智能相关话题席卷的一年。关于机器学习算法的热度&#xff0c;也再次飙升&#xff0c;网络上一些分享已经比较老了。那么今天借着查询和学习的机会&#xff0c;我也来浅浅分享下目前各种机器学习算法及其应用场景。 为了方便非专业的朋友阅读&#xff0c;我会从算…

电子设计教程基础篇(电容)

文章目录 前言一、电容原理1.原理2.公式 二、电容种类1.结构1、固定电容2、可变电容3、微调电容 2.介质材料1、气体介质电容1、空气电容2、真空电容3、充气式电容 2、固体介质电容1、无机1、云母电容2、陶瓷电容1、瓷片电容2、独石电容 3、玻璃釉电容&#xff08;CI&#xff09…

爆火的治愈系插画工具又来了,额度居然有18w,根本花不完?

AI治愈插画又又又来了 今天给大家推荐一款完全免费的软件&#xff0c;用过的人都说好&#xff01; 先来看看我生成的图 制作过程非常简单&#xff0c;输入你想要生成的画面咒语。 工具地址&#xff1a;https://www.qiyuai.net/ 模型目前有两种 我上面的图就是用的第一种通用…