|
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Markup;
using System.Xml;
namespace CBR.Components.Designer
{
public class DesignerCanvas : Canvas
{
private Point? dragStartPoint = null;
public IEnumerable<DesignerItem> SelectedItems
{
get
{
var selectedItems = from item in this.Children.OfType<DesignerItem>()
where item.IsSelected == true
select item;
return selectedItems;
}
}
public void DeselectAll()
{
foreach (DesignerItem item in this.SelectedItems)
{
item.IsSelected = false;
}
}
//protected override void OnMouseDown(MouseButtonEventArgs e)
//{
// base.OnMouseDown(e);
// if (e.Source == this)
// {
// this.dragStartPoint = new Point?(e.GetPosition(this));
// this.DeselectAll();
// e.Handled = true;
// }
//}
//protected override void OnMouseMove(MouseEventArgs e)
//{
// base.OnMouseMove(e);
// if (e.LeftButton != MouseButtonState.Pressed)
// {
// this.dragStartPoint = null;
// }
// if (this.dragStartPoint.HasValue)
// {
// AdornerLayer adornerLayer = AdornerLayer.GetAdornerLayer(this);
// if (adornerLayer != null)
// {
// RubberbandAdorner adorner = new RubberbandAdorner(this, this.dragStartPoint);
// if (adorner != null)
// {
// adornerLayer.Add(adorner);
// }
// }
// e.Handled = true;
// }
//}
//protected override void OnDrop(DragEventArgs e)
//{
// base.OnDrop(e);
// string xamlString = e.Data.GetData("DESIGNER_ITEM") as string;
// if (!String.IsNullOrEmpty(xamlString))
// {
// DesignerItem newItem = null;
// FrameworkElement content = XamlReader.Load(XmlReader.Create(new StringReader(xamlString))) as FrameworkElement;
// if (content != null)
// {
// newItem = new DesignerItem();
// newItem.Content = content;
// Point position = e.GetPosition(this);
// if (content.MinHeight != 0 && content.MinWidth != 0)
// {
// newItem.Width = content.MinWidth * 2; ;
// newItem.Height = content.MinHeight * 2;
// }
// else
// {
// newItem.Width = 65;
// newItem.Height = 65;
// }
// DesignerCanvas.SetLeft(newItem, Math.Max(0, position.X - newItem.Width / 2));
// DesignerCanvas.SetTop(newItem, Math.Max(0, position.Y - newItem.Height / 2));
// this.Children.Add(newItem);
// this.DeselectAll();
// newItem.IsSelected = true;
// }
// e.Handled = true;
// }
//}
//protected override Size MeasureOverride(Size constraint)
//{
// Size size = new Size();
// foreach (UIElement element in Children)
// {
// double left = Canvas.GetLeft(element);
// double top = Canvas.GetTop(element);
// left = double.IsNaN(left) ? 0 : left;
// top = double.IsNaN(top) ? 0 : top;
// element.Measure(constraint);
// Size desiredSize = element.DesiredSize;
// if (!double.IsNaN(desiredSize.Width) && !double.IsNaN(desiredSize.Height))
// {
// size.Width = Math.Max(size.Width, left + desiredSize.Width);
// size.Height = Math.Max(size.Height, top + desiredSize.Height);
// }
// }
// // add some extra margin
// size.Width += 10;
// size.Height += 10;
// return size;
//}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
WPF and MVVM fan, I practice C # in all its forms from the beginning of the NET Framework without mentioning C ++ / MFC and other software packages such as databases, ASP, WCF, Web & Windows services, Application, and now Core and UWP.
In my wasted hours, I am guilty of having fathered C.B.R. and its cousins C.B.R. for WinRT and UWP on the Windows store.
But apart from that, I am a great handyman ... the house, a rocket stove to heat the jacuzzi and the last one: a wood oven for pizza, bread, and everything that goes inside
https://guillaumewaser.wordpress.com/
https://fouretcompagnie.wordpress.com/