Sic02-new/FrameworkLocal/UICore/Control/Pump.xaml.cs

193 lines
5.5 KiB
C#
Raw Normal View History

2023-07-25 14:28:00 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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 Aitex.Core.UI.Control
{
/// <summary>
/// Interaction logic for Pump.xaml
/// </summary>
public partial class Pump : UserControl
{
public Pump()
{
InitializeComponent();
}
public static readonly DependencyProperty CommandProperty = DependencyProperty.Register(
"Command", typeof(ICommand), typeof(Pump),
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender));
public static readonly DependencyProperty OrientationProperty = DependencyProperty.Register(
"Orientation", typeof(ValveDirection), typeof(Pump),
new FrameworkPropertyMetadata(ValveDirection.ToBottom, FrameworkPropertyMetadataOptions.AffectsRender));
public static readonly DependencyProperty PumpAlarmProperty = DependencyProperty.Register(
"PumpAlarm", typeof(object), typeof(Pump),
new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender));
public static readonly DependencyProperty PumpRunningProperty = DependencyProperty.Register(
"PumpRunning", typeof(object), typeof(Pump),
new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender));
/// <summary>
/// Command to execute when turning on/off pump.
/// </summary>
public ICommand Command
{
get
{
return (ICommand)this.GetValue(CommandProperty);
}
set
{
this.SetValue(CommandProperty, value);
}
}
public object PumpAlarm
{
get
{
return GetValue(PumpAlarmProperty);
}
set
{
SetValue(PumpAlarmProperty, value);
}
}
public object PumpRunning
{
get
{
return GetValue(PumpRunningProperty);
}
set
{
SetValue(PumpRunningProperty, value);
}
}
/// <summary>
/// direction of the valve
/// </summary>
public ValveDirection Orientation
{
get
{
return (ValveDirection)GetValue(OrientationProperty);
}
set
{
SetValue(OrientationProperty, value);
}
}
private BitmapSource GetImage(string uri)
{
BitmapImage image = new BitmapImage(new Uri(string.Format("pack://application:,,,/MECF.Framework.Common;component/Resources/Valve/{0}", uri)));
return image;
//return BitmapFrame.Create(new Uri(string.Format(@"{0}", uri), UriKind.Relative));
}
int GetPumpState()
{
if ((PumpAlarm + "").ToLower() == "true")
{
//报警红
return 3;
}
else
{
//非报警状态
if ((PumpRunning + "").ToLower() == "true")
{
//runing 绿
return 0;
}
else if ((PumpRunning + "").ToLower() == "false")
{
//关闭黑
return 1;
}
else
{
//返回null灰色
return 2;
}
}
}
protected override void OnRender(DrawingContext drawingContext)
{
int pumpState = GetPumpState();
switch (pumpState)
{
case 0:
imgPump.Source = GetImage("PumpGreen.png");
break;
case 1: imgPump.Source = GetImage( "PumpBlack.png");
break;
case 2: imgPump.Source = GetImage( "PumpGray.png");
break;
case 3: imgPump.Source = GetImage("PumpRed.png");
break;
default: imgPump.Source = GetImage( "PumpRed.png");
break;
}
switch (Orientation)
{
case ValveDirection.ToBottom:
case ValveDirection.ToTop:
rotateTransform.Angle = 0;
break;
case ValveDirection.ToLeft:
case ValveDirection.ToRight:
rotateTransform.Angle = 90;
break;
default:
break;
}
base.OnRender(drawingContext);
}
/// <summary>
/// open
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OpenPump(object sender, RoutedEventArgs e)
{
MenuItem mi = sender as MenuItem;
Command.Execute(new object[] { this.Tag, "Open"});
}
private void ClosePump(object sender, RoutedEventArgs e)
{
MenuItem mi = sender as MenuItem;
Command.Execute(new object[] { this.Tag, "Close" });
}
}
}