193 lines
5.5 KiB
C#
193 lines
5.5 KiB
C#
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" });
|
||
}
|
||
}
|
||
}
|