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); } } } }