Sic.Framework-Nanjing-Baishi/UIDebug/SicUI/Controls/BodyLid.xaml.cs

375 lines
15 KiB
C#
Raw Permalink Normal View History

using SicUI.Controls.Common;
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.Animation;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace SicUI.Controls
{
/// <summary>
/// BodyLid.xaml 的交互逻辑
/// </summary>
public partial class BodyLid : UserControl //, INotifyPropertyChanged
{
private bool _isEnd = false;
private bool _isUp = false;
private bool _isFront = true;
private bool _isDown = true;
AxisBorder bd;
//public event PropertyChangedEventHandler PropertyChanged;
public BodyLid()
{
InitializeComponent();
}
public int MovingUpTime
{
get { return (int)GetValue(MovingUpTimeProperty); }
set { SetValue(MovingUpTimeProperty, value); }
}
public static readonly DependencyProperty MovingUpTimeProperty = DependencyProperty.Register("MovingUpTime", typeof(int), typeof(BodyLid), new FrameworkPropertyMetadata(5000));
public int MovingEndTime
{
get { return (int)GetValue(MovingEndTimeProperty); }
set { SetValue(MovingEndTimeProperty, value); }
}
public static readonly DependencyProperty MovingEndTimeProperty = DependencyProperty.Register("MovingEndTime", typeof(int), typeof(BodyLid), new FrameworkPropertyMetadata(5000));
public int MovingSwingTime
{
get { return (int)GetValue(MovingSwingTimeProperty); }
set { SetValue(MovingSwingTimeProperty, value); }
}
public static readonly DependencyProperty MovingSwingTimeProperty = DependencyProperty.Register("MovingSwingTime", typeof(int), typeof(BodyLid), new FrameworkPropertyMetadata(5000));
public string ChamberBodyGroup
{
get { return (string)GetValue(ChamberBodyInfoProperty); }
set { SetValue(ChamberBodyInfoProperty, value); }
}
public static readonly DependencyProperty ChamberBodyInfoProperty = DependencyProperty.Register(
"ChamberBodyGroup", typeof(string), typeof(BodyLid),
new PropertyMetadata(default(string)));
public bool MovingUp
{
get { return (Boolean)GetValue(MovingUpProperty); }
set { SetValue(MovingUpProperty, value); }
}
public static readonly DependencyProperty MovingUpProperty =
DependencyProperty.Register("MovingUp", typeof(bool), typeof(BodyLid), new FrameworkPropertyMetadata(default(bool), FrameworkPropertyMetadataOptions.AffectsRender));
public bool MovingDown
{
get { return (Boolean)GetValue(MovingDownProperty); }
set { SetValue(MovingDownProperty, value); }
}
public static readonly DependencyProperty MovingDownProperty =
DependencyProperty.Register("MovingDown", typeof(bool), typeof(BodyLid), new FrameworkPropertyMetadata(default(bool), FrameworkPropertyMetadataOptions.AffectsRender));
public bool MovingEnd
{
get { return (Boolean)GetValue(MovingEndProperty); }
set { SetValue(MovingEndProperty, value); }
}
public static readonly DependencyProperty MovingEndProperty =
DependencyProperty.Register("MovingEnd", typeof(bool), typeof(BodyLid), new FrameworkPropertyMetadata(default(bool), FrameworkPropertyMetadataOptions.AffectsRender));
public bool MovingFront
{
get { return (Boolean)GetValue(MovingFrontProperty); }
set { SetValue(MovingFrontProperty, value); }
}
public static readonly DependencyProperty MovingFrontProperty =
DependencyProperty.Register("MovingFront", typeof(bool), typeof(BodyLid), new FrameworkPropertyMetadata(default(bool), FrameworkPropertyMetadataOptions.AffectsRender));
public bool MovingSHSwingLoseen
{
get { return (Boolean)GetValue(MovingSHSwingLoseenProperty); }
set { SetValue(MovingSHSwingLoseenProperty, value); }
}
public static readonly DependencyProperty MovingSHSwingLoseenProperty =
DependencyProperty.Register("MovingSHSwingLoseen", typeof(bool), typeof(BodyLid), new FrameworkPropertyMetadata(default(bool), FrameworkPropertyMetadataOptions.AffectsRender));
public bool MovingSHSwingTighten
{
get { return (Boolean)GetValue(MovingSHSwingTightenProperty); }
set { SetValue(MovingSHSwingTightenProperty, value); }
}
public static readonly DependencyProperty MovingSHSwingTightenProperty =
DependencyProperty.Register("MovingSHSwingTighten", typeof(bool), typeof(BodyLid), new FrameworkPropertyMetadata(default(bool), FrameworkPropertyMetadataOptions.AffectsRender));
public bool MovingMiddleSwingLoseen
{
get { return (Boolean)GetValue(MovingMiddleSwingLoseenProperty); }
set { SetValue(MovingMiddleSwingLoseenProperty, value); }
}
public static readonly DependencyProperty MovingMiddleSwingLoseenProperty =
DependencyProperty.Register("MovingMiddleSwingLoseen", typeof(bool), typeof(BodyLid), new FrameworkPropertyMetadata(default(bool), FrameworkPropertyMetadataOptions.AffectsRender));
public bool MovingMiddleSwingTighten
{
get { return (Boolean)GetValue(MovingMiddleSwingTightenProperty); }
set { SetValue(MovingMiddleSwingTightenProperty, value); }
}
public static readonly DependencyProperty MovingMiddleSwingTightenProperty =
DependencyProperty.Register("MovingMiddleSwingTighten", typeof(bool), typeof(BodyLid), new FrameworkPropertyMetadata(default(bool), FrameworkPropertyMetadataOptions.AffectsRender));
public bool ChamberIsUp
{
get { return (Boolean)GetValue(ChamberIsUpProperty); }
set { SetValue(ChamberIsUpProperty, value); }
}
public static readonly DependencyProperty ChamberIsUpProperty =
DependencyProperty.Register("ChamberIsUp", typeof(bool), typeof(BodyLid), new FrameworkPropertyMetadata(default(bool), FrameworkPropertyMetadataOptions.AffectsRender));
public bool ChamberIsDown
{
get { return (Boolean)GetValue(ChamberIsDownProperty); }
set { SetValue(ChamberIsDownProperty, value); }
}
public static readonly DependencyProperty ChamberIsDownProperty =
DependencyProperty.Register("ChamberIsDown", typeof(bool), typeof(BodyLid), new FrameworkPropertyMetadata(default(bool), FrameworkPropertyMetadataOptions.AffectsRender));
public bool ChamberIsEnd
{
get { return (Boolean)GetValue(ChamberIsEndProperty); }
set { SetValue(ChamberIsEndProperty, value); }
}
public static readonly DependencyProperty ChamberIsEndProperty =
DependencyProperty.Register("ChamberIsEnd", typeof(bool), typeof(BodyLid), new FrameworkPropertyMetadata(default(bool), FrameworkPropertyMetadataOptions.AffectsRender));
public bool ChamberIsFront
{
get { return (Boolean)GetValue(ChamberIsFrontProperty); }
set { SetValue(ChamberIsFrontProperty, value); }
}
public static readonly DependencyProperty ChamberIsFrontProperty =
DependencyProperty.Register("ChamberIsFront", typeof(bool), typeof(BodyLid), new FrameworkPropertyMetadata(default(bool), FrameworkPropertyMetadataOptions.AffectsRender));
public bool ChamberIsUpLeach
{
get { return (Boolean)GetValue(ChamberIsUpLeachProperty); }
set { SetValue(ChamberIsUpLeachProperty, value); }
}
public static readonly DependencyProperty ChamberIsUpLeachProperty =
DependencyProperty.Register("ChamberIsUpLeach", typeof(bool), typeof(BodyLid), new FrameworkPropertyMetadata(default(bool), FrameworkPropertyMetadataOptions.AffectsRender));
public bool TightenSH
{
get { return (Boolean)GetValue(TightenSHProperty); }
set { SetValue(TightenSHProperty, value); }
}
public static readonly DependencyProperty TightenSHProperty =
DependencyProperty.Register("TightenSH", typeof(bool), typeof(BodyLid), new FrameworkPropertyMetadata(default(bool), FrameworkPropertyMetadataOptions.AffectsRender));
public bool TightenMiddle
{
get { return (Boolean)GetValue(TightenMiddleProperty); }
set { SetValue(TightenMiddleProperty, value); }
}
public static readonly DependencyProperty TightenMiddleProperty =
DependencyProperty.Register("TightenMiddle", typeof(bool), typeof(BodyLid), new FrameworkPropertyMetadata(default(bool), FrameworkPropertyMetadataOptions.AffectsRender));
public bool SwingLockSH
{
get { return (Boolean)GetValue(SwingLockSHProperty); }
set { SetValue(SwingLockSHProperty, value); }
}
public static readonly DependencyProperty SwingLockSHProperty =
DependencyProperty.Register("SwingLockSH", typeof(bool), typeof(BodyLid), new FrameworkPropertyMetadata(default(bool), FrameworkPropertyMetadataOptions.AffectsRender));
public bool SwingLockMiddle
{
get { return (Boolean)GetValue(SwingLockMiddleProperty); }
set { SetValue(SwingLockMiddleProperty, value); }
}
public static readonly DependencyProperty SwingLockMiddleProperty =
DependencyProperty.Register("SwingLockMiddle", typeof(bool), typeof(BodyLid), new FrameworkPropertyMetadata(default(bool), FrameworkPropertyMetadataOptions.AffectsRender));
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
bd = null;
if (DesignerProperties.GetIsInDesignMode(this))
{
return;
}
SetPicVisble();
SetBodyImage();
if (bd == null)
{
return;
}
//初始位置
if (ChamberIsUp != _isUp || ChamberIsDown != _isDown)
{
_isUp = ChamberIsUp;
_isDown = ChamberIsDown;
Dispatcher.Invoke(() => MoveBodyUp(ChamberIsUp, 0));
}
if (ChamberIsEnd != _isEnd || ChamberIsFront != _isFront)
{
_isEnd = ChamberIsEnd;
_isFront = ChamberIsFront;
Dispatcher.Invoke(() => MoveBodyEnd(ChamberIsEnd, 0));
}
//按钮移动
if (MovingUp && !ChamberIsEnd && ChamberIsDown)
{
Dispatcher.Invoke(() => MoveBodyUp(true, MovingUpTime));
}
else if (MovingDown && !ChamberIsEnd && ChamberIsUp)
{
Dispatcher.Invoke(() => MoveBodyUp(false, MovingUpTime));
}
else if (MovingEnd && ChamberIsUp && !ChamberIsEnd)
{
Dispatcher.Invoke(() => MoveBodyEnd(true, MovingEndTime));
}
else if (MovingFront && ChamberIsUp && ChamberIsEnd)
{
Dispatcher.Invoke(() => MoveBodyEnd(false, MovingEndTime));
}
}
private void SetPicVisble()
{
if (TightenSH)
{
PicTL.Visibility = Visibility.Visible;
PicTR.Visibility = Visibility.Visible;
}
else
{
PicTL.Visibility = Visibility.Collapsed;
PicTR.Visibility = Visibility.Collapsed;
}
if (TightenMiddle)
{
PicML.Visibility = Visibility.Visible;
PicMR.Visibility = Visibility.Visible;
}
else
{
PicML.Visibility = Visibility.Collapsed;
PicMR.Visibility = Visibility.Collapsed;
}
}
private void SetBodyImage()
{
this.PicTop.Source = new BitmapImage(new Uri("pack://application:,,,/SicUI;component/Themes/Images/parts/bodymove/Showerhead2.png"));
this.picMiddle.Source = new BitmapImage(new Uri("pack://application:,,,/SicUI;component/Themes/Images/parts/bodymove/Middle.png"));
this.PicTR.Source = new BitmapImage(new Uri("pack://application:,,,/SicUI;component/Themes/Images/parts/bodymove/khr.png"));
this.PicTL.Source = new BitmapImage(new Uri("pack://application:,,,/SicUI;component/Themes/Images/parts/bodymove/khl.png"));
this.PicTR.Source = new BitmapImage(new Uri("pack://application:,,,/SicUI;component/Themes/Images/parts/bodymove/khr.png"));
this.PicTL.Source = new BitmapImage(new Uri("pack://application:,,,/SicUI;component/Themes/Images/parts/bodymove/khl.png"));
if (!TightenSH && !SwingLockSH)
{
this.PicTop.Source = new BitmapImage(new Uri("pack://application:,,,/SicUI;component/Themes/Images/parts/bodymove/Showerhead.png"));
bd = this.bdht;
}
else if (TightenSH && SwingLockSH && !TightenMiddle && !SwingLockMiddle)
{
this.PicTop.Source = new BitmapImage(new Uri("pack://application:,,,/SicUI;component/Themes/Images/parts/bodymove/Showerhead.png"));
this.picMiddle.Source = new BitmapImage(new Uri("pack://application:,,,/SicUI;component/Themes/Images/parts/bodymove/Middle2.png"));
this.PicTR.Source = new BitmapImage(new Uri("pack://application:,,,/SicUI;component/Themes/Images/parts/bodymove/khr2.png"));
this.PicTL.Source = new BitmapImage(new Uri("pack://application:,,,/SicUI;component/Themes/Images/parts/bodymove/khl2.png"));
bd = this.bdhtm;
}
}
private void MoveBodyUp(bool up, int time, Action onComplete = null)
{
bd.Stop();
bd.MoveToUp(up, time, onComplete);
}
private void MoveBodyEnd(bool end, int time, Action onComplete = null)
{
bd.Stop();
bd.MoveToEnd(end, time, onComplete);
}
private void Stop()
{
this.bdht.Stop();
this.bdht.Stop();
this.bdhtm.Stop();
}
private void Invoke(Action action)
{
Dispatcher.Invoke(action);
}
}
}