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
{
///
/// 全部螢幕
///
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),
typeof(MonitorsControl),
new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, OnMonitorsChangedCallback));
}
public override void OnApplyTemplate()
{
_sp = Template.FindName("sp", this) as StackPanel;
}
public ObservableRangeCollection Monitors
{
get => (ObservableRangeCollection)GetValue(MonitorsProperty);
set => SetValue(MonitorsProperty, value);
}
static void OnMonitorsChangedCallback(DependencyObject sender, DependencyPropertyChangedEventArgs args)
{
var me = sender as MonitorsControl;
if (me != null)
{
me.OnMonitorsChanged((ObservableRangeCollection)args.NewValue);
}
}
public virtual void OnMonitorsChanged(ObservableRangeCollection value)
{
foreach (var mon in value)
{
var monCtrl = new MonCtrl();
monCtrl.Mon = mon;
_sp.Children.Add(monCtrl);
}
}
}
}