using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
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;
using Tango.SharedUI.Helpers;
namespace Tango.MachineStudio.Common.Controls
{
///
/// Represents an MDI-style container
///
///
///
///
public partial class MdiContainerControl : UserControl
{
private const int MIN_SIZE = 200;
public MdiContainerControl()
{
InitializeComponent();
}
public IEnumerable ItemsSource
{
get { return (IEnumerable)GetValue(ItemsSourceProperty); }
set { SetValue(ItemsSourceProperty, value); }
}
public static readonly DependencyProperty ItemsSourceProperty =
DependencyProperty.Register("ItemsSource", typeof(IEnumerable), typeof(MdiContainerControl), new PropertyMetadata(null));
private void OnControlDragging(object sender, DragDeltaEventArgs e)
{
var mdiControl = GetSenderTag(sender);
mdiControl.Location = new Point(mdiControl.Location.X + e.HorizontalChange, mdiControl.Location.Y + e.VerticalChange);
FitCanvas();
}
private T GetSenderTag(object sender) where T : class
{
return (T)((sender as FrameworkElement).Tag);
}
private void FitCanvas()
{
Canvas canvas = GetCanvas();
canvas.Width = canvas.Children.OfType().Max(x => Canvas.GetLeft(x) + x.ActualWidth);
canvas.Height = canvas.Children.OfType().Max(x => Canvas.GetTop(x) + x.ActualHeight);
}
private Canvas GetCanvas()
{
return UIHelper.FindChild