CPF/ConsoleApp1/Window2.cs
2023-12-03 23:47:52 +08:00

4624 lines
250 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CPF;
using CPF.Drawing;
using CPF.Controls;
using CPF.Animation;
using System.Data;
using System.Diagnostics;
using CPF.Shapes;
using CPF.Svg;
using System.Threading;
using CPF.Input;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Linq.Expressions;
using System.Reflection.Emit;
using CPF.Styling;
using CPF.Documents;
using System.Threading.Tasks;
//#if !DesignMode&&!Net4
////using System.Reactive.Linq;
////using System.Reactive;
//using UglyToad.PdfPig;
//#endif
namespace ConsoleApp1
{
public class Window2 : Window
{
Model model = new Model();
ThreeDEffect2 effect = new ThreeDEffect2 { Depth = 3000, Y = 90, };
DataGridColumn column = new DataGridCheckBoxColumn
{
Header = "d1fsd",
Binding = new DataGridBinding("p2")
{
BindingMode = BindingMode.TwoWay
},
Width = "100",
HeaderTemplate = typeof(ColumnTemplate),
};
protected override void InitializeComponent()
{
//var img = Image.FromFile(@"C:\Users\xhm\Desktop\231.gif");
//TopMost = true;
Nodes = new Collection<NodeData>
{
new NodeData
{
Text="test1",
Nodes=
{
new NodeData
{
Text="asda"
},
new NodeData
{
Text="asda"
},
new NodeData
{
Text="1asda"
},
new NodeData
{
Text="2asda"
},
}
},
new NodeData
{
Text="测试",
Nodes=
{
new NodeData
{
Text="3asda"
},
new NodeData
{
Text="4asda",
Nodes=
{
new NodeData
{
Text="6asda"
},
new NodeData
{
Text="7asda"
},
}
},
new NodeData
{
Text="6asda"
},
new NodeData
{
Text="7asda"
},
new NodeData
{
Text="4asda",
Nodes=
{
new NodeData
{
Text="6asda"
},
new NodeData
{
Text="7asda"
},
new NodeData
{
Text="6asda"
},
new NodeData
{
Text="7asda"
},
}
},
new NodeData
{
Text="3asda"
},
new NodeData
{
Text="4asda",
Nodes=
{
new NodeData
{
Text="6asda"
},
new NodeData
{
Text="7asda"
},
new NodeData
{
Text="6asda"
},
new NodeData
{
Text="7asda"
},
}
},
}
}
};
List1 = new Collection<TestClass>();
for (int i = 0;
i < 10;
i++)
{
List1.Add(new TestClass
{
test = i.ToString()
});
}
List2 = new Collection<TestClass>();
//Columns = new Collection<DataGridColumn>();
Title = "CPF演示案例";
Width = 860;
Height = 600;
Background = null;
CanResize = true;
MinHeight = 100;
MinWidth = 200;
DragThickness = 10;
Children.Add(new WindowFrame(this, new Panel
{
Background = null,
Width = "100%",
Height = "100%",
Children =
{
new Button
{
MarginTop = 0,
Content = "点击生成pdf",
[nameof(Button.Content)]= new Obx<MainModel>(a => a.Test1.test.test.test.test.Name),
Commands =
{
{
nameof(Button.Click),
(a,b)=>
{
var TabControl = FindPresenterByName<TabControl>("mainTab");
#if !Net4
CPF.Skia.SkiaPdf.CreatePdf(TabControl.SelectedItem.ContentElement,"test.pdf");
#endif
}
}
},
},//内容元素放这里
new TabControl
{
MarginTop = 20,
Name="mainTab",
PresenterFor = this,
TabStripPlacement= Dock.Left,
Width="100%",
Height="100%",//SelectedIndex=2,
Items=
{
new TabItemTemplate
{
Header="基础控件",
Content=new Panel
{
PresenterFor = this,
Name = nameof(page1),
Width="100%",
Height="100%",
Background="#fff",
Children=
{
new Button
{
PresenterFor = this,
Name = nameof(btn),
Classes="Test",
FontStyle= FontStyles.Bold| FontStyles.Italic,
Width=150,
Height=25,
Content="另外一个演示窗体😍",
MarginTop=20,
MarginLeft=20,
[nameof(Button.Click)]=new CommandDescribe((s,e)=>
{
var w = new Window1();
w.DataContext = model;
w.CommandContext = w.DataContext;
//w.TopMost=true;
w.Show();
}),//Commands=
//{
// {
// nameof(Button.Click),
// (s,e)=>
// {
// var w = new Window1();
// w.DataContext = model;
// w.CommandContext = w.DataContext;
// //w.TopMost=true;
// w.Show();
// }
// }
//}
},
new CheckBox
{
IsChecked = null,
Content="复选框1",
MarginTop="64",
MarginLeft="20"
},
new CheckBox
{
Content="复选框2",
MarginTop="90",
MarginLeft="20",
IsThreeState=true
},
new RadioButton
{
IsChecked = true,
Content="单选框1",
MarginTop="120",
MarginLeft="20",
GroupName="gn1"
},
new RadioButton
{
Content="单选框2",
MarginTop=150,
MarginLeft=20,
GroupName="gn1"
},
new Border
{
Name="shadowEffect",
MarginTop=180,
MarginLeft=15,
Width=110,
Height=33,
Background="#fff",
BorderType= BorderType.BorderThickness,
ShadowBlur=5,
ShadowColor="0,0,0,0",
Child=new TextBox
{
Classes=
{
"Single"
},
PresenterFor=this,
Name="textbox1",
MarginBottom=0,
MarginLeft=0,
MarginRight=0,
MarginTop=0,
Text="dfsfs"
}
},//绑定当前页面里的元素被绑定的元素需要设置PresenterFor=this
new TextBox
{
Padding = "0,5,0,0",
Name="password",
PresenterFor=this,
Classes=
{
"Single"
},
MarginTop=220,
MarginLeft=20,
Width=100,
Height = 24,
Background="#fff",
Bindings=
{
{
nameof(TextBox.Text),
nameof(TextBox.Text),
this.FindPresenter<TextBox>(a=>a.Name=="textbox1")
}
},//Text="test",
PasswordChar='*',
CornerRadius="8",
IsAntiAlias=true
},
new TextBox
{
Commands =
{
{
nameof(TextBox.MouseDown),
nameof(testHandled),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
{
nameof(TextBox.IsFocused),
nameof(textFocus),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
{
nameof(TextBox.KeyDown),
nameof(KeyDownTest),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
},
Bindings =
{
{
nameof(TextBox.Document),
nameof(Document),
this,
BindingMode.OneWayToSource
},
},
Padding = "5,5,5,5",
PresenterFor = this,
Name = nameof(textBox),
MarginTop=250,
MarginLeft=20,
Width="40%",
Height=258,
Background="#FFFFC7",
Text="多行文本框😀😁😂😃123haha",
IsAllowPasteImage=true,
AcceptsTab=true,
Styles =
{
new DocumentStyle
{
Foreground="#f00"
}
}
},
new ScrollBar
{
MarginTop = 89,
Maximum = 10f,
Width = 136,
Value = 0.5f,
Name = "scrollbar",
MarginRight=529,
MarginBottom=434,
MarginLeft=171,
Orientation= Orientation.Horizontal,
Background="url(res://ConsoleApp1/Resources/()1.gif) Tile None 0,0,0,0"
},
new ScrollBar
{
Cursor = Cursors.Cross,
MarginLeft=373.6f,
MarginTop=24.2f,
Width=27f,
Height=154.5f,
Orientation= Orientation.Vertical,
Background="#fff"
},
new Picture
{
Source="res://ConsoleApp1/Resources/主页.png",
MarginTop=215,
MarginLeft=200
},
new Picture
{
Height = 41,
Width = 122,
Source="https://dss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo_top-e3b63a0b1b.png",
MarginTop=168,
MarginLeft=167
},
new ComboBox
{
//IsVirtualizing=true,
PresenterFor = this,
Name = nameof(testCombobox),//IsEditable=true,
//SelectionMode= SelectionMode.Multiple,
//SelectedIndex=2,
MarginTop=138,
MarginLeft=262,
Width=100,
Height=25,
ItemTemplate=new ListBoxItem
{
Width="100%",
FontSize=14,
ContentTemplate=new ContentTemplate
{
Width="auto",
MarginLeft=5,
}
},
Bindings =
{
{
nameof(ComboBox.Items),
nameof(MainModel.TestItems),
null,
BindingMode.TwoWay
},
{
nameof(ComboBox.SelectedValue),
nameof(MainModel.SelectValue),
null,
BindingMode.TwoWay
},
},
DisplayMemberPath="Item1",
SelectedValuePath="Item2",//IsVirtualizing=true
IsEditable=true,
},
new ScrollViewer
{
Background = "url(res://ConsoleApp1/icon.png) Tile None 0,0,0,0",
MarginLeft = 421,//HorizontalScrollBarVisibility= ScrollBarVisibility.Disabled,
//VerticalScrollBarVisibility= ScrollBarVisibility.Visible,
Commands =
{
{
nameof(ScrollViewer.MouseDown),
nameof(scrollViewerMouseDown),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
{
nameof(ScrollViewer.MouseUp),
nameof(scrollViewerMouseUp),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
},
Content=
//new Picture
//{
// PresenterFor = this,
// Name = nameof(pic),
// Source="http://219.239.12.91:5001/bookimage//bookimage3/cate1826979600058c0bd3/file253320e4000582XXXX/253320e4000582XXXX.jpg"
//}
#if !Net4&&!NETCOREAPP3_0
new GLView
{
Height = 336,
Width = 421,
IsAntiAlias=true,
},
#else
new WrapPanel
{
Width="100%",
Children =
{
new Button
{
Content="123"
},
new Button
{
Content="123"
},
new Button
{
Content="123"
},
new Button
{
Content="123"
},
new Button
{
Content="123"
},
new Button
{
Content="123"
},
new Button
{
Content="123"
},
new Button
{
Content="123"
},
new Button
{
Content="123"
},
new Button
{
Content="123"
},
new Button
{
Content="123"
},
new Button
{
Content="123"
},
new Button
{
Content="123"
},
new Button
{
Content="123"
},
}
},
#endif
Height=300,
MarginTop=19,
MarginRight=29
},
new Ellipse
{
StrokeStyle = "10,Solid",
Width=145,
Height=83,
IsAntiAlias=true,
Triggers=
{
new CPF.Styling.Trigger(nameof(IsMouseOver),Relation.Me)
{
Setters=
{
{
nameof(Ellipse.Fill),
"#f00"
}
}
},
},
},
new Expander
{
MarginTop=350,
Header="test",
Content= new Button
{
Content="test内容"
}
}
//.Bind(this,t=>t.FocusFrameFill,s=>s.Background,BindingMode.OneWay)
,// new Button{ Content="test",Commands={ {nameof(Button.Click),(s,e)=>MessageBox.Show("Test")
//} } },
//new Calendar{ },
new DatePicker
{
Width=100,
Height=20,
MarginTop=100
},//new DatePicker{ Width=100, Height=30},
new NumericUpDown
{
MarginLeft = 386,
MarginTop = 401,
Width = 83,
Minimum = 0.001,
Increment = 0.001,
Maximum=100,
Value=0.001,
Bindings =
{
}
},
new Button
{
MarginLeft = 175f,
MarginTop = 138.2f,
Content = "附加样式",
Bindings =
{
{
nameof(Button.Foreground),
nameof(MainModel.TestBool),
null,
BindingMode.OneWay,
(bool a)=>a?(ViewFill)"#fff":"#000"
}
},
Commands=
{
{
nameof(Button.Click),
(s,e)=>
{
this.LoadStyleFile("res://ConsoleApp1/testApend.css", true);
}
}
}
},
new Button
{
Commands =
{
{
"Click",
nameof(scrollEnd),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
},
Height = 30,
Width = 98,
MarginLeft = 495,
MarginTop = 362,
Content = "滚动到最底下",
},
new Button
{
Height = 34,
Width = 110,
MarginLeft = 666,
MarginTop = 349,
Content = "Button",
Commands =
{
{
nameof(Button.Click),
(s,e)=>
{
pic.Source= this.Screen.Screenshot();
}
}
}
},
new EditComboBox
{
Width = 91,//Bindings =
//{
// {
// nameof(ComboBox.Items),
// nameof(MainModel.TestItems1)
// },
//},
[nameof(ComboBox.Items)]=nameof(MainModel.TestItems1),//Commands =
//{
// {
// nameof(ComboBox.DoubleClick),
// nameof(comboBoxtest),
// this,
// CommandParameter.EventSender,
// CommandParameter.EventArgs
// },
// {
// nameof(ComboBox.IsDropDownOpen),
// nameof(TestComboBox),
// this,
// CommandParameter.EventSender,
// CommandParameter.EventArgs
// },
//},
PresenterFor = this,
Name = nameof(combox),
MarginLeft = 200,
MarginTop = 25,
},
new Slider
{
TickPlacement = TickPlacement.TopLeft,
MarginLeft = 547,
MarginTop = 427,
Height = 25,
Width = 151,
},
new Panel
{
Children =
{
new SVG
{
Fill = "#959595",
Height = 29,
IsAntiAlias = true,
Width = 33,
Stretch = Stretch.Uniform,
Source="<svg t=\"1631519369186\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"3913\" width=\"16\" height=\"16\"><path d=\"M812.698413 212.746384c79.825044 79.825044 121.362963 180.238448 124.613757 300.517813-3.250794 119.918166-44.788713 219.97037-124.613757 300.156614-79.825044 80.186243-179.877249 121.724162-299.795414 124.252557-120.640564-2.528395-220.692769-44.066314-300.517813-124.252557-79.825044-80.186243-121.362963-180.238448-124.613757-300.156614 3.250794-120.640564 44.788713-220.692769 124.613757-300.517813 79.825044-79.825044 179.877249-121.362963 300.517813-124.613757C633.182363 91.383422 732.873369 132.92134 812.698413 212.746384zM786.692063 791.387654c72.962257-72.962257 110.888183-164.345679 114.138977-274.150265-3.250794-109.804586-41.17672-201.188007-114.138977-274.150265-72.601058-72.962257-163.98448-110.888183-273.789065-113.416578C402.737213 131.837743 311.353792 169.763668 238.391534 243.087125c-72.962257 72.962257-110.888183 164.345679-114.138977 274.150265 3.250794 109.804586 41.17672 201.188007 114.138977 274.150265 72.601058 72.962257 164.345679 110.888183 274.872663 113.416578C622.707584 902.275838 714.091005 864.349912 786.692063 791.387654z\" p-id=\"3914\"></path></svg>"
}
},
MarginLeft = 383,
MarginTop = 450,
Height = 58,
Width = 121,
},
new Button
{
Commands =
{
{
nameof(Button.Click),
nameof(ShowLayer),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
},
Height = 21,
Width = 105,
MarginTop = 62,
MarginLeft = 195,
Content = "弹出Window2",
},
new ProgressBar
{
Height = 16,
Width = 142,
MarginTop = 473,
MarginLeft = 532,//[nameof(ProgressBar.Value)]="Value",
//[nameof(ProgressBar.Value)]=("Value",BindingMode.TwoWay),
//[nameof(ProgressBar.Value)]=(null,"Value",BindingMode.TwoWay,a=>a.ToString()),
//[nameof(ProgressBar.Value)]=new BindingDescribe(null,"Value",BindingMode.TwoWay,a=>a.ToString())
},
new TextBlock
{
TextTrimming= TextTrimming.CharacterEllipsis,
Height = 59,
Width = 41,
MarginTop = 397,
MarginLeft = 321,
Text = "Te\nxtBlock",
},
new CPF.Controls.Switch
{
PresenterFor = this,
Name = nameof(_sw),
Height = 30,
Width = 64,
MarginTop = 189,
MarginLeft = 300,
}
.Assign(out var sw),
new Button
{
Commands =
{
{
nameof(Button.Click),
nameof(PDF),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
},
MarginLeft = 98,
MarginTop = 69,
Content = "解析PDF"+sw.IsChecked,
},
new Viewbox
{
MarginLeft = 426,
MarginTop = 344,
Child = new Path("M159.375 196.875A9.375 9.375 0 0 1 140.625 196.875V133.8375L113.83125 89.2125A9.375 9.375 0 1 1 129.91875 79.55625L158.04375 126.43125A9.375 9.375 0 0 1 159.375 131.25V196.875zM121.875 300A9.375 9.375 0 0 1 121.875 281.25H131.25V261.1875A131.26875 131.26875 0 0 1 69.88125 27.3L58.59375 16.0125A9.375 9.375 0 0 1 71.85 2.7375L85.8375 16.725A130.6875 130.6875 0 0 1 150 0A130.6875 130.6875 0 0 1 214.1625 16.725L228.15 2.7375A9.375 9.375 0 0 1 241.4062500000001 16.0125L230.1375 27.3A131.26875 131.26875 0 0 1 168.75 261.1875V281.25H178.125A9.375 9.375 0 0 1 178.125 300H121.875zM141.3375 243.4125A114.24375 114.24375 0 0 0 158.6625 243.4125A112.5 112.5 0 1 0 141.3375 243.4125zM0 234.375C0 220.25625 6.24375 207.58125 16.125 198.99375A150.65625 150.65625 0 0 0 82.25625 265.125A46.875 46.875 0 0 1 0 234.375zM253.125 281.25C239.00625 281.25 226.33125 275.00625 217.74375 265.125A150.65625 150.65625 0 0 0 283.875 198.99375A46.875 46.875 0 0 1 253.125 281.25z")
{
IsAntiAlias = true,
StrokeStyle = "10,Solid",
},
Height = 30,
Width = 35,
},
}
}
},
new TabItemTemplate
{
Header="动画",//IsSelected=true,
Content=new Panel
{
Width="100%",
Height="100%",
Children=
{
new Button
{
Content="弹窗动画",
Width=100,
Height=25,
MarginLeft=20,
MarginTop=20,
Commands=
{
{
nameof(Button.Click),
(s,e)=> ShowDialogForm()
}
}
}
.AfterStyle(a=>
{
a.Background="#0f0";
}),
new Button
{
Content="缓动动画1",
Width=100,
Height=25,
MarginLeft=160,
MarginTop=20,
Commands=
{
{
nameof(Button.Click),
(s,e)=> Animation((Button)s,new QuadraticEase())
}
}
},
new Button
{
Content="缓动动画2",
Width=100,
Height=25,
MarginLeft=260,
MarginTop=20,
Commands=
{
{
nameof(Button.Click),
(s,e)=> Animation((Button)s,new CubicEase())
}
}
},
new Button
{
Content="缓动动画3",
Width=100,
Height=25,
MarginLeft=360,
MarginTop=20,
Commands=
{
{
nameof(Button.Click),
(s,e)=> Animation((Button)s,new ElasticEase())
}
}
},
new Button
{
Content="缓动动画4",
Width=100,
Height=25,
MarginLeft=460,
MarginTop=20,
Commands=
{
{
nameof(Button.Click),
(s,e)=> Animation((Button)s,new ExponentialEase())
}
}
},
new Button
{
Content="缓动动画5",
Width=100,
Height=25,
MarginLeft=560,
MarginTop=20,
Commands=
{
{
nameof(Button.Click),
(s,e)=> Animation((Button)s,new QuinticEase())
}
}
},
new Button
{
Content="缓动动画6",
Width=100,
Height=25,
MarginLeft=660,
MarginTop=20,
Commands=
{
{
nameof(Button.Click),
(s,e)=> Animation((Button)s,new SineEase())
}
}
},
new Button
{
Content=new Panel
{
Children=
{
new SVG("res://ConsoleApp1/test.svg")
{
MarginLeft = 0,
MarginTop = 0,
Height = 106,
Width=178,
Stretch= Stretch.Fill,
},
new Picture
{
Stretch = Stretch.Fill,
Source = "res://ConsoleApp1/Resources/te.gif",
Height = 60,
Width =80,
}
},
},
Width=104,
Height=55,
MarginLeft=60,
MarginTop=130,
Commands=
{
{
nameof(Button.Click),
(s,e)=> Animation((Button)s)
}
}
},
new Path("M 150,10 T 250,100 80,280")
{
//ClipToBounds = true,
Height = 98,
IsAntiAlias = true,
StrokeStyle = new Stroke(1,DashStyles.Custom,0,new float[]
{
10,
5,
2,
5
},CapStyles.Round,LineJoins.Round),//StrokeFill="url(res://ConsoleApp1/Resources/icon.png)",
},
new Slider
{
MarginLeft = 602,
MarginTop = 258,
Maximum = 100f,
Width = 179.1f,
Bindings=
{
{
nameof(Slider.Value),
nameof(TestValue),
this
}
}
},
new Picture
{
Stretch = Stretch.Fill,
Source = "res://ConsoleApp1/Resources/loading.gif",
Height = 103,
Width = 114,
MarginLeft = 24,
MarginTop = 299,
},
new Picture
{
Stretch = Stretch.Fill,
Source = "res://ConsoleApp1/Resources/te.gif",
Height = 110,
Width = 230,
MarginLeft = 557,
MarginTop = 310,
},
new Line
{
IsHitTestOnPath=true,
Commands =
{
{
nameof(Line.MouseDown),
nameof(lineMouseDown),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
},
},
new test
{
Width=793,
Height=81,
MarginLeft=16,
MarginBottom=42,
Valeft = 5,
Commands=
{
{
nameof(SVG.MouseUp),
(a,b)=> (a as test).Animation(a as test)
}
}
},
new StackPanel
{
Children =
{
new NativeElement
{
Height = 142,
Width = 159,
BackColor=Color.Blue,
}
},
MarginTop = 56,
Height = 172,
Width = 167,
},
new Path
{
IsAntiAlias = true,
Width = 205,
Height = 130,
MarginLeft = 461,
MarginTop = 78,
Fill = "#FFFF00",
Stretch = Stretch.Uniform,
Data="M224.94 813.36c-6.69 0-13.47-1.41-19.96-4.32-19.04-8.52-30.23-27.44-28.53-48.19 0.19-2.37 0.41-4.08 0.51-4.83 1.36-12.07 7.44-54.68 29.59-112.4 14.46-37.62 32.71-72.58 54.26-103.93 27.38-39.65 59.92-73.91 96.77-101.88 9.34-7.73 76.59-61.43 170.59-86.98v-59.34c0-22.02 12.57-41.09 32.82-49.77s42.72-4.63 58.67 10.56l199.82 190.34c15.82 15.07 24.53 35.4 24.53 57.24 0 21.85-8.71 42.17-24.53 57.24L619.65 747.48c-15.95 15.19-38.43 19.24-58.67 10.56-20.24-8.67-32.82-27.74-32.82-49.77v-47.71c-20.67 4.04-40.97 8.95-60.6 14.66-40.38 11.77-77.42 26.68-110.06 44.3-36.29 19.66-64.79 41.98-92.29 72.3-0.9 1.15-2.82 3.56-5.59 6.47-9.38 9.87-21.85 15.07-34.68 15.07z m39.93-21.15c-0.02 0.02-0.04 0.04-0.06 0.07 0.01-0.03 0.03-0.05 0.06-0.07z m-48.27-30.89s-0.15 1.09-0.29 2.81c-0.42 5.17 2.96 7.49 5.01 8.41 1.99 0.89 5.85 1.84 9.3-1.79 1.6-1.69 2.68-3.05 3.26-3.79 0.36-0.46 0.74-0.94 1.26-1.51 30.39-33.6 63.23-59.37 103.33-81.1 35.14-18.97 74.81-34.96 117.91-47.52 28.51-8.29 58.31-14.98 88.58-19.89 5.79-0.94 11.7 0.71 16.16 4.51 4.47 3.8 7.04 9.37 7.04 15.23v71.6c0 8.42 5.99 11.89 8.57 13 2.58 1.1 9.23 3.05 15.33-2.76l199.82-190.34c7.81-7.44 12.12-17.49 12.12-28.28 0-10.79-4.3-20.83-12.12-28.28L592.06 281.27c-6.09-5.81-12.75-3.86-15.33-2.76s-8.57 4.58-8.57 13v74.93c0 9.32-6.44 17.4-15.52 19.49-94.41 21.72-162.4 76.72-169.84 82.92-0.24 0.2-0.48 0.39-0.73 0.58-33.6 25.44-63.32 56.72-88.34 92.96-19.75 28.73-36.54 60.89-49.86 95.57-20.59 53.67-26.03 92.21-27.2 102.74-0.02 0.21-0.04 0.41-0.07 0.62z m0 0z"
},
}
}
},
new TabItemTemplate
{
Header="布局",
Content=new Panel
{
Name = "布局",
PresenterFor = this,
Width="100%",
Height="100%",
Children=
{
new StackPanel
{
MarginLeft=10,
MarginTop=10,
Orientation= Orientation.Vertical,
Children=
{
new Button
{
Content="StackPanel的Vertical"
},
new Button
{
Content="按钮"
},
new Button
{
Content="按钮"
},
new Button
{
Content="按钮"
},
}
},
new StackPanel
{
BorderStroke = "5,Solid",
BorderFill = "#B4B4B4",
MarginLeft=80,
MarginTop=50,
Orientation= Orientation.Horizontal,
Children=
{
new Button
{
Content="StackPanel的Horizontal"
},
new Button
{
Content="按钮"
},
new Button
{
Content="Margin调间距",
MarginLeft=5
},
new Button
{
Content="按钮"
},
}
},
new WrapPanel
{
MarginRight=10,
MarginTop=10,
Width="50%",
Orientation= Orientation.Horizontal,
Children=
{
new Button
{
Content="WrapPanel的Horizontal"
},
new Button
{
Content="按钮"
},
new Button
{
Content="Margin调间距",
MarginLeft=5
},
new Button
{
Content="按钮"
},
new Button
{
Content="宽度不够"
},
new Button
{
Content="可以自动换行"
},
}
},
new Grid
{
RenderTransform=new RotateTransform(10),
Name="testGrid",
Background="#999",
Width="80%",
Height="60%",
MarginTop=120,
MarginLeft=20,
ColumnDefinitions=
{
new ColumnDefinition
{
Width="40*"
},
new ColumnDefinition
{
Width = "30*"
},
new ColumnDefinition
{
Width="200",
[nameof(ColumnDefinition.Width)]=nameof(MainModel.ColumnWidth)
},
},
RowDefinitions=
{
new RowDefinition
{
Height="30*"
},
new RowDefinition
{
Height="30*"
},
new RowDefinition
{
Height="30*"
}
},
Children=
{
new WrapPanel
{
Name="test",
Background="#a2f",
Width="100%",
Height="100%",
Children=
{
new Button
{
Content="水平浮动布局231"
},
new Button
{
Content="按钮2"
},
new Button
{
Content="按钮3"
},
new Button
{
Content="按钮4"
},
new Button
{
Content="按钮5"
},
}
},
{
new WrapPanel
{
Orientation= Orientation.Vertical,
Background="#27a",
Width="100%",
Height="100%",
Children=
{
new Button
{
Content="垂直浮动布局"
},
new Button
{
Content="按钮2"
},
new Button
{
Content="按钮3"
},
new Button
{
Content="按钮4"
},
new Button
{
Content="按钮5"
},
}
},
1,
1
},
{
new TextBlock
{
Background="#ac2",
Width="100%",
Height="100%",
Text="Grid布局。。。"
},
2,
1
},
{
new Panel
{
Background="#b1a",
MarginLeft=0,
MarginRight=0,
Children=
{
new Button
{
Content="跨列",
Width="50%"
}
}
},
0,
2,
2
},
{
new TextBlock
{
Background="#186",
Height="100%",
Text="跨行"
},
2,
1,
1,
2
},
new TextBox
{
MarginLeft=10,
Size=SizeField.Fill,
Text="元素变换,可以旋转,倾斜,缩放等操作",
Attacheds=
{
{
Grid.ColumnIndex,
1
}
}
},
new Button
{
Content=new SVG("res://ConsoleApp1/test.svg")
{
MarginLeft = 0,
MarginTop = 0,
Height = 85,
Width=170,
Stretch= Stretch.Uniform,
},
Width=104,
Height=55,
MarginLeft=60,
MarginTop=120,
Commands=
{
{
nameof(Button.Click),
(s,e)=> Animation((Button)s)
}
}
}
},
},
new DockPanel
{
LastChildFill = false,
Width=200,
Height=200,
MarginRight=0,
MarginTop=50,
Background="#f00",
Children =
{
new Button
{
Content="Right",
Height="100%",
Attacheds =
{
{
DockPanel.Dock,
Dock.Right
}
}
},
}
},
new Slider
{
Maximum = 300,
Value = 200,
MarginLeft = 252,
MarginTop = 76,
Height = 23,
Width = 219,//[nameof(Slider.Value)]= new Obx<MainModel>(a => a.Type.Name),
[nameof(Slider.Value)]= new BindingDescribe(null, nameof(MainModel.ColumnWidth),BindingMode.OneWayToSource,null,a=>new GridLength((float)(double)a))
},
}
}
},
new TabItemTemplate
{
Header="ListBox",
Content=new Panel
{
Width="100%",
Height="100%",
Children=
{
new ListBox
{
SelectionMode = SelectionMode.Multiple,
AlternationCount = 2,
Width=300,
Height=500,
ItemTemplate=typeof(ListBoxItemTemplate),
Bindings=
{
{
nameof(ListBox.Items),
nameof(Items),
this
}
},
},
new Button
{
Commands =
{
{
nameof(Button.Click),
nameof(TestClear),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
},
Height = 25,
Width = 80,
MarginTop = 47,
MarginLeft = 536,
Content = "Button",
},
new DataGrid
{
PresenterFor = this,
Name = nameof(testGrid),
Height = 113,
Width = 132,
MarginTop = 72,
MarginLeft = 47,
},
new Button
{
Commands =
{
{
nameof(Button.Click),
nameof(addColumnClick),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
},
MarginTop = 218,
MarginLeft = 47,
Content = "添加列",
},
}
}
},
new TabItemTemplate
{
Header="DataGrid",
Content=new Panel
{
Width="100%",
Height="100%",
Children=
{
new DataGrid
{
ContextMenu=new ContextMenu
{
Items=
{
new MenuItem
{
Header="123"
}
}
},
PresenterFor = this,
Name = nameof(testDataGrid),//IsVirtualizing=false,
Width = 544,
Height = 344,//VirtualizationMode= VirtualizationMode.Standard,
Background = "#fff",//CustomScrollData=customScrollData,
ItemTemplate=typeof(DataGridRowTemplate),
AlternationCount=2,
SelectionUnit= DataGridSelectionUnit.Cell,//SelectionMode= DataGridSelectionMode.Single,
Columns =
{
new DataGridComboBoxColumn
{
Header="dfsd",
Binding=new DataGridBinding("p1",BindingMode.TwoWay),
Width="100",
Items=
{
"0",
"1",
"2",
"3"
},//Visibility= Visibility.Collapsed
},
column,
new DataGridTextColumn
{
Header="3dfsd",
Binding=new DataGridBinding("p3")
{
BindingMode= BindingMode.TwoWay
},
Width="100",
},
new DataGridTextColumn
{
Header="输入类型验证",
Binding=new DataGridBinding("p4")
{
BindingMode= BindingMode.TwoWay
},
Width="100",
},
new DataGridTextColumn
{
Header="3dfsd",
Binding=new DataGridBinding("p3")
{
BindingMode= BindingMode.TwoWay
},
Width="100",
},
new DataGridTextColumn
{
Header="输入类型验证",
Binding=new DataGridBinding("p4")
{
BindingMode= BindingMode.TwoWay
},
Width="100",
},
new DataGridTextColumn
{
Header="3dfsd",
Binding=new DataGridBinding("p3")
{
BindingMode= BindingMode.TwoWay
},
Width="100",
},
new DataGridTextColumn
{
Header="输入类型验证",
Binding=new DataGridBinding("p4")
{
BindingMode= BindingMode.TwoWay
},
Width="100",
},
new DataGridTextColumn
{
Header="3dfsd",
Binding=new DataGridBinding("p3")
{
BindingMode= BindingMode.TwoWay
},
Width="100",
},
new DataGridTextColumn
{
Header="输入类型验证",
Binding=new DataGridBinding("p4")
{
BindingMode= BindingMode.TwoWay
},
Width="100",
},
new DataGridTextColumn
{
Header="3dfsd",
Binding=new DataGridBinding("p3")
{
BindingMode= BindingMode.TwoWay
},
Width="100",
},
new DataGridTextColumn
{
Header="输入类型验证",
Binding=new DataGridBinding("p4")
{
BindingMode= BindingMode.TwoWay
},
Width="100",
},
new DataGridTextColumn
{
Header="3dfsd",
Binding=new DataGridBinding("p3")
{
BindingMode= BindingMode.TwoWay
},
Width="100",
},
new DataGridTextColumn
{
Header="输入类型验证",
Binding=new DataGridBinding("p4")
{
BindingMode= BindingMode.TwoWay
},
Width="100",
},
new DataGridTextColumn
{
Header="输入类型验证",
Binding=new DataGridBinding("p4")
{
BindingMode= BindingMode.TwoWay
},
Width="100",
},
new DataGridTextColumn
{
Header="3dfsd",
Binding=new DataGridBinding("p3")
{
BindingMode= BindingMode.TwoWay
},
Width="100",
},
new DataGridTextColumn
{
Header="输入类型验证",
Binding=new DataGridBinding("p4")
{
BindingMode= BindingMode.TwoWay
},
Width="100",
},
new DataGridTextColumn
{
Header="3dfsd",
Binding=new DataGridBinding("p3")
{
BindingMode= BindingMode.TwoWay
},
Width="100",
},
new DataGridTextColumn
{
Header="输入类型验证",
Binding=new DataGridBinding("p4")
{
BindingMode= BindingMode.TwoWay
},
Width="100",
}
//new DataGridTemplateColumn
//{
// Header="自定义模板",
// Binding=new DataGridBinding("p5"),
// Width="*",
// CellTemplate=typeof(CellTemplate)
//},
},
Bindings =
{
{
nameof(DataGrid.Items),
nameof(Data),
this
},//{
// nameof(DataGrid.Items),
// nameof(ItemCollection),
// this,
// BindingMode.OneWayToSource
//},//{ nameof(DataGrid.Columns), nameof(Columns),this }
}
},
new Button
{
Commands =
{
{
nameof(Button.Click),
nameof(AddTest),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
},
MarginLeft = 245,
MarginTop = 21,
Content = "添加",
},
new Button
{
Commands =
{
{
nameof(Button.Click),
nameof(ClearData),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
},
MarginLeft = 355,
MarginTop = 21,
Content = "清除",
},
new Button
{
Commands =
{
{
nameof(Button.Click),
nameof(addColumn),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
},
MarginLeft = 442,
MarginTop = 17,
Content = "addColumn",
},
}
}
},
new TabItemTemplate
{
Header="TreeView",
Content=new Panel
{
Width="100%",
Height="100%",
Children=
{
new TreeView
{
PresenterFor = this,
Name = nameof(testTreeVIew),
Bindings =
{
{
"SelectedValue",
nameof(SelectNode),
this,
BindingMode.OneWayToSource
},
{
"Items",
"Nodes",
this
},
},
Width=300,
Height=500,
DisplayMemberPath=nameof(NodeData.Text),
ItemsMemberPath=nameof(NodeData.Nodes),//HeaderTemplate=typeof(TreeViewItemContentTemplate),
//ItemTemplate=typeof(TreeViewItemTemplate),
//Items=new TreeViewItem[]{ new TreeViewItem { Header="24" } }
},
new Button
{
Commands =
{
{
"Click",
nameof(addItem),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
},
MarginLeft = 599,
MarginTop = 24,
Content = "添加子节点",
},
new Button
{
MarginLeft = 597,
MarginTop = 66,
Commands =
{
{
"Click",
nameof(RemoveItem),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
},
Content = "删除节点",
},
}
}
},
new TabItemTemplate
{
//[nameof(Name)]=nameof(Button.Content),
//[nameof(Name)]=(nameof(Button.Content),BindingMode.TwoWay),
//[nameof(MouseDown)]=new Action<CpfObject,object>((a,b)=>{ }),
Header="test",
Content= new Panel
{
Commands =
{
{
nameof(Button.TouchMove),
nameof(TouchDownTest),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
},
Size=SizeField.Fill,
Children =
{
new SVG("res://ConsoleApp1/test.svg")
{
Commands =
{
{
nameof(SVG.MouseUp),
nameof(svgMouseUP),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
},
MarginLeft = 442,
MarginTop = 50,
Height = 199,
Width=245,
Stretch= Stretch.Uniform,
}
//new Border
//{
// BorderFill="#f00",
// BorderStroke="1",
// Child=new Border
// {
// Size=SizeField.Fill,
// BorderFill="#0f0",
// BorderStroke="1",
// Child=new StackPanel
// {
// Children =
// {
// new TextBlock{Text="432sd"},
// new TextBlock{Text="gdfsa"},
// new TextBlock{Text="gsdsd"},
// new TextBlock{Text="gfdfs"},
// }
// }
// }
//}
,
new Viewbox
{
Stretch = Stretch.Uniform,
Child = new Button
{
Commands =
{
{
nameof(Button.MouseUp),
nameof(ShowPopup),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
},
Height = 79,
Width = 88,
Content = "弹窗测试",
},
MarginLeft = 16,
MarginTop = 84,
Height = 116,
Width = 190,
},
new WrapPanel
{
Height = 66,
Width = 78,
}
.LoopCreate(10,i=>new Button
{
Content=i
}),
new Border
{
Child = new Button
{
MarginTop = 17,
MarginLeft = 21,
Content = "Button",
},
Height = 69,
Width = 131,
MarginTop = 42,
MarginLeft = 275,
},
new Button
{
Height = 30,
Width = 95,
MarginTop = 152,
MarginLeft = 295,
Content = "Button",
},
new CheckBox
{
MarginTop = 26.2f,
MarginLeft = 101.8f,
Content = "CheckBox",
},
new Panel
{
MarginLeft = 30,
MarginTop = 281,
IsGroup = true,
Children =
{
new Button
{
Width = 26,
Height = "100%",
MarginRight = 0,
Content = new Polyline
{
Points =
{
{
0,
0
},
{
5,
5
},
{
10,
0
}
},
IsAntiAlias=true
},
ContextMenu=new ContextMenu
{
Items =
{
new MenuItem
{
StaysOpenOnClick=true,
Header="123"
},
new Separator
{
},
new MenuItem
{
Header="1233423",
Items =
{
new MenuItem
{
Header="45242"
}
}
},
}
},
Commands =
{
{
nameof(Button.MouseUp),
(s,e)=>
{
var E=e as MouseButtonEventArgs;
if (E.MouseButton== MouseButton.Left)
{
var cm = (s as UIElement).ContextMenu;
if (cm != null)
{
cm.DataContext = DataContext;
cm.CommandContext = CommandContext;
cm.PlacementTarget = s as UIElement;
cm.Placement= PlacementMode.Padding;
cm.PopupMarginLeft=0;
cm.PopupMarginTop="100%";
cm.IsOpen = true;
}
}
else
{
E.Handled=true;
}
}
}
}
},
new TextBlock
{
MarginLeft = 11,
Text = "带下拉菜单",
Commands =
{
{
nameof(MouseDown),
(s,e)=>
{
(s as UIElement).Parent.GetChildren()[0].ContextMenu.Items.Add(new MenuItem
{
Header="test"
});
}
}
}
},
},
Height = 31,
Width = 129,
}
}
}
},
new TabItemTemplate
{
Content = new Page1
{
Height = "100%",
Width = "100%",
},
Header = "TabItem",
},
new TestTabItem
{
Content = new Panel
{
Children =
{
new Grid
{
Children =
{
new TextBox
{
MarginLeft=10,
Size=SizeField.Fill,
Text="元素变换可以旋转倾斜缩放等操作1111111111111111111111111111111111111111111111111111111111111112",
Attacheds=
{
{
Grid.ColumnIndex,
1
}
}
}
},
Height = 228,
Width = "100%",
ColumnDefinitions =
{
new ColumnDefinition
{
Width=250
},
new ColumnDefinition
{
Width="*"
},
}
},
},
Height = "100%",
Width = "100%",
},
Header = new StackPanel
{
Orientation = Orientation.Horizontal,
Classes = "imgAndText",
IsGroup = true,
Children =
{
new SVG
{
Fill = "#959595",
Height = 28,
IsAntiAlias = true,
Width = 28,
Stretch = Stretch.Uniform,
Source="<svg t=\"1631519369186\" class=\"icon\" viewBox=\"0 0 1024 1024\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" p-id=\"3913\" width=\"16\" height=\"16\"><path d=\"M812.698413 212.746384c79.825044 79.825044 121.362963 180.238448 124.613757 300.517813-3.250794 119.918166-44.788713 219.97037-124.613757 300.156614-79.825044 80.186243-179.877249 121.724162-299.795414 124.252557-120.640564-2.528395-220.692769-44.066314-300.517813-124.252557-79.825044-80.186243-121.362963-180.238448-124.613757-300.156614 3.250794-120.640564 44.788713-220.692769 124.613757-300.517813 79.825044-79.825044 179.877249-121.362963 300.517813-124.613757C633.182363 91.383422 732.873369 132.92134 812.698413 212.746384zM786.692063 791.387654c72.962257-72.962257 110.888183-164.345679 114.138977-274.150265-3.250794-109.804586-41.17672-201.188007-114.138977-274.150265-72.601058-72.962257-163.98448-110.888183-273.789065-113.416578C402.737213 131.837743 311.353792 169.763668 238.391534 243.087125c-72.962257 72.962257-110.888183 164.345679-114.138977 274.150265 3.250794 109.804586 41.17672 201.188007 114.138977 274.150265 72.601058 72.962257 164.345679 110.888183 274.872663 113.416578C622.707584 902.275838 714.091005 864.349912 786.692063 791.387654z\" p-id=\"3914\"></path></svg>"
},
new TextBlock
{
MarginLeft = 5f,
Classes = "text",
Text = "文字",
},
},
},
Triggers =
{
new Trigger(nameof(TestTabItem.IsMouseOver), Relation.Me)
{
Setters =
{
{
nameof(TestTabItem.Foreground),
"#419EFF"
},
{
nameof(TestTabItem.Background),
"#ecf5ff"
}
}
},
new Trigger(nameof(TestTabItem.IsSelected), Relation.Me)
{
Setters =
{
{
nameof(TestTabItem.Foreground),
"white"
},
{
nameof(TestTabItem.Background),
"#3a8ee6"
}
}
}
}
},
new TabItemTemplate
{
Header = "生成pdf",
Content = new Panel
{
Size = new SizeField("100%","100%"),
},
},
new TabItemTemplate
{
Header = "TextBox",
Content = new Panel
{
Size = new SizeField("100%","100%"),
Children =
{
// new CodeTextBox
// {
// MarginTop = 0,
// MarginLeft = 0,
// Width="70%",
// Height=519,
// FontSize = 20,
// WordWarp = false,
// FontFamily = "新宋体",
// HScrollBarVisibility = ScrollBarVisibility.Visible,
// VScrollBarVisibility = ScrollBarVisibility.Visible,
// SelectionFill = "153,201,239",
// Text = @"new TabItemTemplate{
// Header = ""生成pdf"",
// Content = new Panel{
// Size = new SizeField(""100%"",""100%""),
// },
//",
// Background="255,255,255",
// Styles=
// {
// new DocumentStyle
// {
// Foreground = "#008000"
// },
// new DocumentStyle
// {
// Foreground = "128,0,0"
// },
// new DocumentStyle
// {
// Foreground = "DarkBlue"
// },
// new DocumentStyle
// {
// Foreground = "143,8,196"
// },
// new DocumentStyle
// {
// Foreground = "31,86,173"
// },
// new DocumentStyle
// {
// Foreground = "#8000FF"
// },
// new DocumentStyle
// {
// Foreground = "#c3c3fd"
// },
// },
// KeywordsStyles=
// {
// new KeywordsStyle
// {
// Keywords = @"(\/\/.*|\/\*[\s\S]*?\*\/)",// 匹配注释
// IsRegex =true,
// StyleId = 0
// },
// new KeywordsStyle
// {
// Keywords = @"(""(?:[^""\\]|\\[\s\S])*""|'(?:[^'\\]|\\[\s\S])*')",// 匹配字符串
// IsRegex=true,
// StyleId = 1
// },
// new KeywordsStyle
// {
// Keywords = @"\b(var|for|if|else|return|this|while|new|function|switch|case|typeof|do|in|throw|try|catch|finally|with|instance|delete|void|break|continue)\b",//匹配关键词,关键词顺序改了下
// IsRegex = true,
// StyleId = 2
// },/*new KeywordsStyle
// {
// Keywords = @"(?:[^\W\d]|\$)[\$\w]*",// 匹配普通的变量名
// IsRegex =true,
// StyleId = 4
// },*/
// //new KeywordsStyle
// //{
// // Keywords = @"(0[xX][0-9a-fA-F]+|\d+(?:\.\d+)?(?:[eE][+-]?\d+)?|\.\d+(?:[eE][+-]?\d+)?)",// 匹配数字,修复了匹配
// // IsRegex =true,
// // StyleId = -1
// //},
// //new KeywordsStyle
// //{
// // Keywords = @"(?:^|[^\)\]\}])(\/(?!\*)(?:\\.|[^\\\/\n])+?\/[gim]*)",//匹配正则
// // IsRegex =true,
// // StyleId = -1
// //},
// }
// },
new CodeTextBox
{
//FontSize=16,
AcceptsTab=true,
MarginBottom = 22,
MarginRight = 208,
Background = "#FFFFFF",
MarginLeft = 3,
MarginTop = -1,
IsUndoEnabled=true,//Text="231231\n3\n4\n5\n6\n7\n8\n4\n5\n6\n7\n8\n7\n8\n4\n5\n6\n7\n81dfssssssssssssssssssssssssa\n2\n3\n4\n5\n6\n7\n8\n9asddffsfsfs\n10\n11\n12",
Styles=
{
new CodeStyle
{
Foreground = "#008000",//Background="#00ff00",
},
new CodeStyle
{
Foreground = "128,0,0",//Background="#00ffff",
},
new CodeStyle
{
Foreground = "DarkBlue",//Background="#0f0fff",
},
new CodeStyle
{
Foreground = "143,8,196",// Background="#ff00ff",
},
new CodeStyle
{
Foreground = "31,86,173"
},
new CodeStyle
{
Foreground = "#8000FF"
},
new CodeStyle
{
Foreground = "#c3c3fd"
},
},
KeywordsStyles=
{
new KeywordsStyle
{
Keywords = @"\b(var|for|if|else|return|this|while|new|function|switch|case|typeof|do|in|throw|try|catch|finally|with|instance|delete|void|break|continue)\b",//匹配关键词,关键词顺序改了下
IsRegex = true,
StyleId = 2
},
new KeywordsStyle
{
Keywords = @"(\/\/.*|\/\*[\s\S]*?\*\/)",// 匹配注释
IsRegex =true,
StyleId = 0
},
new KeywordsStyle
{
Keywords = @"(""(?:[^""\\]|\\[\s\S])*""|'(?:[^'\\]|\\[\s\S])*')",// 匹配字符串
IsRegex=true,
StyleId = 1
},/*new KeywordsStyle
{
Keywords = @"(?:[^\W\d]|\$)[\$\w]*",// 匹配普通的变量名
IsRegex =true,
StyleId = 4
},*/
//new KeywordsStyle
//{
// Keywords = @"(0[xX][0-9a-fA-F]+|\d+(?:\.\d+)?(?:[eE][+-]?\d+)?|\.\d+(?:[eE][+-]?\d+)?)",// 匹配数字,修复了匹配
// IsRegex =true,
// StyleId = -1
//},
//new KeywordsStyle
//{
// Keywords = @"(?:^|[^\)\]\}])(\/(?!\*)(?:\\.|[^\\\/\n])+?\/[gim]*)",//匹配正则
// IsRegex =true,
// StyleId = -1
//},
}
},
new TextBox
{
MarginBottom = 22,
MarginTop = 0,
MarginRight = 0,
Width=207,
FontSize = 13,
SelectionFill = "153,201,239",
Text = @"
new TabItemTemplate{
Header = ""生成pdf"",
Content = new Panel{
Size = new SizeField(""100%"",""100%""),
},
}
",
Background="255,255,255",
Styles=
{
new DocumentStyle
{
Foreground = "#008000"
},
new DocumentStyle
{
Foreground = "128,0,0"
},
new DocumentStyle
{
Foreground = "DarkBlue"
},
new DocumentStyle
{
Foreground = "143,8,196"
},
new DocumentStyle
{
Foreground = "31,86,173"
},
new DocumentStyle
{
Foreground = "#8000FF"
},
new DocumentStyle
{
Foreground = "#c3c3fd"
},
},
KeywordsStyles=
{
new KeywordsStyle
{
Keywords = @"\b(var|for|if|else|return|this|while|new|function|switch|case|typeof|do|in|throw|try|catch|finally|with|instance|delete|void|break|continue)\b",//匹配关键词,关键词顺序改了下
IsRegex = true,
StyleId = 2
},
new KeywordsStyle
{
Keywords = @"(\/\/.*|\/\*[\s\S]*?\*\/)",// 匹配注释
IsRegex =true,
StyleId = 0
},
new KeywordsStyle
{
Keywords = @"(""(?:[^""\\]|\\[\s\S])*""|'(?:[^'\\]|\\[\s\S])*')",// 匹配字符串
IsRegex=true,
StyleId = 1
},//new KeywordsStyle
//{
// Keywords = @"(?:[^\W\d]|\$)[\$\w]*",// 匹配普通的变量名
// IsRegex =true,
// StyleId = 4
//},
//new KeywordsStyle
//{
// Keywords = @"(0[xX][0-9a-fA-F]+|\d+(?:\.\d+)?(?:[eE][+-]?\d+)?|\.\d+(?:[eE][+-]?\d+)?)",// 匹配数字,修复了匹配
// IsRegex =true,
// StyleId = -1
//},
//new KeywordsStyle
//{
// Keywords = @"(?:^|[^\)\]\}])(\/(?!\*)(?:\\.|[^\\\/\n])+?\/[gim]*)",//匹配正则
// IsRegex =true,
// StyleId = -1
//},
}
}
},
},
},
new TabItemTemplate
{
Header="多级绑定",
Content=new Panel
{
Name = "多级绑定",
PresenterFor = this,
Width="100%",
Height="100%",
Children=
{
new StackPanel
{
MarginLeft=10,
MarginTop=10,
Orientation= Orientation.Vertical,
Children=
{
new TextBlock
{
[nameof(TextBlock.Text)]= new Obx<MainModel>(a => a.Test1.test.test.test.test.Name,
BindingMode.OneWay),
Name = "hmbb"
},//new TextBox
//{
// Width = 130,
// Height= 60,
// Background =Color.Gray,
// [nameof(TextBox.Text)]= new Obx<MainModel>(a => a.Test1.test.test.test.test.Name,
// BindingMode.OneWayToSource),
//},
new Button
{
Content="创建对象",
[nameof(Button.Click)]=new CommandDescribe((s,e)=>
{
data a = new data();
a.test.test.test.Name = "666666";
(DataContext as MainModel).Test1.test = a;
})
},
new Button
{
Content="删除对象",
[nameof(Button.Click)]=new CommandDescribe((s,e)=>
{
(DataContext as MainModel).Test1.test.test = null;
})
},
new Button
{
Content="添加对象",
[nameof(Button.Click)]=new CommandDescribe((s,e)=>
{
data a = new data();
a.test.test.Name = "8888";
(DataContext as MainModel).Test1.test.test = a;
})
},
}
},
}
}
},
new TabItemTemplate
{
Header="布局",
Content=new Panel
{
Name = "布局",
PresenterFor = this,
Width="100%",
Height="100%",
Children=
{
new StackPanel
{
MarginLeft=10,
MarginTop=10,
Orientation= Orientation.Vertical,
Children=
{
new Button
{
Content="StackPanel的Vertical"
},
new Button
{
Content="按钮"
},
new Button
{
Content="按钮"
},
new Button
{
Content="按钮"
},
}
},
new StackPanel
{
BorderStroke = "5,Solid",
BorderFill = "#B4B4B4",
MarginLeft=80,
MarginTop=50,
Orientation= Orientation.Horizontal,
Children=
{
new Button
{
Content="StackPanel的Horizontal"
},
new Button
{
Content="按钮"
},
new Button
{
Content="Margin调间距",
MarginLeft=5
},
new Button
{
Content="按钮"
},
}
},
new WrapPanel
{
MarginRight=10,
MarginTop=10,
Width="50%",
Orientation= Orientation.Horizontal,
Children=
{
new Button
{
Content="WrapPanel的Horizontal"
},
new Button
{
Content="按钮"
},
new Button
{
Content="Margin调间距",
MarginLeft=5
},
new Button
{
Content="按钮"
},
new Button
{
Content="宽度不够"
},
new Button
{
Content="可以自动换行"
},
}
},
new Grid
{
RenderTransform=new RotateTransform(10),
Name="testGrid",
Background="#999",
Width="80%",
Height="60%",
MarginTop=120,
MarginLeft=20,
ColumnDefinitions=
{
new ColumnDefinition
{
Width="40*"
},
new ColumnDefinition
{
Width = "30*"
},
new ColumnDefinition
{
Width="200",
[nameof(ColumnDefinition.Width)]=nameof(MainModel.ColumnWidth)
},
},
RowDefinitions=
{
new RowDefinition
{
Height="30*"
},
new RowDefinition
{
Height="30*"
},
new RowDefinition
{
Height="30*"
}
},
Children=
{
new WrapPanel
{
Name="test",
Background="#a2f",
Width="100%",
Height="100%",
Children=
{
new Button
{
Content="水平浮动布局231"
},
new Button
{
Content="按钮2"
},
new Button
{
Content="按钮3"
},
new Button
{
Content="按钮4"
},
new Button
{
Content="按钮5"
},
}
},
{
new WrapPanel
{
Orientation= Orientation.Vertical,
Background="#27a",
Width="100%",
Height="100%",
Children=
{
new Button
{
Content="垂直浮动布局"
},
new Button
{
Content="按钮2"
},
new Button
{
Content="按钮3"
},
new Button
{
Content="按钮4"
},
new Button
{
Content="按钮5"
},
}
},
1,
1
},
{
new TextBlock
{
Background="#ac2",
Width="100%",
Height="100%",
Text="Grid布局。。。"
},
2,
1
},
{
new Panel
{
Background="#b1a",
MarginLeft=0,
MarginRight=0,
Children=
{
new Button
{
Content="跨列",
Width="50%"
}
}
},
0,
2,
2
},
{
new TextBlock
{
Background="#186",
Height="100%",
Text="跨行"
},
2,
1,
1,
2
},
new TextBox
{
MarginLeft=10,
Size=SizeField.Fill,
Text="元素变换,可以旋转,倾斜,缩放等操作",
Attacheds=
{
{
Grid.ColumnIndex,
1
}
}
},
new Button
{
Content=new SVG("res://ConsoleApp1/test.svg")
{
MarginLeft = 0,
MarginTop = 0,
Height = 85,
Width=170,
Stretch= Stretch.Uniform,
},
Width=104,
Height=55,
MarginLeft=60,
MarginTop=120,
Commands=
{
{
nameof(Button.Click),
(s,e)=> Animation((Button)s)
}
}
}
},
},
new DockPanel
{
LastChildFill = false,
Width=200,
Height=200,
MarginRight=0,
MarginTop=50,
Background="#f00",
Children =
{
new Button
{
Content="Right",
Height="100%",
Attacheds =
{
{
DockPanel.Dock,
Dock.Right
}
}
},
}
},
new Slider
{
Maximum = 300,
Value = 200,
MarginLeft = 252,
MarginTop = 76,
Height = 23,
Width = 219,
[nameof(Slider.Value)]=new BindingDescribe(null, nameof(MainModel.ColumnWidth),BindingMode.OneWayToSource,null,a=>new GridLength((float)(double)a))
},
}
}
},
new TabItemTemplate
{
Header="布局",
Content=new Panel
{
Name = "布局",
PresenterFor = this,
Width="100%",
Height="100%",
Children=
{
new StackPanel
{
MarginLeft=10,
MarginTop=10,
Orientation= Orientation.Vertical,
Children=
{
new Button
{
Content="StackPanel的Vertical"
},
new Button
{
Content="按钮"
},
new Button
{
Content="按钮"
},
new Button
{
Content="按钮"
},
}
},
new StackPanel
{
BorderStroke = "5,Solid",
BorderFill = "#B4B4B4",
MarginLeft=80,
MarginTop=50,
Orientation= Orientation.Horizontal,
Children=
{
new Button
{
Content="StackPanel的Horizontal"
},
new Button
{
Content="按钮"
},
new Button
{
Content="Margin调间距",
MarginLeft=5
},
new Button
{
Content="按钮"
},
}
},
new WrapPanel
{
MarginRight=10,
MarginTop=10,
Width="50%",
Orientation= Orientation.Horizontal,
Children=
{
new Button
{
Content="WrapPanel的Horizontal"
},
new Button
{
Content="按钮"
},
new Button
{
Content="Margin调间距",
MarginLeft=5
},
new Button
{
Content="按钮"
},
new Button
{
Content="宽度不够"
},
new Button
{
Content="可以自动换行"
},
}
},
new Grid
{
RenderTransform=new RotateTransform(10),
Name="testGrid",
Background="#999",
Width="80%",
Height="60%",
MarginTop=120,
MarginLeft=20,
ColumnDefinitions=
{
new ColumnDefinition
{
Width="40*"
},
new ColumnDefinition
{
Width = "30*"
},
new ColumnDefinition
{
Width="200",
[nameof(ColumnDefinition.Width)]=nameof(MainModel.ColumnWidth)
},
},
RowDefinitions=
{
new RowDefinition
{
Height="30*"
},
new RowDefinition
{
Height="30*"
},
new RowDefinition
{
Height="30*"
}
},
Children=
{
new WrapPanel
{
Name="test",
Background="#a2f",
Width="100%",
Height="100%",
Children=
{
new Button
{
Content="水平浮动布局231"
},
new Button
{
Content="按钮2"
},
new Button
{
Content="按钮3"
},
new Button
{
Content="按钮4"
},
new Button
{
Content="按钮5"
},
}
},
{
new WrapPanel
{
Orientation= Orientation.Vertical,
Background="#27a",
Width="100%",
Height="100%",
Children=
{
new Button
{
Content="垂直浮动布局"
},
new Button
{
Content="按钮2"
},
new Button
{
Content="按钮3"
},
new Button
{
Content="按钮4"
},
new Button
{
Content="按钮5"
},
}
},
1,
1
},
{
new TextBlock
{
Background="#ac2",
Width="100%",
Height="100%",
Text="Grid布局。。。"
},
2,
1
},
{
new Panel
{
Background="#b1a",
MarginLeft=0,
MarginRight=0,
Children=
{
new Button
{
Content="跨列",
Width="50%"
}
}
},
0,
2,
2
},
{
new TextBlock
{
Background="#186",
Height="100%",
Text="跨行"
},
2,
1,
1,
2
},
new TextBox
{
MarginLeft=10,
Size=SizeField.Fill,
Text="元素变换,可以旋转,倾斜,缩放等操作",
Attacheds=
{
{
Grid.ColumnIndex,
1
}
}
},
new Button
{
Content=new SVG("res://ConsoleApp1/test.svg")
{
MarginLeft = 0,
MarginTop = 0,
Height = 85,
Width=170,
Stretch= Stretch.Uniform,
},
Width=104,
Height=55,
MarginLeft=60,
MarginTop=120,
Commands=
{
{
nameof(Button.Click),
(s,e)=> Animation((Button)s)
}
}
}
},
},
new DockPanel
{
LastChildFill = false,
Width=200,
Height=200,
MarginRight=0,
MarginTop=50,
Background="#f00",
Children =
{
new Button
{
Content="Right",
Height="100%",
Attacheds =
{
{
DockPanel.Dock,
Dock.Right
}
}
},
}
},
new Slider
{
Maximum = 300,
Value = 200,
MarginLeft = 252,
MarginTop = 76,
Height = 23,
Width = 219,
[nameof(Slider.Value)]=new BindingDescribe(null, nameof(MainModel.ColumnWidth),BindingMode.OneWayToSource,null,a=>new GridLength((float)(double)a))
},
}
}
},
new TabItemTemplate
{
Header="布局",
Content=new Panel
{
Name = "布局",
PresenterFor = this,
Width="100%",
Height="100%",
Children=
{
new StackPanel
{
MarginLeft=10,
MarginTop=10,
Orientation= Orientation.Vertical,
Children=
{
new Button
{
Content="StackPanel的Vertical"
},
new Button
{
Content="按钮"
},
new Button
{
Content="按钮"
},
new Button
{
Content="按钮"
},
}
},
new StackPanel
{
BorderStroke = "5,Solid",
BorderFill = "#B4B4B4",
MarginLeft=80,
MarginTop=50,
Orientation= Orientation.Horizontal,
Children=
{
new Button
{
Content="StackPanel的Horizontal"
},
new Button
{
Content="按钮"
},
new Button
{
Content="Margin调间距",
MarginLeft=5
},
new Button
{
Content="按钮"
},
}
},
new WrapPanel
{
MarginRight=10,
MarginTop=10,
Width="50%",
Orientation= Orientation.Horizontal,
Children=
{
new Button
{
Content="WrapPanel的Horizontal"
},
new Button
{
Content="按钮"
},
new Button
{
Content="Margin调间距",
MarginLeft=5
},
new Button
{
Content="按钮"
},
new Button
{
Content="宽度不够"
},
new Button
{
Content="可以自动换行"
},
}
},
new Grid
{
RenderTransform=new RotateTransform(10),
Name="testGrid",
Background="#999",
Width="80%",
Height="60%",
MarginTop=120,
MarginLeft=20,
ColumnDefinitions=
{
new ColumnDefinition
{
Width="40*"
},
new ColumnDefinition
{
Width = "30*"
},
new ColumnDefinition
{
Width="200",
[nameof(ColumnDefinition.Width)]=nameof(MainModel.ColumnWidth)
},
},
RowDefinitions=
{
new RowDefinition
{
Height="30*"
},
new RowDefinition
{
Height="30*"
},
new RowDefinition
{
Height="30*"
}
},
Children=
{
new WrapPanel
{
Name="test",
Background="#a2f",
Width="100%",
Height="100%",
Children=
{
new Button
{
Content="水平浮动布局231"
},
new Button
{
Content="按钮2"
},
new Button
{
Content="按钮3"
},
new Button
{
Content="按钮4"
},
new Button
{
Content="按钮5"
},
}
},
{
new WrapPanel
{
Orientation= Orientation.Vertical,
Background="#27a",
Width="100%",
Height="100%",
Children=
{
new Button
{
Content="垂直浮动布局"
},
new Button
{
Content="按钮2"
},
new Button
{
Content="按钮3"
},
new Button
{
Content="按钮4"
},
new Button
{
Content="按钮5"
},
}
},
1,
1
},
{
new TextBlock
{
Background="#ac2",
Width="100%",
Height="100%",
Text="Grid布局。。。"
},
2,
1
},
{
new Panel
{
Background="#b1a",
MarginLeft=0,
MarginRight=0,
Children=
{
new Button
{
Content="跨列",
Width="50%"
}
}
},
0,
2,
2
},
{
new TextBlock
{
Background="#186",
Height="100%",
Text="跨行"
},
2,
1,
1,
2
},
new TextBox
{
MarginLeft=10,
Size=SizeField.Fill,
Text="元素变换,可以旋转,倾斜,缩放等操作",
Attacheds=
{
{
Grid.ColumnIndex,
1
}
}
},
new Button
{
Content=new SVG("res://ConsoleApp1/test.svg")
{
MarginLeft = 0,
MarginTop = 0,
Height = 85,
Width=170,
Stretch= Stretch.Uniform,
},
Width=104,
Height=55,
MarginLeft=60,
MarginTop=120,
Commands=
{
{
nameof(Button.Click),
(s,e)=> Animation((Button)s)
}
}
}
},
},
new DockPanel
{
LastChildFill = false,
Width=200,
Height=200,
MarginRight=0,
MarginTop=50,
Background="#f00",
Children =
{
new Button
{
Content="Right",
Height="100%",//Attacheds =
//{
// {
// DockPanel.Dock,
// Dock.Right
// }
//},
[DockPanel.Dock] = Dock.Right,
}
.Assign(out var testBtn),
}
},
new Slider
{
Maximum = 300,
Value = 200,
MarginLeft = 252,
MarginTop = 76,
Height = 23,
Width = 219,
[nameof(Slider.Value)]=new BindingDescribe(null, nameof(MainModel.ColumnWidth),BindingMode.OneWayToSource,null,a=>new GridLength((float)(double)a))
},
}
}
}
},//SelectedIndex=1
}
}
})
{
MaximizeBox = true,
ShadowBlur = 10,
#if !DesignMode
//Effect = effect
#endif
});
//#if !Net4 && !NETCOREAPP3_0
// Children.Add(new GLView
// {
// Height = "30%",
// Width = "30%",
// IsAntiAlias = true,
// });
//#endif
LoadStyleFile("res://ConsoleApp1/Stylesheet3.css");
//加载样式文件,文件需要设置为内嵌资源
Console.WriteLine(testBtn[DockPanel.Dock]);
if (!DesignMode)//设计模式下不执行
{
//var type = Grid.ColumnIndex.GetType();
//var f = typeof(Grid).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static);
//var attached = f[0].GetValue(null, null);
//var pt = typeof(CPF.OptionalParameter<>).MakeGenericType(f[0].PropertyType.GetGenericArguments());
//var v = (attached as Delegate).DynamicInvoke(this, Activator.CreateInstance(pt));
//var p = typeof(Grid).GetProperty("Grid.RowIndex", System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Static);
}
}
CPF.Controls.Switch _sw;
DataGrid testDataGrid;
DataGrid testGrid;
TreeView testTreeVIew;
Button btn;
Panel page1;
ComboBox combox;
ComboBox testCombobox;
Picture pic;
StackPanel stackPanel;
TextBox textBox;
public float TestValue
{
get { return GetValue<float>(); }
set { SetValue(value); }
}
//PathGeometry pathGeometry = "M159.375 196.875A9.375 9.375 0 0 1 140.625 196.875V133.8375L113.83125 89.2125A9.375 9.375 0 1 1 129.91875 79.55625L158.04375 126.43125A9.375 9.375 0 0 1 159.375 131.25V196.875zM121.875 300A9.375 9.375 0 0 1 121.875 281.25H131.25V261.1875A131.26875 131.26875 0 0 1 69.88125 27.3L58.59375 16.0125A9.375 9.375 0 0 1 71.85 2.7375L85.8375 16.725A130.6875 130.6875 0 0 1 150 0A130.6875 130.6875 0 0 1 214.1625 16.725L228.15 2.7375A9.375 9.375 0 0 1 241.4062500000001 16.0125L230.1375 27.3A131.26875 131.26875 0 0 1 168.75 261.1875V281.25H178.125A9.375 9.375 0 0 1 178.125 300H121.875zM141.3375 243.4125A114.24375 114.24375 0 0 0 158.6625 243.4125A112.5 112.5 0 1 0 141.3375 243.4125zM0 234.375C0 220.25625 6.24375 207.58125 16.125 198.99375A150.65625 150.65625 0 0 0 82.25625 265.125A46.875 46.875 0 0 1 0 234.375zM253.125 281.25C239.00625 281.25 226.33125 275.00625 217.74375 265.125A150.65625 150.65625 0 0 0 283.875 198.99375A46.875 46.875 0 0 1 253.125 281.25z";
//Stopwatch stopwatch = new Stopwatch();
//int frameCount;
protected override void OnRender(DrawingContext dc)
{
base.OnRender(dc);
//frameCount++;
//if (stopwatch.ElapsedMilliseconds >= 500)
//{
// Debug.WriteLine(frameCount * 1000 / stopwatch.ElapsedMilliseconds);
// stopwatch.Restart();
// frameCount = 0;
//}
//else if (!stopwatch.IsRunning)
//{
// stopwatch.Start();
//}
//dc.DrawPath("#f00", new Stroke(1), pathGeometry);
}
protected override void OnElementInitialize(UIElement element)
{
if (element is Button button)
{
button.SetTemplate((s, c) =>
{
c.Add(new StackPanel
{
Orientation = Orientation.Horizontal,
Children =
{
new Ellipse { Width = 15, Height = 15,IsAntiAlias=true,Fill="#f00" },
new Border
{
Name = "contentPresenter",
Height = "100%",
BorderFill = null,
PresenterFor = s,
},
}
});
});
}
if (element.Tag == null)
{
element.Tag = 1;
}
else
{
element.Tag = 1 + (int)element.Tag;
}
base.OnElementInitialize(element);
}
[PropertyMetadata(-1)]
public int SelectIndex
{
get { return GetValue<int>(); }
set { SetValue(value); }
}
public Collection<TestClass> List1
{
get { return GetValue<Collection<TestClass>>(); }
set { SetValue(value); }
}
public Collection<TestClass> List2
{
get { return GetValue<Collection<TestClass>>(); }
set { SetValue(value); }
}
void test()
{
//var panel = this.FindPresenter<StackPanel>().First(a => a.Name == "testPanel");
//Stopwatch stopwatch = new Stopwatch();
//stopwatch.Start();
//panel.Children.DisposeChildren();
//Debug.WriteLine("清除:" + stopwatch.ElapsedMilliseconds);
//System.Threading.Thread.Sleep(1000);
//stopwatch.Restart();
//for (int i = 0; i < 1000; i++)
//{
// panel.Children.Add(new Button { Content = "test测试", Width = 100, Height = 50 });
//}
//stopwatch.Stop();
//Debug.WriteLine("添加:" + stopwatch.ElapsedMilliseconds);
}
protected async override void OnInitialized()
{
//testTreeVIew.Items = Nodes;
//(DataContext as MainModel).TestItems1 = new Collection<string>();
//for (int i = 0; i < 10; i++)
//{
// (DataContext as MainModel).TestItems1.Add(i.ToString());
//}
_sw = FindPresenterByName<CPF.Controls.Switch>(nameof(_sw));
_sw.IsChecked = true;
base.OnInitialized();
Items = new Collection<ItemData>();
for (int i = 0; i < 100; i++)
{
Items.Add(new ItemData { Name = "马大云" + i, Introduce = "哈哈---" + i });
}
//Columns.Add(new DataGridTextColumn { Header = "任务名称", Width = "60*", CanUserSort = false });
//Columns.Add(new DataGridTextColumn { Header = "", Width = "20*", CanUserSort = false });
CPF.Styling.ResourceManager.GetImage("res://ConsoleApp1/Resources/主页.png", a =>
{
var data = new DataTable();
for (int i = 0; i < 9; i++)
{
data.Columns.Add("p" + (i + 1).ToString());
}
data.Columns[1].DataType = typeof(bool);
data.Columns[3].DataType = typeof(int);
data.Columns[5].DataType = typeof(Image);
data.Columns[7].DataType = typeof(Button);
for (int i = 0; i < 180; i++)
{
var row = data.NewRow();
for (int j = 0; j < 9; j++)
{
if (j != 1)
{
if (j == 5)
{
row[j] = a;
}
else if (j == 7)
{
row[7] = new Button { Content = "test" + i, Width = "100%" };
}
else
{
row[j] = i;
}
}
}
row[0] = i % 3;
row[1] = true;
data.Rows.Add(row);
}
Data = data.ToItems();
});
Icon = await CPF.Styling.ResourceManager.GetImage("res://ConsoleApp1/Resources/icon.png");
textBox = FindPresenterByName<TextBox>(nameof(textBox));
stackPanel = FindPresenterByName<StackPanel>(nameof(stackPanel));
//for (int i = 0; i < 50000; i++)
//{
// stackPanel.Children.Add(new Button { Content="test"});
//}
pic = FindPresenterByName<Picture>(nameof(pic));
btn = FindPresenterByName<Button>(nameof(btn));
//textBox.Background = new VisualFill(btn);
#if !Net4
//var m = Observable.FromEventPattern<MouseButtonEventArgs>(this, nameof(MouseDown));
//var m = this.Observe<Window, MouseButtonEventArgs>(nameof(MouseDown));
//m.Subscribe(args =>
//{
// Debug.WriteLine(args.EventArgs.MouseButton);
//});
#endif
//var newValueParameter = Expression.Parameter(typeof(string), "value");
////var instanceParameter = Expression.Parameter(Type, "instance");
//var method = Type.GetMethod(nameof(TestSetValue), BindingFlags.Instance | BindingFlags.NonPublic);
//var methodCall = Expression.Call(Expression.Constant(this), method, newValueParameter, Expression.Constant((byte)1));
//var lambda = Expression.Lambda<Action<string>>(methodCall, newValueParameter);
//var tpSet = Type.GetProperty(nameof(TestProperty)).GetSetMethod();
////var tpSet = Type.GetMethod(nameof(TestSet1), BindingFlags.Static | BindingFlags.NonPublic);
////var set = Type.GetMethod(nameof(TestSet), BindingFlags.Instance | BindingFlags.NonPublic);
//var action = lambda.Compile();
//var set = action.Method;
////var h = GetDynamicMethodRuntimeHandle(set);
//var setValue = Type.GetMethod(nameof(TestSetValue), BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public, null, new Type[] { typeof(object), typeof(byte).Assembly.GetType("System.Byte&") }, null);
////因为你是作为Instance 方法,那么对于DynamicMethod 第一个参数就应该是This
//DynamicMethod mt = new DynamicMethod(string.Empty, typeof(void), new Type[] { typeof(object), typeof(string) });
//var il = mt.GetILGenerator();
//LocalBuilder loc = il.DeclareLocal(typeof(byte), true);
//il.Emit(OpCodes.Ldc_I4, 83);
//il.Emit(OpCodes.Conv_Ovf_U1);
//il.Emit(OpCodes.Stloc, loc.LocalIndex);
////SetValue(Value, PropertyIndex);
////Stack
////CpfObject This
////Value
////Index ref
//il.Emit(OpCodes.Ldarg_0);
//il.Emit(OpCodes.Ldarg_1);
//il.Emit(OpCodes.Ldloca, loc.LocalIndex);
//il.Emit(OpCodes.Callvirt, setValue);
//if (setValue.ReturnType != typeof(void))
// il.Emit(OpCodes.Pop);
//il.Emit(OpCodes.Ret);
//var ha = mt.CreateDelegate(typeof(Action<string>), this);
////((Action<string>)ha)("231");
////var m_scope = il.GetType().GetField("m_scope", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(il);
////var m_tokens = m_scope.GetType().GetField("m_tokens", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(m_scope);
////RuntimeMethodHandle handle = (RuntimeMethodHandle)(m_tokens as IList)[2];
//var h = GetDynamicMethodRuntimeHandle(mt);
//RedirectTo(tpSet, h);
//TestProperty = "test";
//TestSet1("test");
testCombobox = FindPresenterByName<ComboBox>(nameof(testCombobox));
//for (int i = 0; i < 300; i++)
//{
// testCombobox.Items.Add((i.ToString(), i));
//}
combox = FindPresenterByName<ComboBox>(nameof(combox));
page1 = FindPresenterByName<Panel>(nameof(page1));
//for (int i = 0; i < 10; i++)
//{
// combox.Items.Add(i.ToString());
//}
#if !Net4
if (!DesignMode)
{
effect.TransitionValue(nameof(ThreeDEffect2.Y), 0f, TimeSpan.FromSeconds(0.6), null, AnimateMode.Linear, () =>
{
Find<WindowFrame>().First().Effect = null;
});
}
#endif
testTreeVIew = FindPresenterByName<TreeView>(nameof(testTreeVIew));
//WindowState = WindowState.Maximized;
testGrid = FindPresenterByName<DataGrid>(nameof(testGrid));
testDataGrid = FindPresenterByName<DataGrid>(nameof(testDataGrid));
textBox.Document.Children[2].StyleId = 0;
#if !DesignMode && !Net4
//PdfDocument doc = PdfReader.Open(System.IO.Path.Combine(CPF.Platform.Application.StartupPath, "test.pdf"), PdfDocumentOpenMode.ReadOnly);
//foreach (var page in doc.Pages)
//{
// foreach (var item in Find(page))
// {
// Debug.WriteLine(item.Value.GetType());
// if (item.Value is PdfSharpCore.Pdf.Advanced.PdfReference reff)
// {
// }
// else if (item.Value is PdfSharpCore.Pdf.PdfDictionary dic)
// {
// }
// }
//}
#endif
}
//private void ExistValue(string strName, string strFieldValue)
//{
// Dictionary<string, object> dic = new Dictionary<string, object>();
// if (dic.ContainsKey(strName))
// dic[strName] = strFieldValue;
//}
async void PDF(CpfObject obj, RoutedEventArgs eventArgs)
{
#if !DesignMode && !Net4
Debug.WriteLine((obj as Button).PointToView(new Point()).ToString());
//var file = await new BrowseFileWindow { Title="文件选择" }.ShowDialog();
//if (file is string str)
//{
// Console.WriteLine(str);
//}
//else
//{
// Console.WriteLine("未选中");
//}
//System.Diagnostics.Process p = new System.Diagnostics.Process();
//p.StartInfo.FileName = "cmd.exe";
//p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动
//p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息
//p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息
//p.StartInfo.RedirectStandardError = true;//重定向标准错误输出
////p.StartInfo.CreateNoWindow = true;//不显示程序窗口
//p.Start();//启动程序
////向cmd窗口发送输入信息
//p.StandardInput.WriteLine("dotnet \"D:\\xhm\\Documents\\Visual Studio 2019\\ConsoleApp1\\ConsoleApp1\\bin\\Debug\\netcoreapp3.0\\ConsoleApp1.dll\"");
//p.StandardInput.AutoFlush = true;
//Process.Start(new ProcessStartInfo
//{
// UseShellExecute = true,
// FileName = "D:/xhm/Documents/Visual Studio 2019/ConsoleApp1/ConsoleApp1/bin/Debug/netcoreapp3.0/test.pdf"
//});
//using (var dialog = new OpenFileDialog { Title = "打开PDF", Filters = { new FileDialogFilter { Extensions = "pdf", Name = "PDF" } } })
//{
// var file = await dialog.ShowAsync(this);
// if (file != null && file.Length > 0)
// {
// using (PdfDocument document = PdfDocument.Open(file[0]))
// {
// //foreach (var page in document.GetPages())
// var page = document.GetPage(1);
// {
// using (var bmp = new Bitmap((int)page.Width, (int)page.Height))
// {
// using (var dc = DrawingContext.FromBitmap(bmp))
// {
// dc.Clear(Color.White);
// dc.AntialiasMode = AntialiasMode.AntiAlias;
// using (var sb = new SolidColorBrush("#000"))
// {
// //string pageText = page.Text;
// foreach (var item in page.Letters)
// {
// dc.DrawString(new Point((float)item.Location.X, (float)page.Height - (float)item.Location.Y), sb, item.Value, new Font(item.FontName, (float)item.PointSize));
// }
// }
// }
// using (var stream = System.IO.File.OpenWrite(System.IO.Path.Combine(CPF.Platform.Application.StartupPath, "test.png")))
// {
// bmp.SaveToStream(ImageFormat.Png, stream);
// }
// //Debug.WriteLine(pageText);
// //foreach (var word in page.GetWords())
// //{
// // Console.WriteLine(word.Text);
// //}
// }
// }
// }
// }
//}
// using (var connection = new Microsoft.Data.Sqlite.SqliteConnection($"Data Source={System.IO.Path.Combine(CPF.Platform.Application.StartupPath, "hello.db")}"))
// {
// connection.Open();
// //var dataAdapter = new SqliteDataAdapter("",connection);
//// var command = connection.CreateCommand();
//// command.CommandText =
//// @"
//// SELECT name
//// FROM user
//// WHERE id = $id
////";
//// command.Parameters.AddWithValue("$id", id);
//// using (var reader = command.ExecuteReader())
//// {
//// while (reader.Read())
//// {
//// var name = reader.GetString(0);
//// Console.WriteLine($"Hello, {name}!");
//// }
//// }
// }
#endif
}
bool TestSetValue(object value, in byte index)
{
MessageBox.Show(index + value.ToString());
return true;
}
void TestSet(string text)
{
MessageBox.Show(text);
//throw new Exception(text);
//Debug.WriteLine(text);
}
static void TestSet1(string text)
{
Debug.WriteLine(text + "|test");
}
public string TestProperty
{
get { return GetValue<string>(); }
set { SetValue(value); }
}
//public string TestProperty1
//{
// get { return (string)GetValue(1); }
// set { SetValue(value, 1); }
//}
private static IntPtr GetDynamicMethodRuntimeHandle(MethodBase method)
{
if (!(method is DynamicMethod))
return method.MethodHandle.Value;
var fieldInfo = typeof(DynamicMethod).GetField("m_methodHandle", BindingFlags.NonPublic | BindingFlags.Instance);
if (fieldInfo != null)
{
var m_methodHandle = fieldInfo.GetValue(method);
if (m_methodHandle != null)
{
var value = m_methodHandle.GetType().GetField("m_value", BindingFlags.Public | BindingFlags.Instance).GetValue(m_methodHandle);
return (IntPtr)value.GetType().GetField("m_handle", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(value);
}
}
return method.MethodHandle.Value;
}
public static void RedirectTo(MethodInfo origin, IntPtr newMethod)
{
IntPtr ori = GetMethodAddress(origin);
//IntPtr tar = GetMethodAddress(newMethod);
Marshal.Copy(new IntPtr[] { Marshal.ReadIntPtr(newMethod) }, 0, ori, 1);
}
private static IntPtr GetMethodAddress(MethodInfo mi)
{
const ushort SLOT_NUMBER_MASK = 0xfff; // 3 bytes
const int MT_OFFSET_32BIT = 0x28; // 40 bytes
const int MT_OFFSET_64BIT = 0x40; // 64 bytes
IntPtr address;
// JIT compilation of the method
RuntimeHelpers.PrepareMethod(mi.MethodHandle);
IntPtr md = mi.MethodHandle.Value; // MethodDescriptor address
IntPtr mt = mi.DeclaringType.TypeHandle.Value; // MethodTable address
if (mi.IsVirtual)
{
// The fixed-size portion of the MethodTable structure depends on the process type
int offset = IntPtr.Size == 4 ? MT_OFFSET_32BIT : MT_OFFSET_64BIT;
// First method slot = MethodTable address + fixed-size offset
// This is the address of the first method of any type (i.e. ToString)
IntPtr ms = Marshal.ReadIntPtr(mt + offset);
// Get the slot number of the virtual method entry from the MethodDesc data structure
// Remark: the slot number is represented on 3 bytes
long shift = Marshal.ReadInt64(md) >> 32;
int slot = (int)(shift & SLOT_NUMBER_MASK);
// Get the virtual method address relative to the first method slot
address = ms + (slot * IntPtr.Size);
}
else
{
// Bypass default MethodDescriptor padding (8 bytes)
// Reach the CodeOrIL field which contains the address of the JIT-compiled code
address = md + 8;
}
//var data = mi.GetMethodBody().GetILAsByteArray();
//var data1 = new byte[data.Length];
//Marshal.Copy(Marshal.ReadIntPtr(address), data1, 0, data1.Length);
return address;
}
Control mask;
Storyboard storyboard;
void ShowDialogForm()
{
if (mask == null)
{
mask = new Control { Width = "100%", Height = "100%", Background = "0,0,0,0", Commands = { { nameof(Control.MouseDown), (s, e) => DragMove() } } };
//淡入效果
storyboard = new Storyboard
{
Timelines =
{
new Timeline(1)
{
KeyFrames =
{
new KeyFrame<SolidColorFill>{ Property=nameof(Control.Background), Value="0,0,0,100" }
}
}
}
};
}
this.Children.Add(mask);
storyboard.Start(mask, TimeSpan.FromSeconds(0.3), 1, EndBehavior.Reservations);
#if !DesignMode
var dv = new DialogView(this);
dv.MarginTop = -100;
dv.TransitionValue(nameof(MarginTop), (FloatField)100, TimeSpan.FromSeconds(0.3), new PowerEase { }, AnimateMode.EaseOut);
Children.Add(dv);
#endif
}
public void CloseDialogForm(DialogView dialogView)
{
//采用过渡属性的写法定义淡出效果
mask.TransitionValue(nameof(Control.Background), (SolidColorFill)"0,0,0,0", TimeSpan.FromSeconds(0.3), null, AnimateMode.Linear, () =>
{
this.Children.Remove(mask);
});
dialogView.TransitionValue(nameof(MarginTop), (FloatField)(-100), TimeSpan.FromSeconds(0.3), new PowerEase { }, AnimateMode.EaseIn, () =>
{
this.Children.Remove(dialogView);
});
}
void Animation(Button button, IEase ease)
{
var old = button.MarginTop;
button.TransitionValue(nameof(MarginTop), (FloatField)(button.MarginTop.Value + 150), TimeSpan.FromSeconds(0.8), ease, AnimateMode.EaseIn, () =>
{
button.MarginTop = old;
});
}
/// <summary>
/// 微秒级延迟,会稍有偏差
/// </summary>
/// <param name="time">延迟时间1/毫秒0.0500/500微秒</param>
/// <returns></returns>
public static double delayUs(double time)
{
System.Diagnostics.Stopwatch stopTime = new System.Diagnostics.Stopwatch();
stopTime.Start();
while (stopTime.Elapsed.TotalMilliseconds < time) { }
stopTime.Stop();
return stopTime.Elapsed.TotalMilliseconds;
}
[DllImport("kernel32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetWaitableTimer(Microsoft.Win32.SafeHandles.SafeWaitHandle hTimer,
[In] ref long pDueTime, int lPeriod, int pfnCompletionRoutine, int lpArgToCompletionRoutine, int fResume);
[DllImport("kernel32.dll")]
public static extern Microsoft.Win32.SafeHandles.SafeWaitHandle CreateWaitableTimerW(int lpTimerAttributes, int bManualReset, int lpTimerName);
static void Ex_Sleep(int us)
{
long duetime;
duetime = -10 * us;
Microsoft.Win32.SafeHandles.SafeWaitHandle hTimer = CreateWaitableTimerW(0, 0, 0);
if (SetWaitableTimer(hTimer, ref duetime, 0, 0, 0, 0))
{
using (EventWaitHandle wh = new EventWaitHandle(false, EventResetMode.AutoReset))
{
wh.SafeWaitHandle = hTimer;
wh.WaitOne();
}
};
//while (MsgWaitForMultipleObjects(1, &hTimer, 0, -1, 255) != 0)
//{
// MSG msg;
// while (PeekMessageW(&msg, 0, 0, 0, 1))
// {
// TranslateMessage(&msg);
// DispatchMessageW(&msg);
// }
//}
//CloseHandle(hTimer);
}
public static int GetTickCount64()
{
return System.Environment.TickCount;
}
public class Animation_easing
{
/// <summary>
/// 创建缓动动画
/// </summary>
/// <param name="uIElement">控件</param>
/// <param name="nTotalTime">总用时</param>
/// <param name="nInterval">间隔</param>
/// <param name="nStart">开始值</param>
/// <param name="nStop">结束值</param>
public Animation_easing(UIElement uIElement,
int nTotalTime, int nInterval, int nStart, int nStop)
{
var timeThread = new Thread(() =>
{
var Easing = Animator.Tween.Easing_create(Animator.Tween.AnimateMode.Bounce);
var index = 1f;
double nFrameStep = nInterval / nTotalTime;
var nFrameCount = nTotalTime / nInterval;
while (true)
{
var nProcessTime = GetTickCount64();
var i = 1;
List<float> list = new List<float>();
//b初始值
//c终止值
//d 任意应该是用时
//t时间
int b = 60, c = 700, d = 60; float t = 1f;
while (i <= nFrameCount)
{
Ex_Sleep((nInterval - (GetTickCount64() - nProcessTime)) * 1000);
var v = Easing[0](t, b, c, d);
list.Add((float)v);
uIElement.Invoke(() =>
{
/*uIElement.RenderTransform = new GeneralTransform
{
OffsetX = (float)v,
};*/
uIElement.MarginLeft = v;
if (t < d)
{
t += 0.5f;
}
//if (uIElement.MarginLeft.Value >= 700)
//{
// index = -3f;
//}
//if (uIElement.MarginLeft.Value <= 60f)
//{
// index = 3f;
//}
//uIElement.MarginLeft = v;
});
i++;
nProcessTime = GetTickCount64();
}
//break;
//Debug.WriteLine(list);
}
})
{ IsBackground = true, Name = "测试" };
timeThread.Start();
}
};
Storyboard storyboard1;
void Animation(UIElement button)
{
new Animation_easing(button, 1000, 5, 60, 700);
//Task.Factory.StartNew(()=> {
// var text = ResourceManager.GetText("res://ConsoleApp1/Points.json");
// text.Wait();
// var json = CPF.Json.JsonSerializer.ToObject<List<Point>>(text.Result);
// foreach (var item in json)
// {
// Invoke(() => {
// //操作代码
// button.MarginLeft = item.X;
// button.MarginTop = item.Y;
// });
// }
//});
//Task.Factory.StartNew(() => {
// List<Point> points = new List<Point>();
// 轨迹模拟.BezierTool bezier = new 轨迹模拟.BezierTool();
// var size = new Size(826, 548);
// int width1 = (int)size.Width;
// int height1 = (int)size.Height;
// Random rd = new Random();
// Point head = new Point();
// for (int i = 0; i < 20; i++)
// {
// List<Point> MyBezierpoints = new List<Point>();
// if (head.IsEmpty)
// {
// MyBezierpoints.Add(new Point(0, 0));
// MyBezierpoints.Add(new Point(rd.Next(1, width1), rd.Next(1, height1)));
// MyBezierpoints.Add(new Point(rd.Next(1, width1), rd.Next(1, height1)));
// head.X = MyBezierpoints[2].X;
// head.Y = MyBezierpoints[2].Y;
// }
// else
// {
// MyBezierpoints.Add(head);
// MyBezierpoints.Add(new Point(rd.Next(1, width1), rd.Next(1, height1)));
// MyBezierpoints.Add(new Point(rd.Next(1, width1), rd.Next(1, height1)));
// head.X = MyBezierpoints[2].X;
// head.Y = MyBezierpoints[2].Y;
// }
// bezier.DrawMyBezier(MyBezierpoints.ToArray(), button,ref points);
// //bezier.Delay(rd.Next(1, 2) * 1000);
// }
// List<Point> MyBezierpoints1 = new List<Point>();
// MyBezierpoints1.Add(head);
// MyBezierpoints1.Add(new Point(rd.Next(1, width1), rd.Next(1, height1)));
// MyBezierpoints1.Add(new Point(713, 12));
// bezier.DrawMyBezier(MyBezierpoints1.ToArray(), button, ref points);
// var json = JsonSerializer.Serialize<List<Point>>(points);
//});
}
void Animation(Button button)
{
//button.RenderTransform = new GeneralTransform();
//var timeThread = new Thread(()=> {
// float i = 1;
// while (true)
// {
// Thread.Sleep(2);
// Invoke(() => {
// if (button.MarginLeft == 700)
// {
// i = -1f;
// }
// if (button.MarginLeft == 60)
// {
// i = 1f;
// }
// button.MarginLeft += i;
// });
// }
//
//}) { IsBackground = true, Name = "测试" };
//timeThread.Start();
if (storyboard1 == null)
{
storyboard1 = new Storyboard
{
Timelines =
{
new Timeline(0.5f)
{
KeyFrames =
{
new KeyFrame<FloatField>{ Property=nameof(button.MarginLeft), Value=700, AnimateMode= AnimateMode.EaseIn, Ease=new PowerEase() },
//new KeyFrame<GeneralTransform>{ Property=nameof(button.RenderTransform),Value=new GeneralTransform{ OffsetX=700 }, AnimateMode= AnimateMode.EaseIn, Ease=new PowerEase() },
}
},
new Timeline(1)
{
KeyFrames =
{
new KeyFrame<FloatField>{ Property=nameof(button.MarginLeft), Value=60, AnimateMode= AnimateMode.EaseInOut, Ease=new QuadraticEase() },
//new KeyFrame<GeneralTransform>{ Property=nameof(button.RenderTransform),Value=new GeneralTransform{ OffsetX=60 }, AnimateMode= AnimateMode.EaseIn, Ease=new QuadraticEase() },
}
},
//new Timeline(1)
//{
// KeyFrames =
// {
// new KeyFrame<GeneralTransform>{ Property=nameof(button.RenderTransform),Value=new GeneralTransform{ Angle=130,SkewX=0,ScaleY=3 }, AnimateMode= AnimateMode.EaseIn, Ease=new ElasticEase() },
// }
//},
}
};
}
storyboard1.Start(button, TimeSpan.FromSeconds(2), 0);
}
Collection<ItemData> Items
{
get { return GetValue<Collection<ItemData>>(); }
set { SetValue(value); }
}
IList Data
{
get { return GetValue<IList>(); }
set { SetValue(value); }
}
ItemCollection ItemCollection
{
get { return GetValue<ItemCollection>(); }
set { SetValue(value); }
}
public Collection<DataGridColumn> Columns
{
get { return GetValue<Collection<DataGridColumn>>(); }
set { SetValue(value); }
}
//[PropertyChanged(nameof(IsKeyboardFocusWithin))]
//void OnIsKeyboardFocusWithin(object newValue,object oldValue,PropertyMetadataAttribute attribute)
//{
//}
//public B<string> Text
//{
// get { return GetValue<string>(); }
// set { SetValue(value); }
//}
//void TestBinding()
//{
// Text = (nameof(Model.SelectValue), BindingMode.OneWay);
// string text = Text;
//}
static void WritePrivateProfileString(string section, string key,
string val, string filePath)
{
IList<string> text;
if (System.IO.File.Exists(filePath))
{
text = System.IO.File.ReadAllLines(filePath);
int hasSection = -1;
var hasKey = false;
for (int i = 0; i < text.Count; i++)
{
var line = text[i];
if (hasSection < 0 && line.StartsWith("[" + section + "]"))
{
hasSection = i;
}
else if (hasSection >= 0 && line.StartsWith(key + "="))
{
text[i] = key + "=" + val;
hasKey = true;
break;
}
}
if (hasSection < 0)
{
text = new List<string>(text);
text.Add("[" + section + "]");
text.Add(key + "=" + val);
}
else if (!hasKey)
{
text = new List<string>(text);
text.Insert(hasSection + 1, key + "=" + val);
}
}
else
{
text = new string[] { "[" + section + "]", key + "=" + val };
}
System.IO.File.WriteAllLines(filePath, text);
}
static string GetPrivateProfileString(string section, string key, string def, string filePath)
{
if (System.IO.File.Exists(filePath))
{
var text = System.IO.File.ReadAllLines(filePath);
var hasSection = false;
for (int i = 0; i < text.Length; i++)
{
var line = text[i];
if (!hasSection && line.StartsWith("[" + section + "]"))
{
hasSection = true;
}
else if (hasSection && line.StartsWith(key + "="))
{
return line.Substring(key.Length + 1).Trim();
}
}
}
return def;
}
void addItem(CpfObject obj, RoutedEventArgs eventArgs)
{
SelectNode.Nodes.Add(new NodeData { Text = "dfsfs" });
//testTreeVIew.Items = new Collection<TreeViewItem> { new TreeViewItem { Header = "4532" } };
}
public NodeData SelectNode { get { return GetValue<NodeData>(); } set { SetValue(value); } }
public Collection<NodeData> Nodes { get { return GetValue<Collection<NodeData>>(); } set { SetValue(value); } }
void RemoveItem(CpfObject obj, RoutedEventArgs eventArgs)
{
//SelectNode.Parent.Nodes.Remove(SelectNode);
SelectNode.Text = "12313131";
}
void scrollEnd(CpfObject obj, RoutedEventArgs eventArgs)
{
textBox.SelectAll();
}
void TouchDownTest(CpfObject obj, TouchEventArgs eventArgs)
{
Debug.WriteLine(string.Join("、", eventArgs.TouchDevice.GetPositions(obj as UIElement)));
}
void scrollViewerMouseDown(CpfObject obj, MouseButtonEventArgs eventArgs)
{
(obj as UIElement).CaptureMouse();
}
void scrollViewerMouseUp(CpfObject obj, MouseButtonEventArgs eventArgs)
{
(obj as UIElement).ReleaseMouseCapture();
}
public CPF.Documents.Document Document
{
get { return GetValue<CPF.Documents.Document>(); }
set { SetValue(value); }
}
void comboBoxtest(CpfObject obj, RoutedEventArgs eventArgs)
{
page1.ShowLoading("加载。。。", a =>
{
Thread.Sleep(10000);
a.Message = "加载123";
Thread.Sleep(10000);
});
var combobox = obj as ComboBox;
combobox.Items.Clear();
for (int i = 2; i < 10; i++)
{
combobox.Items.Add(i.ToString());
}
combobox.SelectedIndex = 0;
}
void TestComboBox(CpfObject obj, CPFPropertyChangedEventArgs eventArgs)
{
if ((bool)eventArgs.NewValue)
{
var p = typeof(ComboBox).GetProperty("Popup", BindingFlags.Static | BindingFlags.NonPublic);
var popue = p.GetValue(null, null) as Popup;
//popue.LayoutManager.ExecuteLayoutPass();
}
}
CustomScrollData customScrollData = new CustomScrollData
{
DefaultSize = 18,
Custom = new (int, float)[]
{
(8, 180),
(38, 180),
(68, 180)
}
};
void AddTest(CpfObject obj, RoutedEventArgs eventArgs)
{
var data = Data.GetDataTable();
var row = data.NewRow();
for (int j = 0; j < 9; j++)
{
if (j != 1)
{
if (j == 5)
{
row[j] = (Image)"res://ConsoleApp1/Resources/主页.png";
}
else if (j == 7)
{
row[7] = new Button { Content = "test" + data.Rows.Count, Width = "100%" };
}
else
{
row[j] = data.Rows.Count;
}
}
}
row[0] = data.Rows.Count % 3;
row[1] = true;
//var customData = new List<(object obj, float size)>();
////先获取原来索引对应的数据
//foreach (var item in customScrollData.Custom)
//{
// var _item = ItemCollection[item.index];
// customData.Add((_item, item.size));
//}
data.Rows.Add(row);
////添加完数据后再获取新的索引更新到customScrollData
//List<(int index, float size)> list = new List<(int index, float size)>();
//foreach (var item in customData)
//{
// var index = ItemCollection.IndexOf(item.obj);
// if (index > -1)
// {
// list.Add((index, item.size));
// }
//}
//customScrollData.Custom = list.OrderBy(a => a.index);
//if (column.Width.IsStar)
//{
// column.Width = 100;
//}
//column.Width = column.Width.Value + 1;
}
void testHandled(CpfObject obj, MouseButtonEventArgs eventArgs)
{
}
void TestHandled1(CpfObject obj, MouseButtonEventArgs eventArgs)
{
}
void svgMouseUP(CpfObject obj, MouseButtonEventArgs eventArgs)
{
MessageBox.Show("test");
}
void lineMouseDown(CpfObject obj, MouseButtonEventArgs eventArgs)
{
}
Popup popup;
void ShowPopup(CpfObject obj, MouseButtonEventArgs eventArgs)
{
Console.WriteLine(Root.InputManager.KeyboardDevice.Modifiers);
Debug.WriteLine(Root.InputManager.KeyboardDevice.Modifiers);
if (popup == null)
{
popup = new Popup
{
CanActivate = true,
StaysOpen = true,
Placement = PlacementMode.Padding,
PlacementTarget = obj as UIElement,
MarginTop = -10,
Children =
{
new Component1{ }
},
Commands =
{
{nameof(UIElement.LostFocus),(s,e)=>{
popup.Hide();
} },
{nameof(UIElement.GotFocus),(s,e)=>{
popup.Width="auto";
popup.Height="auto";
} }
}
};
}
popup.Show();
}
void textFocus(CpfObject obj, CPFPropertyChangedEventArgs eventArgs)
{
//textBox.Text = "";
}
void ShowLayer(CpfObject obj, RoutedEventArgs eventArgs)
{
new Window2 { DataContext = DataContext, CommandContext = CommandContext }.Show();
//new LayerDialog { Content = }.ShowDialog(this);
}
void TestClear(CpfObject obj, RoutedEventArgs eventArgs)
{
//Items = new Collection<ItemData>() { new ItemData { Name = "231", Introduce = "fgsa" } };
Items.Clear();
Items.Add(new ItemData { Name = "231", Introduce = "fgsa" });
Items.Add(new ItemData { Name = "2341", Introduce = "f2gsa" });
Items.Add(new ItemData { Name = "2331", Introduce = "fg54sa" });
}
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);
}
protected override void OnKeyUp(KeyEventArgs e)
{
base.OnKeyUp(e);
}
void addColumnClick(CpfObject obj, RoutedEventArgs eventArgs)
{
testGrid.Columns.Add(new DataGridTextColumn { Width = 100, Header = "test" });
}
void ClearData(CpfObject obj, RoutedEventArgs eventArgs)
{
Data.GetDataTable().Clear();
}
void addColumn(CpfObject obj, RoutedEventArgs eventArgs)
{
testDataGrid.Columns.Add(new DataGridTextColumn { Binding = "p" + (testDataGrid.Columns.Count + 1), Header = "p" + (testDataGrid.Columns.Count + 1), Width = "100" });
}
void KeyDownTest(CpfObject obj, KeyEventArgs eventArgs)
{
//Close();
}
//protected override void OnClosing(ClosingEventArgs e)
//{
// base.OnClosing(e);
// var f = new Window5();
// f.ShowDialogSync();
// e.Cancel = true;
//}
}
}