| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 | using System;using System.Text.RegularExpressions;using System.Windows;using System.Windows.Controls;using System.Windows.Input;using System.Windows.Media;namespace MECF.Framework.UI.Client.CenterViews.Controls{    /// <summary>    /// AITSCRow.xaml 的交互逻辑    /// </summary>    public partial class ScDoubleRow : UserControl    {        public static readonly DependencyProperty CommandProperty = DependencyProperty.Register(            "Command", typeof(ICommand), typeof(ScDoubleRow),            new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender));        public ICommand Command        {            get            {                return (ICommand)this.GetValue(CommandProperty);            }            set            {                this.SetValue(CommandProperty, value);            }        }        public static readonly DependencyProperty NameWidthProperty = DependencyProperty.Register(            "NameWidth", typeof(int), typeof(ScDoubleRow),            new FrameworkPropertyMetadata(180, FrameworkPropertyMetadataOptions.AffectsRender));        public int NameWidth        {            get            {                return (int)this.GetValue(NameWidthProperty);            }            set            {                this.SetValue(NameWidthProperty, value);            }        }        public static readonly DependencyProperty FeedbackWidthProperty = DependencyProperty.Register(            "FeedbackWidth", typeof(int), typeof(ScDoubleRow),            new FrameworkPropertyMetadata(90, FrameworkPropertyMetadataOptions.AffectsRender));        public int FeedbackWidth        {            get            {                return (int)this.GetValue(FeedbackWidthProperty);            }            set            {                this.SetValue(FeedbackWidthProperty, value);            }        }        public static readonly DependencyProperty SetPointWidthProperty = DependencyProperty.Register(            "SetPointWidth", typeof(int), typeof(ScDoubleRow),            new FrameworkPropertyMetadata(90, FrameworkPropertyMetadataOptions.AffectsRender));        public int SetPointWidth        {            get            {                return (int)this.GetValue(SetPointWidthProperty);            }            set            {                this.SetValue(SetPointWidthProperty, value);            }        }        public static readonly DependencyProperty CommandWidthProperty = DependencyProperty.Register(            "CommandWidth", typeof(int), typeof(ScDoubleRow),            new FrameworkPropertyMetadata(90, FrameworkPropertyMetadataOptions.AffectsRender));        public int CommandWidth        {            get            {                return (int)this.GetValue(CommandWidthProperty);            }            set            {                this.SetValue(CommandWidthProperty, value);            }        }        public static readonly DependencyProperty ScIdProperty = DependencyProperty.Register(            "ScId", typeof(string), typeof(ScDoubleRow),            new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender));        public string ScId        {            get            {                return (string)this.GetValue(ScIdProperty);            }            set            {                this.SetValue(ScIdProperty, value);            }        }        public static readonly DependencyProperty ScNameProperty = DependencyProperty.Register(            "ScName", typeof(string), typeof(ScDoubleRow),            new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender));        public string ScName        {            get            {                return (string)this.GetValue(ScNameProperty);            }            set            {                this.SetValue(ScNameProperty, value);            }        }        public static readonly DependencyProperty ScFeedbackProperty = DependencyProperty.Register(            "ScFeedback", typeof(double), typeof(ScDoubleRow),            new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender));        public double ScFeedback        {            get            {                return (double)this.GetValue(ScFeedbackProperty);            }            set            {                this.SetValue(ScFeedbackProperty, value);            }        }        public static readonly DependencyProperty ScSetPointProperty = DependencyProperty.Register(            "ScSetPoint", typeof(double), typeof(ScDoubleRow),            new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender));        public double ScSetPoint        {            get            {                return (double)this.GetValue(ScSetPointProperty);            }            set            {                this.SetValue(ScSetPointProperty, value);            }        }        public ScDoubleRow()        {            InitializeComponent();        }        private void OnPreviewTextInput(object sender, TextCompositionEventArgs e)        {            e.Handled = !IsTextAllowed(e.Text);        }        protected override void OnRender(DrawingContext drawingContext)        {            base.OnRender(drawingContext);            RectangleSetPoint.Fill = Math.Abs(ScSetPoint - ScFeedback) < 0.001                ? new SolidColorBrush(Color.FromRgb(0x95, 0xB3, 0xD7))                : new SolidColorBrush(Colors.Yellow);            InputSetPoint.Background = Math.Abs(ScSetPoint - ScFeedback) < 0.001                ? new SolidColorBrush(Color.FromRgb(0xDC, 0xF7, 0xF6))                 : new SolidColorBrush(Colors.Yellow);        }        private static bool IsTextAllowed(string text)        {            Regex regex = new Regex("[^0-9.-]+"); //regex that matches disallowed text            return !regex.IsMatch(text);        }        private void Button_Click(object sender, RoutedEventArgs e)        {            Command.Execute(new object[] { ScId, ScSetPoint.ToString()});        }    }}
 |