mirror of
https://gitee.com/csharpui/CPF.git
synced 2025-04-04 23:39:26 +08:00
2646 lines
124 KiB
C#
2646 lines
124 KiB
C#
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
|
||
{
|
||
|
||
}
|
||
},
|
||
});
|
||
//标题栏和按钮
|
||
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
|
||
{
|
||
|
||
},
|
||
new MenuItem
|
||
{
|
||
Header = "2",
|
||
Items=new MenuItem[]
|
||
{
|
||
new MenuItem
|
||
{
|
||
Header = "21",
|
||
Commands =
|
||
{
|
||
{
|
||
nameof(MenuItem.Click),
|
||
MenuItemClick
|
||
}
|
||
}
|
||
},
|
||
new MenuItem
|
||
{
|
||
Header = "22",
|
||
Items=new MenuItem[]
|
||
{
|
||
new MenuItem
|
||
{
|
||
Header = "221",
|
||
Commands =
|
||
{
|
||
{
|
||
nameof(MenuItem.Click),
|
||
MenuItemClick
|
||
}
|
||
}
|
||
},
|
||
new MenuItem
|
||
{
|
||
Header = "222",
|
||
Commands =
|
||
{
|
||
{
|
||
nameof(MenuItem.Click),
|
||
MenuItemClick
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
},
|
||
},
|
||
new MenuItem
|
||
{
|
||
Header = "3",
|
||
IsCheckable=true,
|
||
Items = new MenuItem[]
|
||
{
|
||
new MenuItem
|
||
{
|
||
Header = "31",
|
||
Commands =
|
||
{
|
||
{
|
||
nameof(MenuItem.Click),
|
||
MenuItemClick
|
||
}
|
||
}
|
||
},
|
||
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)"))
|
||
},
|
||
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
|
||
{
|
||
MarginLeft = 57,
|
||
MarginTop = 63,//Background="#aaa",
|
||
Name="listbox",
|
||
IsVirtualizing=true,//VirtualizationMode= VirtualizationMode.Recycling,
|
||
SelectionMode= SelectionMode.Extended,
|
||
Width=200,
|
||
Height=300,//Items=list,
|
||
ItemTemplate=new ListBoxItem
|
||
{
|
||
Width="100%",
|
||
FontSize=22,
|
||
Tag=this,
|
||
//Template=(e,c)=>{
|
||
// c.Add(new Border
|
||
// {
|
||
// Background="#f00",
|
||
// Height = "100%",
|
||
// Width = "100%",
|
||
// BorderFill = null,
|
||
// Name = "contentPresenter",
|
||
// PresenterFor = this
|
||
// });
|
||
//}
|
||
},
|
||
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="排序" },
|
||
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"
|
||
// }
|
||
// }
|
||
// },
|
||
//},
|
||
},
|
||
}
|
||
}
|
||
}
|
||
},
|
||
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)=>
|
||
{
|
||
//(e as DragEventArgs).DragEffects= DragDropEffects.Link;
|
||
}
|
||
},
|
||
}
|
||
},
|
||
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
|
||
{
|
||
|
||
}
|
||
},
|
||
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
|
||
{
|
||
|
||
}
|
||
},
|
||
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
|
||
{
|
||
|
||
},
|
||
},
|
||
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;
|
||
}
|
||
}
|
||
}
|