| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- 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 TeamAAS_VP.Controls
- {
- /// <summary>
- /// myNumericUpDowm.xaml 的交互逻辑
- /// </summary>
- public partial class myNumericUpDowm : UserControl, INotifyPropertyChanged
- {
- //
- // 摘要:
- // Identifies the MahApps.Metro.Controls.NumericUpDown.ValueChanged routed event.
- public static readonly RoutedEvent ValueChangedEvent = EventManager.RegisterRoutedEvent(
- "ValueChanged",
- RoutingStrategy.Bubble,
- typeof(RoutedEventHandler),
- typeof(myNumericUpDowm));
- //
- // 摘要:
- // Add / Remove ValueChangedEvent handler Event which will be fired from this NumericUpDown
- // when its value has been changed.
- public event RoutedEventHandler ValueChanged
- {
- add
- {
- AddHandler(ValueChangedEvent, value);
- }
- remove
- {
- RemoveHandler(ValueChangedEvent, value);
- }
- }
- public myNumericUpDowm()
- {
- InitializeComponent();
- this.MotorAmplitudeNumeric1.ValueChanged += MotorAmplitudeNumeric1_ValueChanged;
- }
- private void MotorAmplitudeNumeric1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double?> e)
- {
- Value = e.NewValue;
- }
- [Bindable(true)]
- [Category("Common")]
- [DefaultValue(null)]
- public double? Value
- {
- get { return (double?)GetValue(ValueProperty); }
- set { SetValue(ValueProperty, value); NotifyValueChanged(value); }
- }
- // Using a DependencyProperty as the backing store for Value. This enables animation, styling, binding, etc...
- public static readonly DependencyProperty ValueProperty =
- DependencyProperty.Register("Value", typeof(double?), typeof(myNumericUpDowm), new FrameworkPropertyMetadata(null, new PropertyChangedCallback(PropertyValueChanged)));
- [Bindable(true)]
- [Category("Common")]
- [DefaultValue("")]
- public string StringFormat
- {
- get { return (string)GetValue(StringFormatProperty); }
- set { SetValue(StringFormatProperty, value); }
- }
- // Using a DependencyProperty as the backing store for StringFormat. This enables animation, styling, binding, etc...
- public static readonly DependencyProperty StringFormatProperty =
- DependencyProperty.Register("StringFormat", typeof(string), typeof(myNumericUpDowm), new PropertyMetadata("", new PropertyChangedCallback(PropertyValueChanged)));
- [Bindable(true)]
- [Category("Common")]
- [DefaultValue(double.MinValue)]
- public double Minimum
- {
- get { return (double)GetValue(MinimumProperty); }
- set { SetValue(MinimumProperty, value); }
- }
- // Using a DependencyProperty as the backing store for Minimum. This enables animation, styling, binding, etc...
- public static readonly DependencyProperty MinimumProperty =
- DependencyProperty.Register("Minimum", typeof(double), typeof(myNumericUpDowm), new PropertyMetadata(double.MinValue, new PropertyChangedCallback(PropertyValueChanged)));
- [Bindable(true)]
- [Category("Common")]
- [DefaultValue(double.MaxValue)]
- public double Maximum
- {
- get { return (double)GetValue(MaximumProperty); }
- set { SetValue(MaximumProperty, value); }
- }
- // Using a DependencyProperty as the backing store for Maximum. This enables animation, styling, binding, etc...
- public static readonly DependencyProperty MaximumProperty =
- DependencyProperty.Register("Maximum", typeof(double), typeof(myNumericUpDowm), new PropertyMetadata(double.MaxValue, new PropertyChangedCallback(PropertyValueChanged)));
- [Bindable(true)]
- [Category("Common")]
- [DefaultValue(1.0)]
- public double Interval
- {
- get { return (double)GetValue(IntervalProperty); }
- set { SetValue(IntervalProperty, value); }
- }
- // Using a DependencyProperty as the backing store for Interval. This enables animation, styling, binding, etc...
- public static readonly DependencyProperty IntervalProperty =
- DependencyProperty.Register("Interval", typeof(double), typeof(myNumericUpDowm), new PropertyMetadata(1.0, new PropertyChangedCallback(PropertyValueChanged)));
- public event PropertyChangedEventHandler PropertyChanged;
- private static void PropertyValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
- {
- (d as myNumericUpDowm).Update();
- }
- private void Update()
- {
- this.MotorAmplitudeNumeric1.Value = Value;
- this.MotorAmplitudeNumeric1.StringFormat = StringFormat;
- this.MotorAmplitudeNumeric1.Minimum = Minimum;
- this.MotorAmplitudeNumeric1.Maximum = Maximum;
- this.MotorAmplitudeNumeric1.Interval = Interval;
- this.slider2.SmallChange = Interval;
- this.slider2.TickFrequency= Interval;
- }
- // 触发 ValueChanged 事件的方法
- protected virtual void OnValueChanged(double? newValue)
- {
- RoutedEventArgs args = new RoutedEventArgs(ValueChangedEvent, newValue);
- RaiseEvent(args);
- }
- // 用户控件的值发生变化时调用此方法
- private void NotifyValueChanged(double? newValue)
- {
- OnValueChanged(newValue);
- }
- }
- }
|