CPF/ConsoleApp1/Window1.cs

2646 lines
124 KiB
C#
Raw Normal View History

2023-11-21 23:05:03 +08:00
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Linq;
using CPF.Controls;
using CPF;
using CPF.Drawing;
using CPF.Shapes;
using CPF.Styling;
using CPF.Animation;
using CPF.Input;
using CPF.Effects;
using CPF.Documents;
using System.Diagnostics;
using System.Threading;
using CPF.Svg;
namespace ConsoleApp1
{
public class Window1 : Window
{
public Window1()
{ }
public Window1 Window { get; set; }
Window1 Test()
{
return null;
}
PiecesEffect effect = new PiecesEffect { Value = 1 };
protected override void InitializeComponent()
{
//Effect = new BlurEffect { BlurRadius = 8 };
//ResourceManager.GetImage("res://ConsoleApp1.icon.png", a =>
//{
// Icon = a;
//});
Icon = "res://ConsoleApp1.icon.png";
ViewFill color = "#fff";
ViewFill hoverColor = "255,255,255,40";
Title = "标题123test";
CanResize = true;
Background = null;
MinWidth = 150;
MinHeight = 50;
//AllowDrop = true;
Width = 810.4f;
Height = 575.2f;
DragThickness = 10;
//var bmp = new Bitmap(750, 500);
//using (var dc = DrawingContext.FromBitmap(bmp))
//{
// using (var brush = new SolidColorBrush(Color.Beige))
// {
// dc.FillRectangle(brush, new Rect(20, 20, bmp.Width - 40, bmp.Height - 40));
// }
//}
//StackBlur.ProcessShadow(bmp, 10, new Rect(40, 40, 0, 0));
//Background = bmp;
//窗体阴影
var frame = Children.Add(new Border
{
Width = "100%",
Height = "100%",
Background = "255,255,255",
BorderType = BorderType.BorderStroke,
BorderStroke = new Stroke(0),//ShadowHorizontal = 10,
//ShadowVertical = 10,
Bindings =
{
{
nameof(Border.ShadowBlur),
nameof(Window.WindowState),
this,
BindingMode.OneWay,
(WindowState a) => a == WindowState.Maximized||a== WindowState.FullScreen ? 0 : 20
}
}
});
//用来裁剪内容,不然内容超出阴影
var clip = new Decorator
{
Width = "100%",
Height = "100%",
ClipToBounds = true,//Background = "#fff"
};
frame.Child = clip;
var grid = (Grid)(clip.Child = new Grid
{
Width = "100%",
Height = "100%",
ColumnDefinitions =
{
new ColumnDefinition()
},
RowDefinitions =
{
new RowDefinition
{
Height = 30
},
new RowDefinition
{
2023-11-30 15:12:23 +08:00
2023-11-21 23:05:03 +08:00
}
},
});
//标题栏和按钮
grid.Children.Add(
new Panel
{
Name = "caption",//Background = "#1E9FFF",
Width = "100%",
Height = "100%",
Commands =
{
{
nameof(Window.MouseDown),
nameof(Window.DragMove),
this
}
},
Children =
{
new TextBlock
{
MarginLeft=10,
Bindings=
{
{
nameof(TextBlock.Text),
nameof(Window.Title),
this
}
},
Foreground="#fff"
},
new StackPanel
{
MarginRight=0,
Height = "100%",
Orientation= Orientation.Horizontal,
Children =
{
new Panel
{
ToolTip="最小化",
Name="min",
Width = 30,
Height = "100%",
Children =
{
new Line
{
MarginLeft=8,
MarginTop=5,
StartPoint = new Point(1, 13),
EndPoint = new Point(14, 13),
StrokeStyle = "2",
IsAntiAlias=true,
StrokeFill=color
},
},
Commands =
{
{
nameof(Button.MouseDown),
(s,e)=>
{
(e as MouseButtonEventArgs).Handled = true;
this.WindowState = WindowState.Minimized;
}
}
},
Triggers=
{
new Trigger(nameof(Panel.IsMouseOver), Relation.Me)
{
Setters =
{
{
nameof(Panel.Background),
hoverColor
}
}
}
},
},
new Panel
{
ToolTip="最大化",
Name="max",
Width = 30,
Height = "100%",
Children=
{
new Rectangle
{
Width=14,
Height=12,
StrokeStyle="2",
StrokeFill = color
}
},
Commands =
{
{
nameof(Button.MouseDown),
(s,e)=>
{
(e as MouseButtonEventArgs).Handled = true;
this.WindowState= WindowState.Maximized;
}
}
},
Triggers=
{
new Trigger(nameof(Panel.IsMouseOver), Relation.Me)
{
Setters =
{
{
nameof(Panel.Background),
hoverColor
}
}
}
},
Bindings =
{
{
nameof(Border.Visibility),
nameof(Window.WindowState),
this,
BindingMode.OneWay,
a => (WindowState)a == WindowState.Maximized||(WindowState)a == WindowState.FullScreen ? Visibility.Collapsed : Visibility.Visible
}
},
},//.Bind(
// this,
// t=>t.Visibility== Visibility.Visible?WindowState.Maximized: WindowState.Minimized,
// s=>s.WindowState == WindowState.Maximized ? Visibility.Collapsed : Visibility.Visible,
// BindingMode.TwoWay
// )
//.Trigger(a=>a.IsMouseOver,Relation.Me,(nameof(UIElement.FocusFrameFill),"#fff"))
//.Attached(Grid.ColumnIndex,1),
new Panel
{
ToolTip="向下还原",
Name="nor",
Width = 30,
Height = "100%",
Children=
{
new Rectangle
{
MarginTop=15,
MarginLeft=8,
Width=11,
Height=8,
StrokeStyle="1.5",
StrokeFill = color
},
new Polyline
{
MarginTop=11,
MarginLeft=12,
Points=
{
new Point(0,3),
new Point(0,0),
new Point(9,0),
new Point(9,7),
new Point(6,7)
},
StrokeFill = color,
StrokeStyle="2"
}
},
Commands =
{
{
nameof(Button.MouseDown),
(s, e) =>
{
(e as MouseButtonEventArgs).Handled = true;
this.WindowState = WindowState.Normal;
}
}
},
Bindings =
{
{
nameof(Border.Visibility),
nameof(Window.WindowState),
this,
BindingMode.OneWay,
(WindowState a) => a == WindowState.Normal ? Visibility.Collapsed : Visibility.Visible
}
},
Triggers=
{
new Trigger(nameof(Panel.IsMouseOver), Relation.Me)
{
Setters =
{
{
nameof(Panel.Background),
hoverColor
}
}
}
},
},
new Panel
{
Name="close",
ToolTip="关闭",
Width = 30,
Height = "100%",
Children =
{
new Line
{
MarginTop=8,
MarginLeft=8,
StartPoint = new Point(1, 1),
EndPoint = new Point(14, 13),
StrokeStyle = "2",
IsAntiAlias=true,
StrokeFill=color
},
new Line
{
MarginTop=8,
MarginLeft=8,
StartPoint = new Point(14, 1),
EndPoint = new Point(1, 13),
StrokeStyle = "2",
IsAntiAlias=true,
StrokeFill=color
}
},
Commands =
{
{
nameof(Button.MouseDown),
(s,e)=>
{
(e as MouseButtonEventArgs).Handled=true;
//关闭播放动画
effect.Value=0;
Effect = effect;
Storyboard storyboard1 = new Storyboard
{
Timelines =
{
new Timeline(1)
{
KeyFrames =
{
new KeyFrame<float>
{
Value=1,
Property="Effect.Value",
AnimateMode= AnimateMode.EaseIn,
Ease=new PowerEase
{
Power=0.6
}
}
}
}
}
};
storyboard1.Start(this, TimeSpan.FromSeconds(0.5f));
storyboard1.Completed +=Storyboard_Completed;
}
},
{
nameof(Button.MouseDown),
(s,e)=>
{
(e as MouseButtonEventArgs).Handled=true;
}
}
},
Triggers=
{
new Trigger(nameof(Panel.IsMouseOver), Relation.Me)
{
Setters =
{
{
nameof(Panel.Background),
hoverColor
}
}
}
},
}
}
}
}
});
var pop = new ContextMenu
{
Width = "auto",//PlacementTarget = btn,
//Placement = PlacementMode.Mouse,
Items = new UIElement[]
{
new TestMenuItem
{
Header = "2313sdadadaaaaaaa1PlacementMode"
},
new Separator
{
2023-11-30 15:12:23 +08:00
2023-11-21 23:05:03 +08:00
},
new MenuItem
{
Header = "2",
Items=new MenuItem[]
{
new MenuItem
{
Header = "21",
2023-11-30 15:12:23 +08:00
Commands =
{
{
nameof(MenuItem.Click),
MenuItemClick
}
}
2023-11-21 23:05:03 +08:00
},
new MenuItem
{
Header = "22",
Items=new MenuItem[]
{
new MenuItem
{
Header = "221",
Commands =
{
2023-11-30 15:12:23 +08:00
{
nameof(MenuItem.Click),
MenuItemClick
}
2023-11-21 23:05:03 +08:00
}
},
new MenuItem
{
Header = "222",
Commands =
{
2023-11-30 15:12:23 +08:00
{
nameof(MenuItem.Click),
MenuItemClick
}
2023-11-21 23:05:03 +08:00
}
}
}
},
},
},
new MenuItem
{
Header = "3",
IsCheckable=true,
Items = new MenuItem[]
{
new MenuItem
{
Header = "31",
2023-11-30 15:12:23 +08:00
Commands =
{
{
nameof(MenuItem.Click),
MenuItemClick
}
}
2023-11-21 23:05:03 +08:00
},
new MenuItem
{
Header = "32"
},
}
}
},
};
var datagrid = new DataGrid
{
//IsVirtualizing=false,
Width = "60.000004%",
Height = 342,//Background = "#fff",
Columns =
{
new DataGridComboBoxColumn
{
Header="dfsd",
Binding=new DataGridBinding("Item1",BindingMode.TwoWay),
Width=100,
Items=
{
"0",
"1",
"2",
"3"
},
CanUserSort=false
},
new DataGridCheckBoxColumn
{
Header="d1fsd",
Binding=new DataGridBinding("Item2")
{
BindingMode= BindingMode.TwoWay
},
Width=100,
CanUserSort=false
},
new DataGridTextColumn
{
Header="3dfsd",
Binding=new DataGridBinding("Item3")
{
BindingMode= BindingMode.TwoWay
},
Width="100"
},
new DataGridTextColumn
{
Header="输入类型验证",
Binding=new DataGridBinding("Item4")
{
BindingMode= BindingMode.TwoWay
},
Width="100"
},
new DataGridTemplateColumn
{
Header="自定义模板",
Binding=new DataGridBinding("Item5"),
Width=100,
CellTemplate=typeof(CellTemplate)
},
new DataGridTextColumn
{
Header="d1fsd",
Binding=new DataGridBinding("Item6"),
Width=100
},
new DataGridTextColumn
{
Header="3dfsd",
Binding=new DataGridBinding("Item7"),
Width="100"
},
new DataGridTextColumn
{
Header="3dfsd",
Binding=new DataGridBinding("Item8"),
Width="100"
},
new DataGridTextColumn
{
Header="3dfsd",
Binding=new DataGridBinding("Item9"),
Width="100"
},
},
Bindings =
{
{
nameof(DataGrid.Items),
nameof(Model.Data)
}
}
};
grid.Children.Add(new TabControl
{
Width = "100%",
Height = "100%",//Background = "10,255,255,255",
SwitchAction = (oldItem, newItem) =>
{
if (oldItem != null && oldItem.ContentElement != null)
{
oldItem.ContentElement.TransitionValue(nameof(UIElement.MarginLeft), (FloatField)"-100%", TimeSpan.FromSeconds(0.2), new PowerEase(), AnimateMode.EaseOut, () =>
{
oldItem.ContentElement.Visibility = Visibility.Collapsed;
});
}
if (newItem != null && newItem.ContentElement != null)
{
newItem.ContentElement.Visibility = Visibility.Visible;
newItem.ContentElement.MarginLeft = "100%";
newItem.ContentElement.TransitionValue(nameof(UIElement.MarginLeft), (FloatField)"0%", TimeSpan.FromSeconds(0.2), new PowerEase(), AnimateMode.EaseOut);
}
},
Items =
{
new TabItem
{
Header="基础控件",
Content=new StackPanel
{
Width="100%",
Height="100%",//Background=Color.FromArgb(100,0,0,0),
//Background="linear-gradient(0 0,300 300,#fff,#000,#faa)",
Children=
{
new StackPanel
{
Orientation= Orientation.Horizontal,
Children=
{
new Button
{
Content = "打开文件对话框",
Width=100,
Height=20,
Commands=
{
{
nameof(Button.Click),
async (s,e)=>
{
var f=new OpenFileDialog
{
Title="打开文件",
AllowMultiple=true
};
f.Filters.Add(new FileDialogFilter
{
Name="*",
Extensions="bmp,jpeg,png,jpg"
});
var sf=await f.ShowAsync(this);
}
}
}
},
new Button
{
Content = "选择目录对话框",
Width=100,
Height=20,
Commands=
{
{
nameof(Button.Click),
(s,e)=>
{
ThreadPool.QueueUserWorkItem(async a=>
{
var sf=await new OpenFolderDialog
{
Title="标题"
}
.ShowAsync(this);
},null);
}
}
}
},
new Button
{
Content = "保存文件对话框",
Width=100,
Height=20,
Commands=
{
{
nameof(Button.Click),
async (s,e)=>
{
var f=new SaveFileDialog
{
Title="保存文件",
Filters=
{
new FileDialogFilter
{
Extensions="dll",
Name="dll文件"
}
}
};
var sf= await f.ShowAsync(this);
}
}
}
},
new Button
{
Content = "模态窗体",
Width=100,
Height=20,
Commands=
{
{
nameof(Button.Click),
async (s,e)=>
{
var f=new Window();
f.Background="#000";
f.Width=300;
f.Height=300;
f.CanResize=true;
f.Commands.Add(nameof(f.DoubleClick),(ss,ee)=>f.Close());
await f.ShowDialog(this);
//MessageBox.Show("dfs");
System.Diagnostics.Debug.WriteLine("test");
}
}
}
},
new Button
{
Content = "切换样式2",
Width=100,
Height=20,
Commands=
{
{
nameof(Button.Click),
(s,e)=>
{
var b=s as Button;
if (b.Content.ToString()=="切换样式2")
{
LoadStyleFile("res://ConsoleApp1.Stylesheet2.css");
b.Content="切换样式1";
}
else
{
LoadStyleFile("res://ConsoleApp1.Stylesheet1.css");
b.Content="切换样式2";
}
}
}
}
},
new Button
{
Content="全屏",
Commands=
{
{
nameof(Button.Click),
(s,e)=>
{
this.WindowState=WindowState== WindowState.FullScreen?WindowState.Normal: WindowState.FullScreen;
}
}
}
},
new Button
{
Content="最前端",
Commands=
{
{
nameof(Button.Click),
(s,e)=>
{
this.TopMost = !this.TopMost;
}
}
}
},
new Button
{
Content="ShowInBar",
Commands=
{
{
nameof(Button.Click),
(s,e)=>
{
this.ShowInTaskbar = !this.ShowInTaskbar;
}
}
}
},
new Button
{
Content="移动窗体",
Commands=
{
{
nameof(Button.Click),
(s,e)=>
{
this.Position=new PixelPoint(-100,0);
}
}
}
},
}
},
new CheckBox
{
Content="TextBlock测试🌐",
MarginTop=2
},
new CheckBox
{
Content="选择2",
MarginTop=2,
IsThreeState=true
},
new RadioButton
{
Content=new Button
{
Content="单选1"
},
Background="#fff",
MarginTop=2,
GroupName="分组"
},
new RadioButton
{
Content="单选2",
MarginTop=2,
GroupName="分组"
},
new ComboBox
{
ItemTemplate=new ListBoxItem
{
FontSize=24,
Width="100%",
ContentTemplate=new ContentTemplate
{
Width="auto",
MarginLeft=0
}
},
Width=100,
Height=25,
Items =
{
new ListBoxItem
{
Content="test"
},
new ListBoxItem
{
Content="test2"
},
}
},
new TextBox
{
Classes=
{
"Single"
},
PasswordChar='*',
Width=100,
Height=25,
Bindings=
{
{
nameof(TextBlock.Text),
nameof(Model.TextSize),
null,
BindingMode.OneWayToSource,
null,
a=>
{
var tb = Binding.Current.Owner as TextBox;
return DrawingFactory.Default.MeasureString(a.ToString(), new Font(tb.FontFamily, tb.FontSize, tb.FontStyle)).ToString();
}
}
}
},
new TextBlock
{
Bindings=
{
{
nameof(TextBlock.Text),
nameof(Model.TestComputedProperty)
},
{
nameof(TextBlock.Width),
nameof(Model.TestWidth)
}
}
},
new Slider
{
Height =40,
Width=200,
PresenterFor=this,
Maximum=100,
Name="slider",
TickPlacement= TickPlacement.Both
},//new ProgressBar{Height =20,IsIndeterminate=true,Width=200,Value=30,Bindings={ {nameof(ProgressBar.Value),nameof(Slider.Value),this.FindPresenter<Slider>(a=>a.Name=="slider") } } },
new Button
{
Content="附加文本",
Commands=
{
{
nameof(Button.Click),
(s,e)=>
{
var textbox= this.FindPresenter<TextBox>().First(a=>a.Name=="textbox");
textbox.AppentText("sadadfadaasda测试啊啊啊啊啊\nasdadfs哈哈哈哈哈哈哈啊啊啊撒");
textbox.ScrollToEnd();
}
}
}
},
new Button
{
Content="format",
Commands=
{
{
nameof(Button.Click),
ClickFormat
}
}
},
new TextBox
{
Width="60%",
Name="textbox",
PresenterFor=this,
Height=250,
IsUndoEnabled=false,
Text="",
Foreground="#f00",//Background="#fff",
IsAllowPasteImage=true,
Styles=
{
new DocumentStyle
{
Foreground = "0,0,255"
},
new DocumentStyle
{
Foreground = "192,0,0"
},
new DocumentStyle
{
Foreground = "100,100,100"
}
},
KeywordsStyles=
{
new KeywordsStyle
{
Keywords = "using |namespace |class |true|new ",
IsRegex=true,
StyleId = 0
},
new KeywordsStyle
{
Keywords = "(\").*(\")",
IsRegex = true,
StyleId = 1
},
new KeywordsStyle
{
Keywords = "(\\\').*(\\\')",
IsRegex = true,
StyleId = 2
}
}
},
new ScrollBar
{
Width=200,
Height=20,
MarginTop=20,
Orientation= Orientation.Horizontal
},
}
}
},
new TabItem
{
Header="动画",
Content=new Panel
{
Width="100%",
Height="100%",
Children=
{
new Button
{
RenderTransform=new RotateTransform(10),
Content = "按住鼠标播放动画",
Width=100,
Height=30,
MarginTop=39,
MarginLeft=0,
Triggers=
{
new Trigger
{
Property=nameof(Button.IsMouseCaptured),
Animation= new Storyboard
{
Timelines =
{
new Timeline(.5f)
{
//定义一个时间线从上个时间点到这个时间点。0到1相对整个动画的时间。现在定义的是前一半的时间
KeyFrames =
{
new KeyFrame<FloatField>
{
Property = nameof(UIElement.MarginLeft),//属性名
Value = 400,//动画目标值
//Ease = new PowerEase(),//缓动方式
AnimateMode = AnimateMode.Linear//线性或者缓动
},//new KeyFrame<FloatField> {
// Property = nameof(UIElement.MarginTop),//属性名
// Value = 200,//动画目标值
//}
}
},
new Timeline(1)
{
//从上一个时间点0.5到1就是后一半的时间
KeyFrames =
{
new KeyFrame<GeneralTransform>
{
Property = nameof(UIElement.RenderTransform),
Value = new GeneralTransform()
{
Angle=720,
ScaleX=2,
ScaleY=2
},
Ease = new BackEase(),
AnimateMode = AnimateMode.Linear
}
}
},
}
},
AnimationDuration = TimeSpan.FromSeconds(1)
}
},
},
new TextBlock
{
MarginTop=111,
MarginLeft=0,
Text="鼠标移入变色CSS定义",
Classes=
{
"testAnimation1"
}
},
new Picture
{
MarginTop=111.3f,
Source="https://dss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo_top-e3b63a0b1b.png",
Triggers=
{
new Trigger(nameof(IsMouseOver), Relation.Me)
{
Animation=new Storyboard
{
Timelines =
{
new Timeline(1)
{
KeyFrames =
{
new KeyFrame<GeneralTransform>
{
Property = nameof(UIElement.RenderTransform),
Value = new GeneralTransform()
{
ScaleX=1.5f,
ScaleY=1.5f
},
Ease = new BackEase(),
AnimateMode = AnimateMode.EaseIn
}
}
}
}
},
AnimationDuration = TimeSpan.FromSeconds(.5)
}
}
},
new ScrollBar
{
Name="animationTransition",
Orientation= Orientation.Horizontal,
Maximum=1000,
Width=500
},
new Button
{
MarginLeft=5,
MarginTop=180,
Content="动态过渡到某个值",
Commands=
{
{
nameof(MouseDown),
(s,e)=>
{
this.Find<ScrollBar>().FirstOrDefault(a=>a.Name== "animationTransition").TransitionValue(a=>a.Value,new Random().Next(0,1000),TimeSpan.FromSeconds(0.3));
}
}
}
},
new SVG("res://ConsoleApp1/test.svg")
{
MarginLeft = 400,
MarginTop = 271,
Height = 85,
Width=170,
Stretch= Stretch.Uniform,
},
new SVG("res://ConsoleApp1/test.svg")
{
MarginLeft = 205,
MarginTop = 11,
Height = 85,
Width=170,
Stretch= Stretch.Uniform,
},
new SVG("res://ConsoleApp1/test.svg")
{
MarginRight = 154,
MarginTop = 11,
Height = 85,
Stretch= Stretch.Uniform,
},
new SVG("res://ConsoleApp1/test.svg")
{
MarginRight = 10,
MarginTop = 11,
Height = 85,
Stretch= Stretch.Uniform,
},
new SVG("res://ConsoleApp1/test.svg")
{
MarginRight = 3,
MarginTop = 110,
Height = 85,
Stretch= Stretch.Uniform,
},
new SVG("res://ConsoleApp1/test.svg")
{
MarginRight = 4,
MarginTop = 195,
Height = 85,
Stretch= Stretch.Uniform,
},
new SVG("res://ConsoleApp1/test.svg")
{
MarginRight = 4,
MarginTop = 280,
Height = 85,
Stretch= Stretch.Uniform,
},
new Button
{
Commands =
{
{
nameof(Button.Click),
nameof(PlayAnimation),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
},
MarginLeft = 393,
MarginTop = 23,
Height = 27,
Width = 96,
Content = "播放动画",
},
new SVG("res://ConsoleApp1/test.svg")
{
MarginLeft = 172,
MarginTop = 133,
Height = 85,
Width=170,
Stretch= Stretch.Uniform,
},
new SVG("res://ConsoleApp1/test.svg")
{
MarginLeft = 474,
MarginTop = 148,
Height = 85,
Width=170,
Stretch= Stretch.Uniform,
},
new SVG("res://ConsoleApp1/test.svg")
{
MarginLeft = 16,
MarginTop = 276,
Height = 85,
Width=170,
Stretch= Stretch.Uniform,
},
new SVG("res://ConsoleApp1/test.svg")
{
MarginLeft = 16,
MarginTop = 361,
Height = 85,
Width=170,
Stretch= Stretch.Uniform,
},
new SVG("res://ConsoleApp1/test.svg")
{
MarginLeft = 216,
MarginTop = 276,
Height = 85,
Width=170,
Stretch= Stretch.Uniform,
},
new SVG("res://ConsoleApp1/test.svg")
{
MarginLeft = 205,
MarginTop = 373,
Height = 85,
Width=170,
Stretch= Stretch.Uniform,
},
new SVG("res://ConsoleApp1/test.svg")
{
MarginLeft = 409,
MarginTop = 385,
Height = 85,
Width=170,
Stretch= Stretch.Uniform,
},
new SVG("res://ConsoleApp1/test.svg")
{
MarginLeft = 620,
MarginTop = 395,
Height = 85,
Width=170,
Stretch= Stretch.Uniform,
}
}
}
},
new TabItem
{
Header="虚拟模式加载大数据",
Content=new Panel
{
Width="100%",
Height="100%",
IsAntiAlias=true,//Background="url(http://static.tieba.baidu.com/tb/editor/images/client/image_emoticon16.png) no-repeat fill",
Children=
{
new StackPanel
{
MarginTop=5,
Orientation= Orientation.Horizontal,
Children=
{
new TextBlock
{
MarginTop=5,
Text="插入数据的索引位置:"
},
new TextBox
{
MarginLeft=5,
Height=25,
Width=50,
Classes=
{
"Single"
},
Bindings=
{
{
nameof(TextBox.Text),
nameof(Model.InsertIndex),
null,
BindingMode.OneWayToSource,
null,
a =>
{
int.TryParse(a.ToString(), out int result);
return result;
}
}
}
},
new TextBlock
{
MarginTop=5,
Text="插入的数据:"
},
new TextBox
{
MarginLeft=5,
Height=25,
Width=50,
Classes=
{
"Single"
},
Bindings=
{
{
nameof(TextBox.Text),
nameof(Model.InsertText),
null,
BindingMode.OneWayToSource
}
}
},
new Button
{
Content="插入",
Width=60,
Commands=
{
{
nameof(Button.Click),
nameof(Model.Insert)
}
},
Foreground="#fff",
//[nameof(Button.IsMouseOver)]=new TriggerDescribe((nameof(Button.Background),"rgb(236,245,255)"),(nameof(Button.Foreground),"rgb(64,158,255)"))
2023-11-21 23:05:03 +08:00
},
new Button
{
MarginLeft=5,
Content="删除选中",
Width=60,
Commands=
{
{
nameof(Button.Click),
nameof(Model.RemoveSelect)
}
}
},
new Button
{
MarginLeft=5,
Content="排序",
Width=60,
Commands=
{
{
nameof(Button.Click),
nameof(Model.Sort)
}
}
},
}
},
new ListBox
{
2023-11-30 15:12:23 +08:00
MarginLeft = 57,
MarginTop = 63,//Background="#aaa",
2023-11-21 23:05:03 +08:00
Name="listbox",
IsVirtualizing=true,//VirtualizationMode= VirtualizationMode.Recycling,
SelectionMode= SelectionMode.Extended,
Width=200,
Height=300,//Items=list,
ItemTemplate=new ListBoxItem
{
Width="100%",
FontSize=22,
2023-11-30 15:12:23 +08:00
Tag=this,
//Template=(e,c)=>{
// c.Add(new Border
// {
// Background="#f00",
// Height = "100%",
// Width = "100%",
// BorderFill = null,
// Name = "contentPresenter",
// PresenterFor = this
// });
//}
2023-11-21 23:05:03 +08:00
},
Bindings=
{
{
nameof(ListBox.Items),
nameof(Model.List)
},
{
nameof(ListBox.SelectedIndex),
nameof(Model.SelectIndex),
null,
BindingMode.OneWayToSource
}
},
Commands =
{
{
nameof(MouseDown),
(s,e)=>
{
Debug.WriteLine(((ListBox)s).IsInItem(((MouseButtonEventArgs)e).OriginalSource as UIElement));
}
}
}
},//new Button{ Content="排序" },
2023-11-30 15:12:23 +08:00
new ListBox
{
MarginLeft = 463,
MarginTop = 44,
Height = 431,
Width = 283,
Background = "white",
BorderFill = new SolidColorFill
{
Color = Color.Silver
},
BorderThickness = new Thickness(0, 1, 0, 0),
BorderType = BorderType.BorderThickness,
ItemsPanel = new StackPanel
{
Orientation = Orientation.Horizontal
},
ItemTemplate = new ListBoxItem
{
Width = 100,
MarginRight = 1,
FontSize = 16f,
BorderFill = "Silver",
BorderThickness = new Thickness(1),
Margin = new ThicknessField(1),
CornerRadius = new CornerRadius(2),
IsAntiAlias = true,
UseLayoutRounding = true,
BorderType = BorderType.BorderThickness,
Template=(e,c)=>{
Children.Add(new Border
{
Background="#f00",
Height = "100%",
Width = "100%",
BorderFill = null,
Name = "contentPresenter",
PresenterFor = this
});
}
//ContentTemplate = new ContentTemplate
//{
// Size = SizeField.Fill,
// Content = new StackPanel
// {
// Orientation = Orientation.Horizontal,
// Size = SizeField.Fill,
// Children =
// {
// new TextBlock
// {
// //[nameof(TextBlock.Text)] = new BindingDescribe("Title",BindingMode.OneWay)
// Text = "test"
// }
// }
// },
//},
},
}
2023-11-21 23:05:03 +08:00
}
}
},
new TabItem
{
Header="TreeView",
Content= new Panel
{
Width="100%",
Height="100%",
Children=
{
new Button
{
Content="添加节点",
Width=80,
Height=30,
MarginTop=2,
Commands=
{
{
nameof(Button.MouseDown),
nameof(Model.AddNode)
}
}
},
new TreeView
{
Width=150,
Height=200,
DisplayMemberPath="Text",
ItemsMemberPath="Nodes",
Background="#aaa",//Items= nodes
Bindings=
{
{
nameof(TreeView.Items),
nameof(Model.Nodes)
}
},
}
}
},
},
new TabItem
{
Header = "右键菜单",
Content = new Button
{
Width = 100,
Height = 20,
Content = "右键",
ContextMenu = pop,
},
},
new TabItem
{
Header = "DataGrid",
Content =
new Panel
{
Width="100%",
Height="100%",
Children=
{
datagrid,
new Button
{
Commands =
{
{
"Click",
nameof(ClearData),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
},
Height = 28,
Width = 96,
MarginLeft = 211,
MarginTop = 36,
Content = "ClearButton",
},
new Button
{
Commands =
{
{
nameof(Button.Click),
nameof(AddRowClick),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
},
Height = 29,
Width = 109,
MarginLeft = 389,
MarginTop = 36,
Content = "AddButton",
},
}
},
},
new TabItem
{
Header = "布局",
Content =
new Panel
{
Width="100%",
Height="100%",
Children=
{
new Grid
{
Name="testGrid",
Background="#999",
Width="80%",
Height="80%",
ColumnDefinitions=
{
new ColumnDefinition
{
Width="40*"
},
new ColumnDefinition
{
Width = "30*"
},
new ColumnDefinition
{
Width="300"
},
},
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 TextBlock
{
Background="#b1a",
Width="100%",
Height="100%",
Text="跨列341231说的sda2131\ndddsad",
TextTrimming= TextTrimming.CharacterEllipsis,
},
0,
2,
2
},
{
new TextBlock
{
Background="#186",
Width="100%",
Height="100%",
Text="跨行"
},
2,
1,
1,
2
},
{
new GridSplitter
{
MarginLeft=0,
ShowsPreview=true
},
1,
0
}
},
},
}
},
},
new TabItem
{
Header="拖拽",
Content =
new Panel
{
Width="100%",
Height="100%",
Children=
{
new TextBlock
{
AllowDrop = true,
Width = 462,
MarginLeft=0,
Text="文字拖拽给我",
Triggers=
{
new Trigger(nameof(TextBlock.IsDragOver), Relation.Me)
{
Setters =
{
{
nameof(Background),
"#f00"
}
}
}
},
Commands=
{
{
nameof(Drop),
(s,e)=>
{
if ((e as DragEventArgs).Data.Contains(DataFormat.Html))
{
(s as TextBlock).Text = (e as DragEventArgs).Data.GetData(DataFormat.Html)?.ToString();
}
else if ((e as DragEventArgs).Data.Contains(DataFormat.Text))
{
(s as TextBlock).Text = (e as DragEventArgs).Data.GetData(DataFormat.Text)?.ToString();
}
else if ((e as DragEventArgs).Data.Contains(DataFormat.FileNames))
{
(s as TextBlock).Text = ((e as DragEventArgs).Data.GetData(DataFormat.FileNames) as IList<string>)[0];
}
}
},
{
nameof(DragEnter),
(s,e)=>
{
2023-11-30 15:12:23 +08:00
//(e as DragEventArgs).DragEffects= DragDropEffects.Link;
2023-11-21 23:05:03 +08:00
}
},
}
},
new TextBlock
{
MarginRight=0,
Text="文字拖拽给别人",
Commands=
{
{
nameof(MouseDown),
(s,e)=>
{
Debug.WriteLine(DragDrop.DoDragDrop(DragDropEffects.Link,
(DataFormat.Text, "拖拽文字")
,(DataFormat.Html, "<h1>拖拽文字1</h1>")
));
}
}
}
},
}
},
},
new TabItem
{
Header="位图特效",
Content =
new Panel
{
Width="100%",
Height="100%",
Children=
{
new Button
{
CornerRadius = "10,10,10,10",
MarginTop=5,
Content="模糊,你撸多了",
Effect=new BlurEffect
{
2023-11-30 15:12:23 +08:00
2023-11-21 23:05:03 +08:00
}
},
new Button
{
MarginTop=35,
Content="马赛克,你撸多了",
Effect=new MosaicEffect
{
Size=2
}
},
new Button
{
MarginTop=65,
Content="半透明",
Effect=new OpacityEffect
{
Opacity=0.5f
}
},
new Button
{
MarginTop=95,
Content="灰色",
Effect=new GrayScaleEffect
{
2023-11-30 15:12:23 +08:00
2023-11-21 23:05:03 +08:00
}
},
new Picture
{
MarginTop=125,
Source="http://tb2.bdstatic.com/tb/img/single_member_100_0b51e9e.png",
Effect= new ReliefEffect()
},
}
},
},
new TabItem
{
Header="背景特效",
Content =
new Panel
{
Width="100%",
Height="100%",
Children=
{
new TextBlock
{
MarginTop=5,
Text="渐变背景",
Background="linear-gradient(0 0,30 30,#fff,#0f0,#faa)"
},
new TextBlock
{
MarginTop=35,
Height=50,
Width=50,
Text="径向渐变",
Background=new RadialGradientFill
{
GradientStops=
{
new GradientStop(Color.Black,0),
new GradientStop(Color.White,1)
},
Radius=10
}
},
new TextBlock
{
RenderTransform = new GeneralTransform
{
Angle = -5.5f,
},
MarginTop=95,
Height=150,
Width=150,
Text="图片背景",
Background="url(https://tb1.bdstatic.com/tb/r/image/2019-09-29/c29109a0c0d4fe6832d41fa180ffa8f1.jpg) no-repeat fill",
Tag=1f,
RenderTransformOrigin=new PointField(0,0),
Commands =
{
{
nameof(UIElement.MouseDown),
(s,e)=>
{
var m=e as MouseEventArgs;
var ele=s as UIElement;
Matrix matrix=Matrix.Identity;
if(ele.RenderTransform is MatrixTransform transform)
{
matrix=transform.Value;
}
var v=(float)ele.Tag;
v+=0.2f;
ele.Tag=v;
matrix.ScaleAtPrepend(v,v,m.Location.X,m.Location.Y);
ele.RenderTransform =new MatrixTransform(matrix);
}
}
}
},
new TextBlock
{
MarginTop=255,
Height=250,
Width=250,
Text="图片背景",
Background="url(https://tb1.bdstatic.com/tb/r/image/2019-09-29/c29109a0c0d4fe6832d41fa180ffa8f1.jpg)"
},
new Button
{
MarginTop = 32,
MarginRight = 30,
Height = 30,
Width = 91,
Content = "测试",
Commands =
{
{
nameof(Button.Click),
(s,e)=>
{
System.Threading.ThreadPool.QueueUserWorkItem(a=>
{
TestMessage();
},null);
}
},
{
"Click",
nameof(testClick),
this,
CommandParameter.EventSender,
CommandParameter.EventArgs
},
}
},
new Border
{
MarginTop = 353,
BorderType = BorderType.BorderThickness,
Name = "testBorder",
CornerRadius = "0,0,0,0",
Width = 420,
Height = 88,
Background = new RadialGradientFill
{
GradientStops=
{
new GradientStop(Color.Black,0),
new GradientStop(Color.White,1)
},
Radius=10
},
ShadowBlur = 20,
BorderFill = "#4F309EC0",
IsAntiAlias = true,
Triggers =
{
{
nameof(Border.IsMouseOver),
Relation.Me,
null,
(nameof(Border.BorderFill),"#f77da4")
}
}
},
new Polyline
{
RenderTransform = new GeneralTransform
{
Angle = -6.5f,
},
StrokeStyle = "5,Solid",
IsHitTestOnPath = true,
MarginLeft = 599,
MarginTop = 112,
Points=
{
new Point(0,0),
new Point(50,50),
new Point(0,50)
},
},
new Calendar
{
MarginLeft = 29,
MarginTop = 19,
},
new Panel
{
Children =
{
new Button
{
MarginLeft = 24,
MarginTop = 18,
Content = "Button",
},
new Button
{
MarginLeft = 101,
MarginTop = 18,
Content = "Button",
},
new CheckBox
{
PresenterFor = this,
Name = nameof(testCheckBox),
MarginLeft = 22,
MarginTop = 80,
Content = "CheckBox",
},
},
MarginLeft = 606,
MarginTop = 184,
Height = 146,
Width = 166,
},
}
},
},
new TabItem
{
Content = new Grid
{
Size = SizeField.Fill,
RowDefinitions =
{
new RowDefinition
{
2023-11-30 15:12:23 +08:00
2023-11-21 23:05:03 +08:00
},
},
Children =
{
new ListBox
{
Size = SizeField.Fill,
ItemsPanel = new WrapPanel
{
Width="100%",
Orientation = Orientation.Horizontal,
},
Items =
{
"",
""
},
ItemTemplate=new ListBoxItem
{
Width=100,
Height=100,
Background=Color.Red,
MarginRight=2
}
},
}
},
Header = "TabItem",
},
}
}, 0, 1);
//if (DesignMode)
//{
// Children.Add(new Button { Content = "设计模式" });
// }
var name = typeof(Window1).Assembly.GetName().Name;
LoadStyleFile("res://" + name + "/Stylesheet1.css");
//Effect = effect;
//Storyboard storyboard = new Storyboard
//{
// Timelines = {
// new Timeline(1)
// {
// KeyFrames = {
// new KeyFrame<float>
// {
// Value=0,
// Property="Effect.Value",
// AnimateMode= AnimateMode.EaseOut,
// Ease=new CubicEase{ }
// }
// }
// }
// }
//};
//storyboard.Start(this, TimeSpan.FromSeconds(1));
//storyboard.Completed += (s, e) =>
//{
// //System.Diagnostics.Debug.WriteLine("end");
// this.Effect = null;
//};
}
CheckBox testCheckBox;
protected override void OnInitialized()
{
base.OnInitialized();
testCheckBox = FindPresenterByName<CheckBox>(nameof(testCheckBox));
}
//protected override void OnClosing(ClosingEventArgs e)
//{
// base.OnClosing(e);
// Model model = DataContext as Model;
// if (model != null)
// {
// model.SelectValue = 2;
// }
//}
private void Storyboard_Completed(object sender, StoryboardCompletedEventArgs e)
{
//DialogResult = 1;
this.Close();
}
async void TestMessage()
{
await MessageBox.Show("test");
}
void ClickFormat(CpfObject sender, object eventArgs)
{
var textbox = this.FindPresenter<TextBox>().First(a => a.Name == "textbox");
var text = textbox.Text;
var str = "InitializeComponent";
var start = text.IndexOf(str);
List<Code> codes = new List<Code>();
Code lastCode = new Code { CodeType = CodeType.Other, Length = str.Length };
codes.Add(lastCode);
List<CodeType> doubleType = new List<CodeType>();
char lastChar = (char)0;
var len = 0;
for (int i = str.Length + start; i < text.Length; i++)
{
var ct = Code.GetCodeType(text[i]);
if (lastChar == '\\')
{
ct = CodeType.Other;
}
else if (lastChar == '/' && text[i] == '/' && (doubleType.Count == 0 || doubleType[doubleType.Count - 1] != CodeType.DoubleQuotationMarks) && lastCode.CodeType == CodeType.Other)//注释
{
len++;
lastCode.Length++;
for (int j = i + 1; j < text.Length; j++)
{
len++;
if (text[j] == '\n')
{
lastCode = new Code { CodeType = CodeType.SpaceWhite, Length = 1 };
codes.Add(lastCode);
lastChar = text[j];
i = j;
break;
}
lastCode.Length++;
}
continue;
}
else if (lastChar == '/' && text[i] == '*' && (doubleType.Count == 0 || doubleType[doubleType.Count - 1] != CodeType.DoubleQuotationMarks) && lastCode.CodeType == CodeType.Other)
{/* */
len++;
lastCode.Length++;
for (int j = i + 1; j < text.Length - 1; j++)
{
len++;
if (text[j] == '*' && text[j + 1] == '/')
{
len++;
lastCode.Length += 2;
lastChar = text[j + 1];
i = j + 1;
break;
}
lastCode.Length++;
}
continue;
}
if (doubleType.Count > 0)
{
var last = doubleType[doubleType.Count - 1];
if ((last == CodeType.OpenBraceToken && ct == CodeType.CloseBraceToken) ||
(last == CodeType.DoubleQuotationMarks && ct == CodeType.DoubleQuotationMarks) ||
(last == CodeType.SingleQuotationMarks && ct == CodeType.SingleQuotationMarks) ||
(last == CodeType.OpenBracketToken && ct == CodeType.CloseBracketToken))
{
doubleType.RemoveAt(doubleType.Count - 1);
}
else
{
if ((last == CodeType.SingleQuotationMarks && ct != CodeType.SingleQuotationMarks) || (last == CodeType.DoubleQuotationMarks && ct != CodeType.DoubleQuotationMarks) ||
(last == CodeType.OpenBracketToken && ct == CodeType.Commas))
{
ct = CodeType.Other;
}
else
{
if (ct == CodeType.CloseBraceToken || ct == CodeType.DoubleQuotationMarks || ct == CodeType.OpenBraceToken || ct == CodeType.SingleQuotationMarks || ct == CodeType.OpenBracketToken || ct == CodeType.CloseBracketToken)
{
doubleType.Add(ct);
}
}
}
}
else
{
if (ct == CodeType.OpenBraceToken)
{
doubleType.Add(CodeType.OpenBraceToken);
}
}
if (lastCode.CodeType == ct && ct != CodeType.CloseBraceToken && ct != CodeType.OpenBraceToken)
{
lastCode.Length++;
}
else
{
lastCode = new Code { CodeType = ct, Length = 1 };
codes.Add(lastCode);
}
len++;
if (ct == CodeType.CloseBraceToken && doubleType.Count == 0)
{
break;
}
lastChar = text[i];
}
var code = text.Substring(start, len + str.Length);
var sb = new StringBuilder(code);
var wlen = 8;
var index = 0;
for (int i = 0; i < codes.Count; i++)
{
var item = codes[i];
if (item.CodeType == CodeType.OpenBraceToken)
{
var s = 0;
var e = 0;
if ((i > 1 && !(codes[i - 1].CodeType == CodeType.SpaceWhite && (codes[i - 2].CodeType == CodeType.OpenBraceToken || codes[i - 2].CodeType == CodeType.Commas))) || i < 2)
{
for (int j = i - 1; j >= 0; j--)
{//往前找空格和换行
var c = codes[j];
if (c.CodeType != CodeType.SpaceWhite)
{
break;
}
s += c.Length;
}
}
for (int j = i + 1; j < codes.Count; j++)
{//往后
var c = codes[j];
if (c.CodeType != CodeType.SpaceWhite)
{
i = j - 1;
break;
}
e += c.Length;
}
sb.Remove(index - s, e + s + 1);
index -= s;
//index++;
sb.Insert(index, '\n');
for (int j = 0; j < wlen; j++)
{
index++;
sb.Insert(index, ' ');
}
index++;
sb.Insert(index, '{');
if (sb.Length > index + 1 && sb[index + 1] != '{')
{
index++;
sb.Insert(index, '\n');
}
wlen += 4;
if (sb.Length > index + 1 && sb[index + 1] != '{')
{
for (int j = 0; j < wlen; j++)
{
index++;
sb.Insert(index, ' ');
}
}
}
else if (item.CodeType == CodeType.CloseBraceToken)
{
wlen -= 4;
var s = 0;
var e = 0;
if ((i > 1 && !(codes[i - 1].CodeType == CodeType.SpaceWhite && (codes[i - 2].CodeType == CodeType.CloseBraceToken || codes[i - 2].CodeType == CodeType.Commas || codes[i - 2].CodeType == CodeType.Semicolon || codes[i - 2].CodeType == CodeType.OpenBraceToken))) || i < 2)
{
for (int j = i - 1; j >= 0; j--)
{//往前找空格和换行
var c = codes[j];
if (c.CodeType != CodeType.SpaceWhite)
{
break;
}
s += c.Length;
}
}
for (int j = i + 1; j < codes.Count; j++)
{//往后
var c = codes[j];
if (c.CodeType != CodeType.SpaceWhite)
{
i = j - 1;
break;
}
e += c.Length;
}
sb.Remove(index - s, e + s + 1);
index -= s;
//index++;
sb.Insert(index, '\n');
for (int j = 0; j < wlen; j++)
{
index++;
sb.Insert(index, ' ');
}
index++;
sb.Insert(index, '}');
if (sb.Length > index + 1 && sb[index + 1] != ',' && sb[index + 1] != ';' && sb[index + 1] != ')' && sb[index + 1] != '}')
{
index++;
sb.Insert(index, '\n');
for (int j = 0; j < wlen; j++)
{
index++;
sb.Insert(index, ' ');
}
}
}
else if (item.CodeType == CodeType.Commas)
{
var s = 0;
var e = 0;
if ((i > 1 && !(codes[i - 1].CodeType == CodeType.SpaceWhite && codes[i - 2].CodeType == CodeType.CloseBraceToken)) || i < 2)
{
for (int j = i - 1; j >= 0; j--)
{//往前找空格和换行
var c = codes[j];
if (c.CodeType != CodeType.SpaceWhite)
{
break;
}
s += c.Length;
}
}
for (int j = i + 1; j < codes.Count; j++)
{//往后
var c = codes[j];
if (c.CodeType != CodeType.SpaceWhite)
{
i = j - 1;
break;
}
e += c.Length;
}
sb.Remove(index - s, e + s + 1);
index -= s;
sb.Insert(index, ',');
if (sb.Length > index + 1 && sb[index + 1] != '}' && sb[index + 1] != '{')
{
index++;
sb.Insert(index, '\n');
for (int j = 0; j < wlen; j++)
{
index++;
sb.Insert(index, ' ');
}
}
}
else if (item.CodeType == CodeType.Semicolon)
{
var s = 0;
var e = 0;
if ((i > 1 && !(codes[i - 1].CodeType == CodeType.SpaceWhite && codes[i - 2].CodeType == CodeType.CloseBraceToken)) || i < 2)
{
for (int j = i - 1; j >= 0; j--)
{//往前找空格和换行
var c = codes[j];
if (c.CodeType != CodeType.SpaceWhite)
{
break;
}
s += c.Length;
}
}
for (int j = i + 1; j < codes.Count; j++)
{//往后
var c = codes[j];
if (c.CodeType != CodeType.SpaceWhite)
{
i = j - 1;
break;
}
e += c.Length;
}
sb.Remove(index - s, e + s + 1);
index -= s;
sb.Insert(index, ';');
if (sb.Length > index + 1 && sb[index + 1] != '}')
{
index++;
sb.Insert(index, '\n');
for (int j = 0; j < wlen; j++)
{
index++;
sb.Insert(index, ' ');
}
}
}
index += item.Length;
}
textbox.Text = sb.ToString();
}
void testClick(CpfObject obj, RoutedEventArgs eventArgs)
{
}
Storyboard storyboard1;
RotateTransform rotateTransform = new RotateTransform();
void PlayAnimation(CpfObject obj, RoutedEventArgs eventArgs)
{
if (storyboard1 == null)
{
storyboard1 = new Storyboard
{
Timelines =
{
new Timeline(0.5f)
{
KeyFrames =
{
new KeyFrame<float>{ Property=nameof(RotateTransform.Angle), Value=180, AnimateMode= AnimateMode.EaseIn, Ease=new PowerEase() },
}
},
new Timeline(1)
{
KeyFrames =
{
new KeyFrame<float>{ Property=nameof(RotateTransform.Angle), Value=360, AnimateMode= AnimateMode.EaseInOut, Ease=new QuadraticEase() },
}
},
}
};
}
foreach (var item in (obj as UIElement).Parent.GetChildren().Where(a => a is SVG))
{
(item as UIElement).RenderTransform = rotateTransform;
}
storyboard1.Start(rotateTransform, TimeSpan.FromSeconds(1), 0);
}
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();
}
}
void AddRowClick(CpfObject obj, RoutedEventArgs eventArgs)
{
var model = DataContext as Model;
//var row = model.Data.GetDataTable().NewRow();
//for (int j = 0; j < 9; j++)
//{
// if (j != 1)
// {
// row[j] = 1;
// }
//}
//row[0] = 1 % 3;
//row[1] = true;
//model.Data.GetDataTable().Rows.Add(row);
//var data = new Collection<(string, bool, string, int, string, string, string, string, string)>();
Random random = new Random();
//for (int i = 0; i < 1; i++)
//{
var index = random.Next(100);
var row = (index.ToString(), index % 3 == 1, index.ToString(), index, index.ToString(), index.ToString(), index.ToString(), index.ToString(), index.ToString());
// data.Add(row);
//}
(model.Data as Collection<(string, bool, string, int, string, string, string, string, string)>).Insert(0, row);
}
void ClearData(CpfObject obj, RoutedEventArgs eventArgs)
{
var model = DataContext as Model;
//var row = model.Data.GetDataTable().NewRow();
//for (int j = 0; j < 9; j++)
//{
// if (j != 1)
// {
// row[j] = 1;
// }
//}
//row[0] = 1 % 3;
//row[1] = true;
//model.Data.GetDataTable().Rows.Add(row);
model.Data.Clear();
}
void MenuItemClick(CpfObject item, object e)
{
//Debug.WriteLine((item as MenuItem).Header);
//new Window { Width = 100, Height = 100, Background = "#f00" }.ShowDialogSync(this);
MessageBox.ShowSync("test");
}
}
enum CodeType
{
Other = 'A',
OpenBraceToken = '{',
CloseBraceToken = '}',
SpaceWhite = ' ',//\n\t\r
SingleQuotationMarks = '\'',
DoubleQuotationMarks = '"',
//Wrap = '\n',
Commas = ',',
Semicolon = ';',
OpenBracketToken = '(',
CloseBracketToken = ')',
//StartComment,// /*
//EndComment,// */
}
class Code
{
public static CodeType GetCodeType(char c)
{
switch (c)
{
case ',':
return CodeType.Commas;
case ';':
return CodeType.Semicolon;
case '"':
return CodeType.DoubleQuotationMarks;
case '\'':
return CodeType.SingleQuotationMarks;
case '\n':
//return CodeType.Wrap;
case '\r':
//return CodeType.Wrap;
case '\t':
case ' ':
return CodeType.SpaceWhite;
case '}':
return CodeType.CloseBraceToken;
case '{':
return CodeType.OpenBraceToken;
case ')':
return CodeType.CloseBracketToken;
case '(':
return CodeType.OpenBracketToken;
default:
return CodeType.Other;
}
}
public CodeType CodeType { get; set; }
public int Length { get; set; }
public override string ToString()
{
return CodeType.ToString() + " " + Length;
}
}
}