| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 | 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" });        }    }}
 |