mirror of
https://gitee.com/csharpui/CPF.git
synced 2025-04-04 23:39:26 +08:00
89 lines
2.9 KiB
C#
89 lines
2.9 KiB
C#
using CPF;
|
|
using CPF.Animation;
|
|
using CPF.Charts;
|
|
using CPF.Controls;
|
|
using CPF.Drawing;
|
|
using CPF.Input;
|
|
using CPF.Shapes;
|
|
using CPF.Styling;
|
|
using CPF.Svg;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace ConsoleApp1
|
|
{
|
|
[CPF.Design.DesignerLoadStyle("res://$safeprojectname$/Stylesheet1.css")]//用于设计的时候加载样式
|
|
public class DragListBox : Control
|
|
{
|
|
//模板定义
|
|
protected override void InitializeComponent()
|
|
{
|
|
Size = new SizeField(200, 180);
|
|
Children.Add(new ListBox
|
|
{
|
|
Name = "List1",
|
|
PresenterFor = this,
|
|
Size = SizeField.Fill,
|
|
Items = {
|
|
new ListBoxItem{ Content = "266666" },
|
|
new ListBoxItem{ Content = "366666" },
|
|
new ListBoxItem{ Content = "466666" },
|
|
new ListBoxItem{ Content = "566666" },
|
|
},
|
|
Commands = {
|
|
{ nameof(ListBox.MouseDown),(s,e1)=>{
|
|
var e = e1 as MouseEventArgs;
|
|
var list = s as ListBox;
|
|
if (e.LeftButton == MouseButtonState.Pressed){
|
|
var item = list.SelectedItems.FirstOrDefault() as ListBoxItem;
|
|
if (item!=null){
|
|
list.Items.Remove(item);
|
|
Tag = item;
|
|
this.Children.Add(item);
|
|
item.InvalidateMeasure();
|
|
item.InvalidateArrange();
|
|
}
|
|
}
|
|
} },
|
|
{ nameof(ListBox.MouseMove),(s,e1)=>{
|
|
if (!(Tag is UIElement)){
|
|
return;
|
|
}
|
|
var e = e1 as MouseEventArgs;
|
|
var list = s as ListBox;
|
|
if (e.LeftButton == MouseButtonState.Pressed){
|
|
var item = Tag as UIElement;
|
|
item.MarginTop = e.Location.Y;
|
|
}
|
|
} }
|
|
}
|
|
});
|
|
|
|
}
|
|
|
|
protected override Size ArrangeOverride(in Size finalSize)
|
|
{
|
|
return base.ArrangeOverride(finalSize);
|
|
}
|
|
}
|
|
|
|
public class TestTextBlock : TextBlock
|
|
{
|
|
protected override void OnPropertyChanged(string propertyName, object oldValue, object newValue, PropertyMetadataAttribute propertyMetadata)
|
|
{
|
|
base.OnPropertyChanged(propertyName, oldValue, newValue, propertyMetadata);
|
|
if (propertyName == nameof(MarginTop))
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
protected override void Dispose(bool disposing)
|
|
{
|
|
base.Dispose(disposing);
|
|
}
|
|
}
|
|
}
|