Add project files.
This commit is contained in:
137
ControlMyMonitorManagement/Control/Loading.xaml
Normal file
137
ControlMyMonitorManagement/Control/Loading.xaml
Normal file
@@ -0,0 +1,137 @@
|
||||
<UserControl x:Class="CMM.Management.Control.Loading"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:CMM.Management.Control"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="450" d:DesignWidth="800">
|
||||
<UserControl.Resources>
|
||||
<Color x:Key="FilledColor" A="255" B="155" R="155" G="155"/>
|
||||
<Color x:Key="UnfilledColor" A="0" B="155" R="155" G="155"/>
|
||||
<Style x:Key="BusyAnimationStyle" TargetType="Control">
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="Control">
|
||||
<ControlTemplate.Resources>
|
||||
<Storyboard x:Key="Animation0" BeginTime="00:00:00.0" RepeatBehavior="Forever">
|
||||
<ColorAnimationUsingKeyFrames Storyboard.TargetName="ellipse0" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">
|
||||
<SplineColorKeyFrame KeyTime="00:00:00.0" Value="{StaticResource FilledColor}"/>
|
||||
<SplineColorKeyFrame KeyTime="00:00:01.6" Value="{StaticResource UnfilledColor}"/>
|
||||
</ColorAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
|
||||
<Storyboard x:Key="Animation1" BeginTime="00:00:00.2" RepeatBehavior="Forever">
|
||||
<ColorAnimationUsingKeyFrames Storyboard.TargetName="ellipse1" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">
|
||||
<SplineColorKeyFrame KeyTime="00:00:00.0" Value="{StaticResource FilledColor}"/>
|
||||
<SplineColorKeyFrame KeyTime="00:00:01.6" Value="{StaticResource UnfilledColor}"/>
|
||||
</ColorAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
|
||||
<Storyboard x:Key="Animation2" BeginTime="00:00:00.4" RepeatBehavior="Forever">
|
||||
<ColorAnimationUsingKeyFrames Storyboard.TargetName="ellipse2" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">
|
||||
<SplineColorKeyFrame KeyTime="00:00:00.0" Value="{StaticResource FilledColor}"/>
|
||||
<SplineColorKeyFrame KeyTime="00:00:01.6" Value="{StaticResource UnfilledColor}"/>
|
||||
</ColorAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
|
||||
<Storyboard x:Key="Animation3" BeginTime="00:00:00.6" RepeatBehavior="Forever">
|
||||
<ColorAnimationUsingKeyFrames Storyboard.TargetName="ellipse3" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">
|
||||
<SplineColorKeyFrame KeyTime="00:00:00.0" Value="{StaticResource FilledColor}"/>
|
||||
<SplineColorKeyFrame KeyTime="00:00:01.6" Value="{StaticResource UnfilledColor}"/>
|
||||
</ColorAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
|
||||
<Storyboard x:Key="Animation4" BeginTime="00:00:00.8" RepeatBehavior="Forever">
|
||||
<ColorAnimationUsingKeyFrames Storyboard.TargetName="ellipse4" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">
|
||||
<SplineColorKeyFrame KeyTime="00:00:00.0" Value="{StaticResource FilledColor}"/>
|
||||
<SplineColorKeyFrame KeyTime="00:00:01.6" Value="{StaticResource UnfilledColor}"/>
|
||||
</ColorAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
|
||||
<Storyboard x:Key="Animation5" BeginTime="00:00:01.0" RepeatBehavior="Forever">
|
||||
<ColorAnimationUsingKeyFrames Storyboard.TargetName="ellipse5" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">
|
||||
<SplineColorKeyFrame KeyTime="00:00:00.0" Value="{StaticResource FilledColor}"/>
|
||||
<SplineColorKeyFrame KeyTime="00:00:01.6" Value="{StaticResource UnfilledColor}"/>
|
||||
</ColorAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
|
||||
<Storyboard x:Key="Animation6" BeginTime="00:00:01.2" RepeatBehavior="Forever">
|
||||
<ColorAnimationUsingKeyFrames Storyboard.TargetName="ellipse6" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">
|
||||
<SplineColorKeyFrame KeyTime="00:00:00.0" Value="{StaticResource FilledColor}"/>
|
||||
<SplineColorKeyFrame KeyTime="00:00:01.6" Value="{StaticResource UnfilledColor}"/>
|
||||
</ColorAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
|
||||
<Storyboard x:Key="Animation7" BeginTime="00:00:01.4" RepeatBehavior="Forever">
|
||||
<ColorAnimationUsingKeyFrames Storyboard.TargetName="ellipse7" Storyboard.TargetProperty="(Shape.Fill).(SolidColorBrush.Color)">
|
||||
<SplineColorKeyFrame KeyTime="00:00:00.0" Value="{StaticResource FilledColor}"/>
|
||||
<SplineColorKeyFrame KeyTime="00:00:01.6" Value="{StaticResource UnfilledColor}"/>
|
||||
</ColorAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</ControlTemplate.Resources>
|
||||
|
||||
<ControlTemplate.Triggers>
|
||||
<Trigger Property="IsVisible" Value="True">
|
||||
<Trigger.EnterActions>
|
||||
<BeginStoryboard Storyboard="{StaticResource Animation0}" x:Name="Storyboard0" />
|
||||
<BeginStoryboard Storyboard="{StaticResource Animation1}" x:Name="Storyboard1"/>
|
||||
<BeginStoryboard Storyboard="{StaticResource Animation2}" x:Name="Storyboard2"/>
|
||||
<BeginStoryboard Storyboard="{StaticResource Animation3}" x:Name="Storyboard3"/>
|
||||
<BeginStoryboard Storyboard="{StaticResource Animation4}" x:Name="Storyboard4"/>
|
||||
<BeginStoryboard Storyboard="{StaticResource Animation5}" x:Name="Storyboard5"/>
|
||||
<BeginStoryboard Storyboard="{StaticResource Animation6}" x:Name="Storyboard6"/>
|
||||
<BeginStoryboard Storyboard="{StaticResource Animation7}" x:Name="Storyboard7"/>
|
||||
</Trigger.EnterActions>
|
||||
|
||||
<Trigger.ExitActions>
|
||||
<StopStoryboard BeginStoryboardName="Storyboard0"/>
|
||||
<StopStoryboard BeginStoryboardName="Storyboard1"/>
|
||||
<StopStoryboard BeginStoryboardName="Storyboard2"/>
|
||||
<StopStoryboard BeginStoryboardName="Storyboard3"/>
|
||||
<StopStoryboard BeginStoryboardName="Storyboard4"/>
|
||||
<StopStoryboard BeginStoryboardName="Storyboard5"/>
|
||||
<StopStoryboard BeginStoryboardName="Storyboard6"/>
|
||||
<StopStoryboard BeginStoryboardName="Storyboard7"/>
|
||||
</Trigger.ExitActions>
|
||||
</Trigger>
|
||||
</ControlTemplate.Triggers>
|
||||
|
||||
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}">
|
||||
<Grid>
|
||||
<Canvas Height="60" Width="60">
|
||||
<Canvas.Resources>
|
||||
<Style TargetType="Ellipse">
|
||||
<Setter Property="Width" Value="15"/>
|
||||
<Setter Property="Height" Value="15" />
|
||||
<Setter Property="Fill" Value="#009B9B9B" />
|
||||
</Style>
|
||||
</Canvas.Resources>
|
||||
|
||||
<Ellipse x:Name="ellipse0" Canvas.Left="1.75" Canvas.Top="21"/>
|
||||
<Ellipse x:Name="ellipse1" Canvas.Top="7" Canvas.Left="6.5"/>
|
||||
<Ellipse x:Name="ellipse2" Canvas.Left="20.5" Canvas.Top="0.75"/>
|
||||
<Ellipse x:Name="ellipse3" Canvas.Left="34.75" Canvas.Top="6.75"/>
|
||||
<Ellipse x:Name="ellipse4" Canvas.Left="40.5" Canvas.Top="20.75" />
|
||||
<Ellipse x:Name="ellipse5" Canvas.Left="34.75" Canvas.Top="34.5"/>
|
||||
<Ellipse x:Name="ellipse6" Canvas.Left="20.75" Canvas.Top="39.75"/>
|
||||
<Ellipse x:Name="ellipse7" Canvas.Top="34.25" Canvas.Left="7" />
|
||||
<Ellipse Width="39.5" Height="39.5" Canvas.Left="8.75" Canvas.Top="8" Visibility="Hidden"/>
|
||||
</Canvas>
|
||||
<Label Content="{Binding Path=Text}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
</UserControl.Resources>
|
||||
<Grid>
|
||||
<Control Style="{StaticResource BusyAnimationStyle}"/>
|
||||
<Border Background="#AA424242">
|
||||
<Border.Effect>
|
||||
<BlurEffect Radius="50" KernelType="Gaussian" RenderingBias="Quality"/>
|
||||
</Border.Effect>
|
||||
</Border>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
28
ControlMyMonitorManagement/Control/Loading.xaml.cs
Normal file
28
ControlMyMonitorManagement/Control/Loading.xaml.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
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 CMM.Management.Control
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for Loading.xaml
|
||||
/// </summary>
|
||||
public partial class Loading : UserControl
|
||||
{
|
||||
public Loading()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
55
ControlMyMonitorManagement/Control/MonCtrl.cs
Normal file
55
ControlMyMonitorManagement/Control/MonCtrl.cs
Normal file
@@ -0,0 +1,55 @@
|
||||
using System.Windows.Controls;
|
||||
using System.Windows;
|
||||
using CMM.Library.ViewModel;
|
||||
using CMM.Library.Base;
|
||||
using CMM.Library.Method;
|
||||
using System.Windows.Data;
|
||||
using System;
|
||||
|
||||
namespace CMM.Management.Control
|
||||
{
|
||||
/// <summary>
|
||||
/// 單一顆螢幕
|
||||
/// </summary>
|
||||
internal class MonCtrl : System.Windows.Controls.Control
|
||||
{
|
||||
public readonly static DependencyProperty MonProperty;
|
||||
private StackPanel _sp;
|
||||
|
||||
static MonCtrl()
|
||||
{
|
||||
DefaultStyleKeyProperty.OverrideMetadata(typeof(MonCtrl), new FrameworkPropertyMetadata(typeof(MonCtrl)));
|
||||
|
||||
MonProperty = DependencyProperty.Register(
|
||||
"Monitor",
|
||||
typeof(XMonitor),
|
||||
typeof(MonCtrl),
|
||||
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnMonChangedCallback));
|
||||
}
|
||||
|
||||
public override void OnApplyTemplate()
|
||||
{
|
||||
_sp = Template.FindName("sp", this) as StackPanel;
|
||||
}
|
||||
|
||||
public XMonitor Mon
|
||||
{
|
||||
get => (XMonitor)GetValue(MonProperty);
|
||||
set => SetValue(MonProperty, value);
|
||||
}
|
||||
|
||||
static void OnMonChangedCallback(DependencyObject sender, DependencyPropertyChangedEventArgs args)
|
||||
{
|
||||
var me = sender as MonCtrl;
|
||||
if (me != null)
|
||||
{
|
||||
me.OnMonChanged((XMonitor)args.NewValue);
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void OnMonChanged(XMonitor value)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
61
ControlMyMonitorManagement/Control/MonitorsControl.cs
Normal file
61
ControlMyMonitorManagement/Control/MonitorsControl.cs
Normal file
@@ -0,0 +1,61 @@
|
||||
using System.Windows.Controls;
|
||||
using System.Windows;
|
||||
using CMM.Library.ViewModel;
|
||||
using CMM.Library.Base;
|
||||
using CMM.Library.Method;
|
||||
using System.Windows.Data;
|
||||
using System;
|
||||
|
||||
namespace CMM.Management.Control
|
||||
{
|
||||
/// <summary>
|
||||
/// 全部螢幕
|
||||
/// </summary>
|
||||
internal class MonitorsControl : System.Windows.Controls.Control
|
||||
{
|
||||
public readonly static DependencyProperty MonitorsProperty;
|
||||
private StackPanel _sp;
|
||||
|
||||
static MonitorsControl()
|
||||
{
|
||||
DefaultStyleKeyProperty.OverrideMetadata(typeof(MonitorsControl), new FrameworkPropertyMetadata(typeof(MonitorsControl)));
|
||||
|
||||
MonitorsProperty = DependencyProperty.Register(
|
||||
"Monitors",
|
||||
typeof(ObservableRangeCollection<XMonitor>),
|
||||
typeof(MonitorsControl),
|
||||
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnMonitorsChangedCallback));
|
||||
}
|
||||
|
||||
public override void OnApplyTemplate()
|
||||
{
|
||||
_sp = Template.FindName("sp", this) as StackPanel;
|
||||
}
|
||||
|
||||
public ObservableRangeCollection<XMonitor> Monitors
|
||||
{
|
||||
get => (ObservableRangeCollection<XMonitor>)GetValue(MonitorsProperty);
|
||||
set => SetValue(MonitorsProperty, value);
|
||||
}
|
||||
|
||||
static void OnMonitorsChangedCallback(DependencyObject sender, DependencyPropertyChangedEventArgs args)
|
||||
{
|
||||
var me = sender as MonitorsControl;
|
||||
if (me != null)
|
||||
{
|
||||
me.OnMonitorsChanged((ObservableRangeCollection<XMonitor>)args.NewValue);
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void OnMonitorsChanged(ObservableRangeCollection<XMonitor> value)
|
||||
{
|
||||
foreach (var mon in value)
|
||||
{
|
||||
var monCtrl = new MonCtrl();
|
||||
monCtrl.Mon = mon;
|
||||
|
||||
_sp.Children.Add(monCtrl);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user