diff --git a/README-cn.md b/README-cn.md
index 200f12abb..a64f6e2c6 100644
--- a/README-cn.md
+++ b/README-cn.md
@@ -75,6 +75,8 @@
+
+
## Special thanks to
@@ -123,6 +125,10 @@ Step 4: Enjoy coding
## Latest examples
+### FlexPanel
+
+![FlexPanel](https://gitee.com/handyorg/HandyOrgResource/raw/master/HandyControl/Resources/FlexPanel.gif)
+
### CheckComboBox
![CheckComboBox](https://gitee.com/handyorg/HandyOrgResource/raw/master/HandyControl/Resources/CheckComboBox.png)
@@ -139,12 +145,12 @@ Step 4: Enjoy coding
![Screenshot](https://gitee.com/handyorg/HandyOrgResource/raw/master/HandyControl/Resources/Screenshot.png)
+## History publication
+
### GooeyEffect
![GooeyEffect](https://gitee.com/handyorg/HandyOrgResource/raw/master/HandyControl/Resources/GooeyEffect.gif)
-## History publication
-
### GlowWindow
![GlowWindow](https://gitee.com/handyorg/HandyOrgResource/raw/master/HandyControl/Resources/GlowWindow.png)
diff --git a/README.md b/README.md
index 9adaea36d..a17b48dfb 100644
--- a/README.md
+++ b/README.md
@@ -66,6 +66,8 @@ This project is based on [HandyControl](https://github.com/handyOrg/HandyControl
+
+
## Special thanks to
@@ -114,6 +116,10 @@ Step 4: Enjoy coding
## Latest examples
+### FlexPanel
+
+![FlexPanel](https://raw.githubusercontent.com/HandyOrg/HandyOrgResource/master/HandyControl/Resources/FlexPanel.gif)
+
### CheckComboBox
![CheckComboBox](https://raw.githubusercontent.com/HandyOrg/HandyOrgResource/master/HandyControl/Resources/CheckComboBox.png)
@@ -130,12 +136,12 @@ Step 4: Enjoy coding
![Screenshot](https://raw.githubusercontent.com/HandyOrg/HandyOrgResource/master/HandyControl/Resources/Screenshot.png)
+## History publication
+
### GooeyEffect
![GooeyEffect](https://raw.githubusercontent.com/HandyOrg/HandyOrgResource/master/HandyControl/Resources/GooeyEffect.gif)
-## History publication
-
### GlowWindow
![GlowWindow](https://raw.githubusercontent.com/HandyOrg/HandyOrgResource/master/HandyControl/Resources/GlowWindow.png)
diff --git a/src/HandyControl.sln b/src/HandyControl.sln
index bee946d82..36dc8888d 100644
--- a/src/HandyControl.sln
+++ b/src/HandyControl.sln
@@ -3,9 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.28729.10
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControl_Net_GE45", "Net_GE45\HandyControl_Net_GE45\HandyControl_Net_GE45.csproj", "{DC966E3D-BCFF-4652-98CF-070E5494749A}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HandyControl_Net_GE45", "Net_GE45\HandyControl_Net_GE45\HandyControl_Net_GE45.csproj", "{DC966E3D-BCFF-4652-98CF-070E5494749A}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControlDemo_Net_GE45", "Net_GE45\HandyControlDemo_Net_GE45\HandyControlDemo_Net_GE45.csproj", "{9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HandyControlDemo_Net_GE45", "Net_GE45\HandyControlDemo_Net_GE45\HandyControlDemo_Net_GE45.csproj", "{9A7B52E6-94BB-4E7E-BB6A-7CF6761B79A7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Net_GE45", "Net_GE45", "{2F551C62-77F7-4FA5-8AD7-FCF53E92AE08}"
EndProject
@@ -17,11 +17,11 @@ Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "HandyControlDemo_Shared", "
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Net_40", "Net_40", "{35E3F9C0-8924-4536-BE09-F3761FDBF066}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControl_Net_40", "Net_40\HandyControl_Net_40\HandyControl_Net_40.csproj", "{32204503-2EF0-4681-AE13-AA1FEB6C658A}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HandyControl_Net_40", "Net_40\HandyControl_Net_40\HandyControl_Net_40.csproj", "{32204503-2EF0-4681-AE13-AA1FEB6C658A}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControlDemo_Net_40", "Net_40\HandyControlDemo_Net_40\HandyControlDemo_Net_40.csproj", "{D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HandyControlDemo_Net_40", "Net_40\HandyControlDemo_Net_40\HandyControlDemo_Net_40.csproj", "{D8AE88F8-C36B-4D10-A7F9-22FFCFBA5231}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HandyControlDemo_Code", "Shared\HandyControlDemo_Code\HandyControlDemo_Code.csproj", "{D8A4748C-0500-4F63-BC47-3506658C68F7}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HandyControlDemo_Code", "Shared\HandyControlDemo_Code\HandyControlDemo_Code.csproj", "{D8A4748C-0500-4F63-BC47-3506658C68F7}"
EndProject
Global
GlobalSection(SharedMSBuildProjectFiles) = preSolution
diff --git a/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj b/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj
index 404f56c4c..27ea16cb6 100644
--- a/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj
+++ b/src/Net_40/HandyControlDemo_Net_40/HandyControlDemo_Net_40.csproj
@@ -279,6 +279,9 @@
Resources\Img\LeftMainContent\Label_16x.png
+
+ Resources\Img\LeftMainContent\layout-FlexLayout-16.png
+
Resources\Img\LeftMainContent\LinearCarousel_16x.png
diff --git a/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj b/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
index f0d400249..a07b38480 100644
--- a/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
+++ b/src/Net_GE45/HandyControlDemo_Net_GE45/HandyControlDemo_Net_GE45.csproj
@@ -279,6 +279,9 @@
Resources\Img\LeftMainContent\Label_16x.png
+
+ Resources\Img\LeftMainContent\layout-FlexLayout-16.png
+
Resources\Img\LeftMainContent\LinearCarousel_16x.png
diff --git a/src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj b/src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj
index 8115bf76f..cf00ead44 100644
--- a/src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj
+++ b/src/Shared/HandyControlDemo_Code/HandyControlDemo_Code.csproj
@@ -499,6 +499,10 @@
UserControl\Controls\DrawerDemoCtl.xaml.cs
DrawerDemoCtl.xaml
+
+ UserControl\Controls\FlexPanelDemoCtl.xaml.cs
+ FlexPanelDemoCtl.xaml
+
UserControl\Controls\FlipClockDemoCtl.xaml.cs
FlipClockDemoCtl.xaml
diff --git a/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json b/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json
index 9d2b67865..2966dda65 100644
--- a/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json
+++ b/src/Shared/HandyControlDemo_Shared/Data/DemoInfo.json
@@ -79,6 +79,7 @@
[ "Divider", "DividerDemoCtl", "DottedSplitter_16x", "" ],
[ "CirclePanel", "CirclePanelDemoCtl", "ColorWheel_16x", "" ],
[ "Grid", "GridDemoCtl", "GridPane_16x", "" ],
+ [ "FlexPanel", "FlexPanelDemoCtl", "layout-FlexLayout-16", "1" ],
[ "RelativePanel", "RelativePanelDemoCtl", "TransformRelative_16x", "" ],
[ "WaterfallPanel", "WaterfallPanelDemoCtl", "Panel_16x", "" ],
[ "HoneycombPanel", "HoneycombPanelDemoCtl", "PolygonHexagon_16x", "" ],
diff --git a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
index bf10336f0..25bb99183 100644
--- a/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
+++ b/src/Shared/HandyControlDemo_Shared/HandyControlDemo_Shared.projitems
@@ -60,6 +60,9 @@
TextDialogWithTimer.xaml
+
+ FlexPanelDemoCtl.xaml
+
ImageSelectorDemoCtl.xaml
@@ -533,6 +536,10 @@
Designer
MSBuild:Compile
+
+ Designer
+ MSBuild:Compile
+
Designer
MSBuild:Compile
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs
index 8d5cf60a7..2bacdbb5c 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.Designer.cs
@@ -8,10 +8,11 @@
//
//------------------------------------------------------------------------------
-namespace HandyControlDemo.Properties.Langs {
+namespace HandyControlDemo.Properties.Langs
+{
using System;
-
-
+
+
///
/// A strongly-typed resource class, for looking up localized strings, etc.
///
@@ -22,247 +23,301 @@ namespace HandyControlDemo.Properties.Langs {
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- public class Lang {
-
+ public class Lang
+ {
+
private static global::System.Resources.ResourceManager resourceMan;
-
+
private static global::System.Globalization.CultureInfo resourceCulture;
-
+
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
- internal Lang() {
+ internal Lang()
+ {
}
-
+
///
/// Returns the cached ResourceManager instance used by this class.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- public static global::System.Resources.ResourceManager ResourceManager {
- get {
- if (object.ReferenceEquals(resourceMan, null)) {
+ public static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if (object.ReferenceEquals(resourceMan, null))
+ {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HandyControlDemo.Properties.Langs.Lang", typeof(Lang).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
-
+
///
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
///
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
- public static global::System.Globalization.CultureInfo Culture {
- get {
+ public static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
return resourceCulture;
}
- set {
+ set
+ {
resourceCulture = value;
}
}
-
+
///
/// Looks up a localized string similar to 关于.
///
- public static string About {
- get {
+ public static string About
+ {
+ get
+ {
return ResourceManager.GetString("About", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 添加项.
///
- public static string AddItem {
- get {
+ public static string AddItem
+ {
+ get
+ {
return ResourceManager.GetString("AddItem", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 动画路径.
///
- public static string AnimationPath {
- get {
+ public static string AnimationPath
+ {
+ get
+ {
return ResourceManager.GetString("AnimationPath", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 托盘图标已打开,将隐藏窗口而不是关闭程序.
///
- public static string AppClosingTip {
- get {
+ public static string AppClosingTip
+ {
+ get
+ {
return ResourceManager.GetString("AppClosingTip", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 询问.
///
- public static string Ask {
- get {
+ public static string Ask
+ {
+ get
+ {
return ResourceManager.GetString("Ask", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 标记.
///
- public static string Badge {
- get {
+ public static string Badge
+ {
+ get
+ {
return ResourceManager.GetString("Badge", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 填写基本信息.
///
- public static string BasicInfo {
- get {
+ public static string BasicInfo
+ {
+ get
+ {
return ResourceManager.GetString("BasicInfo", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 基础布局.
///
- public static string BasicLayout {
- get {
+ public static string BasicLayout
+ {
+ get
+ {
return ResourceManager.GetString("BasicLayout", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 闪烁.
///
- public static string Blink {
- get {
+ public static string Blink
+ {
+ get
+ {
return ResourceManager.GetString("Blink", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 博客.
///
- public static string Blog {
- get {
+ public static string Blog
+ {
+ get
+ {
return ResourceManager.GetString("Blog", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 边框.
///
- public static string Border {
- get {
+ public static string Border
+ {
+ get
+ {
return ResourceManager.GetString("Border", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 画刷.
///
- public static string Brush {
- get {
+ public static string Brush
+ {
+ get
+ {
return ResourceManager.GetString("Brush", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 按钮.
///
- public static string Button {
- get {
+ public static string Button
+ {
+ get
+ {
return ResourceManager.GetString("Button", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 自定义按钮.
///
- public static string ButtonCustom {
- get {
+ public static string ButtonCustom
+ {
+ get
+ {
return ResourceManager.GetString("ButtonCustom", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 按钮组.
///
- public static string ButtonGroup {
- get {
+ public static string ButtonGroup
+ {
+ get
+ {
return ResourceManager.GetString("ButtonGroup", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 日历.
///
- public static string Calendar {
- get {
+ public static string Calendar
+ {
+ get
+ {
return ResourceManager.GetString("Calendar", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 带时钟的日历.
///
- public static string CalendarWithClock {
- get {
+ public static string CalendarWithClock
+ {
+ get
+ {
return ResourceManager.GetString("CalendarWithClock", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 卡片.
///
- public static string Card {
- get {
+ public static string Card
+ {
+ get
+ {
return ResourceManager.GetString("Card", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 轮播.
///
- public static string Carousel {
- get {
+ public static string Carousel
+ {
+ get
+ {
return ResourceManager.GetString("Carousel", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 是否重启以更改语言?.
///
- public static string ChangeLangAsk {
- get {
+ public static string ChangeLangAsk
+ {
+ get
+ {
return ResourceManager.GetString("ChangeLangAsk", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 对话气泡.
///
- public static string ChatBubble {
- get {
+ public static string ChatBubble
+ {
+ get
+ {
return ResourceManager.GetString("ChatBubble", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 讨论室.
///
- public static string Chatroom {
- get {
+ public static string Chatroom
+ {
+ get
+ {
return ResourceManager.GetString("Chatroom", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 复选框.
///
- public static string CheckBox {
- get {
+ public static string CheckBox
+ {
+ get
+ {
return ResourceManager.GetString("CheckBox", resourceCulture);
}
}
@@ -281,404 +336,505 @@ public static string CheckComboBox
///
/// Looks up a localized string similar to 圆形布局.
///
- public static string CirclePanel {
- get {
+ public static string CirclePanel
+ {
+ get
+ {
return ResourceManager.GetString("CirclePanel", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 清空.
///
- public static string Clear {
- get {
+ public static string Clear
+ {
+ get
+ {
return ResourceManager.GetString("Clear", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 点击计数.
///
- public static string Click2Count {
- get {
+ public static string Click2Count
+ {
+ get
+ {
return ResourceManager.GetString("Click2Count", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 时钟.
///
- public static string Clock {
- get {
+ public static string Clock
+ {
+ get
+ {
return ResourceManager.GetString("Clock", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 颜色拾取器.
///
- public static string ColorPicker {
- get {
+ public static string ColorPicker
+ {
+ get
+ {
return ResourceManager.GetString("ColorPicker", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 分栏偏移.
///
- public static string ColumnOffset {
- get {
+ public static string ColumnOffset
+ {
+ get
+ {
return ResourceManager.GetString("ColumnOffset", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 分栏间隔.
///
- public static string ColumnSpacing {
- get {
+ public static string ColumnSpacing
+ {
+ get
+ {
return ResourceManager.GetString("ColumnSpacing", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 组合框.
///
- public static string ComboBox {
- get {
+ public static string ComboBox
+ {
+ get
+ {
return ResourceManager.GetString("ComboBox", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 敬请期待.
///
- public static string ComingSoon {
- get {
+ public static string ComingSoon
+ {
+ get
+ {
return ResourceManager.GetString("ComingSoon", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 评论.
///
- public static string Comment {
- get {
+ public static string Comment
+ {
+ get
+ {
return ResourceManager.GetString("Comment", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 一般.
///
- public static string Common {
- get {
+ public static string Common
+ {
+ get
+ {
return ResourceManager.GetString("Common", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 对比滑块.
///
- public static string CompareSlider {
- get {
+ public static string CompareSlider
+ {
+ get
+ {
return ResourceManager.GetString("CompareSlider", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 完成.
///
- public static string Complete {
- get {
+ public static string Complete
+ {
+ get
+ {
return ResourceManager.GetString("Complete", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 这是内容.
///
- public static string ContentDemoStr {
- get {
+ public static string ContentDemoStr
+ {
+ get
+ {
return ResourceManager.GetString("ContentDemoStr", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 贡献者.
///
- public static string Contributors {
- get {
+ public static string Contributors
+ {
+ get
+ {
return ResourceManager.GetString("Contributors", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 控件.
///
- public static string Controls {
- get {
+ public static string Controls
+ {
+ get
+ {
return ResourceManager.GetString("Controls", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 封面流.
///
- public static string CoverFlow {
- get {
+ public static string CoverFlow
+ {
+ get
+ {
return ResourceManager.GetString("CoverFlow", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 封面视图.
///
- public static string CoverView {
- get {
+ public static string CoverView
+ {
+ get
+ {
return ResourceManager.GetString("CoverView", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 危险.
///
- public static string Danger {
- get {
+ public static string Danger
+ {
+ get
+ {
return ResourceManager.GetString("Danger", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 数据表格.
///
- public static string DataGrid {
- get {
+ public static string DataGrid
+ {
+ get
+ {
return ResourceManager.GetString("DataGrid", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 日期选择器.
///
- public static string DatePicker {
- get {
+ public static string DatePicker
+ {
+ get
+ {
return ResourceManager.GetString("DatePicker", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 日期时间选择器.
///
- public static string DateTimePicker {
- get {
+ public static string DateTimePicker
+ {
+ get
+ {
return ResourceManager.GetString("DateTimePicker", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 默认.
///
- public static string Default {
- get {
+ public static string Default
+ {
+ get
+ {
return ResourceManager.GetString("Default", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 示例.
///
- public static string Demo {
- get {
+ public static string Demo
+ {
+ get
+ {
return ResourceManager.GetString("Demo", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 对话框.
///
- public static string Dialog {
- get {
+ public static string Dialog
+ {
+ get
+ {
return ResourceManager.GetString("Dialog", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 对话框示例.
///
- public static string DialogDemo {
- get {
+ public static string DialogDemo
+ {
+ get
+ {
return ResourceManager.GetString("DialogDemo", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 分割线.
///
- public static string Divider {
- get {
+ public static string Divider
+ {
+ get
+ {
return ResourceManager.GetString("Divider", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 中文文档.
///
- public static string Doc_cn {
- get {
+ public static string Doc_cn
+ {
+ get
+ {
return ResourceManager.GetString("Doc_cn", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 英文文档.
///
- public static string Doc_en {
- get {
+ public static string Doc_en
+ {
+ get
+ {
return ResourceManager.GetString("Doc_en", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 文献资料.
///
- public static string Documentation {
- get {
+ public static string Documentation
+ {
+ get
+ {
return ResourceManager.GetString("Documentation", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 在这里拖拽.
///
- public static string DragHere {
- get {
+ public static string DragHere
+ {
+ get
+ {
return ResourceManager.GetString("DragHere", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 抽屉.
///
- public static string Drawer {
- get {
+ public static string Drawer
+ {
+ get
+ {
return ResourceManager.GetString("Drawer", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 效果.
///
- public static string Effects {
- get {
+ public static string Effects
+ {
+ get
+ {
return ResourceManager.GetString("Effects", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 邮箱.
///
- public static string Email {
- get {
+ public static string Email
+ {
+ get
+ {
return ResourceManager.GetString("Email", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 错误.
///
- public static string Error {
- get {
+ public static string Error
+ {
+ get
+ {
return ResourceManager.GetString("Error", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 退出.
///
- public static string Exit {
- get {
+ public static string Exit
+ {
+ get
+ {
return ResourceManager.GetString("Exit", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 展开框.
///
- public static string Expander {
- get {
+ public static string Expander
+ {
+ get
+ {
return ResourceManager.GetString("Expander", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 严重.
///
- public static string Fatal {
- get {
+ public static string Fatal
+ {
+ get
+ {
return ResourceManager.GetString("Fatal", resourceCulture);
}
}
-
+
+ ///
+ /// 查找类似 弹性盒子 的本地化字符串。
+ ///
+ public static string FlexPanel
+ {
+ get
+ {
+ return ResourceManager.GetString("FlexPanel", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to 翻页时钟.
///
- public static string FlipClock {
- get {
+ public static string FlipClock
+ {
+ get
+ {
return ResourceManager.GetString("FlipClock", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 漂浮块.
///
- public static string FloatingBlock {
- get {
+ public static string FloatingBlock
+ {
+ get
+ {
return ResourceManager.GetString("FloatingBlock", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 流文档.
///
- public static string FlowDocument {
- get {
+ public static string FlowDocument
+ {
+ get
+ {
return ResourceManager.GetString("FlowDocument", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 流文档单页视图.
///
- public static string FlowDocumentPageViewer {
- get {
+ public static string FlowDocumentPageViewer
+ {
+ get
+ {
return ResourceManager.GetString("FlowDocumentPageViewer", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 流文档查看器.
///
- public static string FlowDocumentReader {
- get {
+ public static string FlowDocumentReader
+ {
+ get
+ {
return ResourceManager.GetString("FlowDocumentReader", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 流文档滚动视图.
///
- public static string FlowDocumentScrollViewer {
- get {
+ public static string FlowDocumentScrollViewer
+ {
+ get
+ {
return ResourceManager.GetString("FlowDocumentScrollViewer", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 导航框架.
///
- public static string Frame {
- get {
+ public static string Frame
+ {
+ get
+ {
return ResourceManager.GetString("Frame", resourceCulture);
}
}
@@ -694,179 +850,219 @@ public static string Geometry
///
/// Looks up a localized string similar to Gif图片.
///
- public static string GifImage {
- get {
+ public static string GifImage
+ {
+ get
+ {
return ResourceManager.GetString("GifImage", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 回到顶部.
///
- public static string GotoTop {
- get {
+ public static string GotoTop
+ {
+ get
+ {
return ResourceManager.GetString("GotoTop", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 头像.
///
- public static string Gravatar {
- get {
+ public static string Gravatar
+ {
+ get
+ {
return ResourceManager.GetString("Gravatar", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 栅格.
///
- public static string Grid {
- get {
+ public static string Grid
+ {
+ get
+ {
return ResourceManager.GetString("Grid", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 分组框.
///
- public static string GroupBox {
- get {
+ public static string GroupBox
+ {
+ get
+ {
return ResourceManager.GetString("GroupBox", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 组数.
///
- public static string Groups {
- get {
+ public static string Groups
+ {
+ get
+ {
return ResourceManager.GetString("Groups", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 信息通知.
///
- public static string Growl {
- get {
+ public static string Growl
+ {
+ get
+ {
return ResourceManager.GetString("Growl", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 检测到有新版本!是否更新?.
///
- public static string GrowlAsk {
- get {
+ public static string GrowlAsk
+ {
+ get
+ {
return ResourceManager.GetString("GrowlAsk", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 消息通知示例.
///
- public static string GrowlDemo {
- get {
+ public static string GrowlDemo
+ {
+ get
+ {
return ResourceManager.GetString("GrowlDemo", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 连接失败,请检查网络!.
///
- public static string GrowlError {
- get {
+ public static string GrowlError
+ {
+ get
+ {
return ResourceManager.GetString("GrowlError", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 程序已崩溃~~~.
///
- public static string GrowlFatal {
- get {
+ public static string GrowlFatal
+ {
+ get
+ {
return ResourceManager.GetString("GrowlFatal", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 今天的天气不错~~~.
///
- public static string GrowlInfo {
- get {
+ public static string GrowlInfo
+ {
+ get
+ {
return ResourceManager.GetString("GrowlInfo", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 文件保存成功!.
///
- public static string GrowlSuccess {
- get {
+ public static string GrowlSuccess
+ {
+ get
+ {
return ResourceManager.GetString("GrowlSuccess", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 磁盘空间快要满了!.
///
- public static string GrowlWarning {
- get {
+ public static string GrowlWarning
+ {
+ get
+ {
return ResourceManager.GetString("GrowlWarning", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 阴影画笔生成器.
///
- public static string HatchBrushGenerator {
- get {
+ public static string HatchBrushGenerator
+ {
+ get
+ {
return ResourceManager.GetString("HatchBrushGenerator", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 蜂窝布局.
///
- public static string HoneycombPanel {
- get {
+ public static string HoneycombPanel
+ {
+ get
+ {
return ResourceManager.GetString("HoneycombPanel", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 混合布局.
///
- public static string HybridLayout {
- get {
+ public static string HybridLayout
+ {
+ get
+ {
return ResourceManager.GetString("HybridLayout", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 忽略.
///
- public static string Ignore {
- get {
+ public static string Ignore
+ {
+ get
+ {
return ResourceManager.GetString("Ignore", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 图片块.
///
- public static string ImageBlock {
- get {
+ public static string ImageBlock
+ {
+ get
+ {
return ResourceManager.GetString("ImageBlock", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 图片浏览器.
///
- public static string ImageBrowser {
- get {
+ public static string ImageBrowser
+ {
+ get
+ {
return ResourceManager.GetString("ImageBrowser", resourceCulture);
}
}
@@ -885,354 +1081,432 @@ public static string ImageSelector
///
/// Looks up a localized string similar to 索引.
///
- public static string Index {
- get {
+ public static string Index
+ {
+ get
+ {
return ResourceManager.GetString("Index", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 信息.
///
- public static string Info {
- get {
+ public static string Info
+ {
+ get
+ {
return ResourceManager.GetString("Info", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 可交互对话框.
///
- public static string InteractiveDialog {
- get {
+ public static string InteractiveDialog
+ {
+ get
+ {
return ResourceManager.GetString("InteractiveDialog", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 不是手机号码.
///
- public static string IsNotPhone {
- get {
+ public static string IsNotPhone
+ {
+ get
+ {
return ResourceManager.GetString("IsNotPhone", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 标签.
///
- public static string Label {
- get {
+ public static string Label
+ {
+ get
+ {
return ResourceManager.GetString("Label", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 查找类似 {0} 的本地化字符串。.
///
- public static string LangComment {
- get {
+ public static string LangComment
+ {
+ get
+ {
return ResourceManager.GetString("LangComment", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 列表框.
///
- public static string ListBox {
- get {
+ public static string ListBox
+ {
+ get
+ {
return ResourceManager.GetString("ListBox", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 列表视图.
///
- public static string ListView {
- get {
+ public static string ListView
+ {
+ get
+ {
return ResourceManager.GetString("ListView", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 加载条.
///
- public static string Loading {
- get {
+ public static string Loading
+ {
+ get
+ {
return ResourceManager.GetString("Loading", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 放大镜.
///
- public static string Magnifier {
- get {
+ public static string Magnifier
+ {
+ get
+ {
return ResourceManager.GetString("Magnifier", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 菜单.
///
- public static string Menu {
- get {
+ public static string Menu
+ {
+ get
+ {
return ResourceManager.GetString("Menu", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 消息框.
///
- public static string MessageBox {
- get {
+ public static string MessageBox
+ {
+ get
+ {
return ResourceManager.GetString("MessageBox", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 变形动画.
///
- public static string Morphing_Animation {
- get {
+ public static string Morphing_Animation
+ {
+ get
+ {
return ResourceManager.GetString("Morphing Animation", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 名称.
///
- public static string Name {
- get {
+ public static string Name
+ {
+ get
+ {
return ResourceManager.GetString("Name", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 新建窗口.
///
- public static string NewWindow {
- get {
+ public static string NewWindow
+ {
+ get
+ {
return ResourceManager.GetString("NewWindow", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 下一步.
///
- public static string Next {
- get {
+ public static string Next
+ {
+ get
+ {
return ResourceManager.GetString("Next", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 桌面通知.
///
- public static string Notification {
- get {
+ public static string Notification
+ {
+ get
+ {
return ResourceManager.GetString("Notification", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 托盘图标.
///
- public static string NotifyIcon {
- get {
+ public static string NotifyIcon
+ {
+ get
+ {
return ResourceManager.GetString("NotifyIcon", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 数值选择控件.
///
- public static string NumericUpDown {
- get {
+ public static string NumericUpDown
+ {
+ get
+ {
return ResourceManager.GetString("NumericUpDown", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 关.
///
- public static string Off {
- get {
+ public static string Off
+ {
+ get
+ {
return ResourceManager.GetString("Off", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 确定.
///
- public static string Ok {
- get {
+ public static string Ok
+ {
+ get
+ {
return ResourceManager.GetString("Ok", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 开.
///
- public static string On {
- get {
+ public static string On
+ {
+ get
+ {
return ResourceManager.GetString("On", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 点击打开背景模糊窗口.
///
- public static string OpenBlurWindow {
- get {
+ public static string OpenBlurWindow
+ {
+ get
+ {
return ResourceManager.GetString("OpenBlurWindow", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 点击打开常规窗口.
///
- public static string OpenCommonWindow {
- get {
+ public static string OpenCommonWindow
+ {
+ get
+ {
return ResourceManager.GetString("OpenCommonWindow", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 点击打开自定义内容窗口.
///
- public static string OpenCustomContentWindow {
- get {
+ public static string OpenCustomContentWindow
+ {
+ get
+ {
return ResourceManager.GetString("OpenCustomContentWindow", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 点击打开自定义消息窗口.
///
- public static string OpenCustomMessageWindow {
- get {
+ public static string OpenCustomMessageWindow
+ {
+ get
+ {
return ResourceManager.GetString("OpenCustomMessageWindow", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 点击打开自定义非客户端区域窗口.
///
- public static string OpenCustomNonClientAreaWindow {
- get {
+ public static string OpenCustomNonClientAreaWindow
+ {
+ get
+ {
return ResourceManager.GetString("OpenCustomNonClientAreaWindow", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 点击打开辉光窗口.
///
- public static string OpenGlowWindow {
- get {
+ public static string OpenGlowWindow
+ {
+ get
+ {
return ResourceManager.GetString("OpenGlowWindow", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 点击打开图片浏览器.
///
- public static string OpenImageBrowser {
- get {
+ public static string OpenImageBrowser
+ {
+ get
+ {
return ResourceManager.GetString("OpenImageBrowser", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 点击打开消息窗口.
///
- public static string OpenMessageWindow {
- get {
+ public static string OpenMessageWindow
+ {
+ get
+ {
return ResourceManager.GetString("OpenMessageWindow", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 点击打开鼠标跟随窗口.
///
- public static string OpenMouseFollowWindow {
- get {
+ public static string OpenMouseFollowWindow
+ {
+ get
+ {
return ResourceManager.GetString("OpenMouseFollowWindow", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 点击打开原生常规窗口.
///
- public static string OpenNativeCommonWindow {
- get {
+ public static string OpenNativeCommonWindow
+ {
+ get
+ {
return ResourceManager.GetString("OpenNativeCommonWindow", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 点击打开导航窗口.
///
- public static string OpenNavigationWindow {
- get {
+ public static string OpenNavigationWindow
+ {
+ get
+ {
return ResourceManager.GetString("OpenNavigationWindow", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 打开无非客户端区域可拖拽窗口.
///
- public static string OpenNoNonClientAreaDragableWindow {
- get {
+ public static string OpenNoNonClientAreaDragableWindow
+ {
+ get
+ {
return ResourceManager.GetString("OpenNoNonClientAreaDragableWindow", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 打开面板.
///
- public static string OpenPanel {
- get {
+ public static string OpenPanel
+ {
+ get
+ {
return ResourceManager.GetString("OpenPanel", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 打开精灵.
///
- public static string OpenSprite {
- get {
+ public static string OpenSprite
+ {
+ get
+ {
return ResourceManager.GetString("OpenSprite", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 轮廓文本.
///
- public static string OutlineText {
- get {
+ public static string OutlineText
+ {
+ get
+ {
return ResourceManager.GetString("OutlineText", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 页码条.
///
- public static string Pagination {
- get {
+ public static string Pagination
+ {
+ get
+ {
return ResourceManager.GetString("Pagination", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 密码框.
///
- public static string PasswordBox {
- get {
+ public static string PasswordBox
+ {
+ get
+ {
return ResourceManager.GetString("PasswordBox", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to PersianToolkit.
///
@@ -1245,134 +1519,164 @@ public static string PersianToolkit {
///
/// Looks up a localized string similar to PIN码框.
///
- public static string PinBox {
- get {
+ public static string PinBox
+ {
+ get
+ {
return ResourceManager.GetString("PinBox", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 请输入....
///
- public static string PleaseInput {
- get {
+ public static string PleaseInput
+ {
+ get
+ {
return ResourceManager.GetString("PleaseInput", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 请稍后....
///
- public static string PleaseWait {
- get {
+ public static string PleaseWait
+ {
+ get
+ {
return ResourceManager.GetString("PleaseWait", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 请输入内容.
///
- public static string PlsEnterContent {
- get {
+ public static string PlsEnterContent
+ {
+ get
+ {
return ResourceManager.GetString("PlsEnterContent", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 请输入邮箱.
///
- public static string PlsEnterEmail {
- get {
+ public static string PlsEnterEmail
+ {
+ get
+ {
return ResourceManager.GetString("PlsEnterEmail", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 请输入关键字.
///
- public static string PlsEnterKey {
- get {
+ public static string PlsEnterKey
+ {
+ get
+ {
return ResourceManager.GetString("PlsEnterKey", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 气泡提示.
///
- public static string Poptip {
- get {
+ public static string Poptip
+ {
+ get
+ {
return ResourceManager.GetString("Poptip", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 上左;上边;上右;右上;右边;右下;下右;下边;下左;左下;左边;左上.
///
- public static string PoptipPositionStr {
- get {
+ public static string PoptipPositionStr
+ {
+ get
+ {
return ResourceManager.GetString("PoptipPositionStr", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 实用例子.
///
- public static string PracticalDemos {
- get {
+ public static string PracticalDemos
+ {
+ get
+ {
return ResourceManager.GetString("PracticalDemos", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 上一步.
///
- public static string Prev {
- get {
+ public static string Prev
+ {
+ get
+ {
return ResourceManager.GetString("Prev", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 预览滑块.
///
- public static string PreviewSlider {
- get {
+ public static string PreviewSlider
+ {
+ get
+ {
return ResourceManager.GetString("PreviewSlider", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 主要.
///
- public static string Primary {
- get {
+ public static string Primary
+ {
+ get
+ {
return ResourceManager.GetString("Primary", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 进度条.
///
- public static string ProgressBar {
- get {
+ public static string ProgressBar
+ {
+ get
+ {
return ResourceManager.GetString("ProgressBar", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 进度按钮.
///
- public static string ProgressButton {
- get {
+ public static string ProgressButton
+ {
+ get
+ {
return ResourceManager.GetString("ProgressButton", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 项目.
///
- public static string Project {
- get {
+ public static string Project
+ {
+ get
+ {
return ResourceManager.GetString("Project", resourceCulture);
}
}
@@ -1391,620 +1695,758 @@ public static string PropertyGrid
///
/// Looks up a localized string similar to 按住说话.
///
- public static string PushToTalk {
- get {
+ public static string PushToTalk
+ {
+ get
+ {
return ResourceManager.GetString("PushToTalk", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to QQ群.
///
- public static string QQGroup {
- get {
+ public static string QQGroup
+ {
+ get
+ {
return ResourceManager.GetString("QQGroup", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 单选按钮.
///
- public static string RadioButton {
- get {
+ public static string RadioButton
+ {
+ get
+ {
return ResourceManager.GetString("RadioButton", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 范围滑块.
///
- public static string RangeSlider {
- get {
+ public static string RangeSlider
+ {
+ get
+ {
return ResourceManager.GetString("RangeSlider", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 评分.
///
- public static string Rate {
- get {
+ public static string Rate
+ {
+ get
+ {
return ResourceManager.GetString("Rate", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 群友推荐.
///
- public static string Recommendation {
- get {
+ public static string Recommendation
+ {
+ get
+ {
return ResourceManager.GetString("Recommendation", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 注册.
///
- public static string Register {
- get {
+ public static string Register
+ {
+ get
+ {
return ResourceManager.GetString("Register", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 相对布局.
///
- public static string RelativePanel {
- get {
+ public static string RelativePanel
+ {
+ get
+ {
return ResourceManager.GetString("RelativePanel", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 备注.
///
- public static string Remark {
- get {
+ public static string Remark
+ {
+ get
+ {
return ResourceManager.GetString("Remark", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 删除项.
///
- public static string RemoveItem {
- get {
+ public static string RemoveItem
+ {
+ get
+ {
return ResourceManager.GetString("RemoveItem", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 重复按钮.
///
- public static string RepeatButton {
- get {
+ public static string RepeatButton
+ {
+ get
+ {
return ResourceManager.GetString("RepeatButton", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 回复.
///
- public static string Reply {
- get {
+ public static string Reply
+ {
+ get
+ {
return ResourceManager.GetString("Reply", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 代码仓库.
///
- public static string Repository {
- get {
+ public static string Repository
+ {
+ get
+ {
return ResourceManager.GetString("Repository", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 响应式布局.
///
- public static string ResponsiveLayout {
- get {
+ public static string ResponsiveLayout
+ {
+ get
+ {
return ResourceManager.GetString("ResponsiveLayout", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 富文本框.
///
- public static string RichTextBox {
- get {
+ public static string RichTextBox
+ {
+ get
+ {
return ResourceManager.GetString("RichTextBox", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 在这里右击.
///
- public static string RightClickHere {
- get {
+ public static string RightClickHere
+ {
+ get
+ {
return ResourceManager.GetString("RightClickHere", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 滚动块.
///
- public static string RunningBlock {
- get {
+ public static string RunningBlock
+ {
+ get
+ {
return ResourceManager.GetString("RunningBlock", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 截图.
///
- public static string Screenshot {
- get {
+ public static string Screenshot
+ {
+ get
+ {
return ResourceManager.GetString("Screenshot", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 滚动视图.
///
- public static string ScrollViewer {
- get {
+ public static string ScrollViewer
+ {
+ get
+ {
return ResourceManager.GetString("ScrollViewer", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 搜索栏.
///
- public static string SearchBar {
- get {
+ public static string SearchBar
+ {
+ get
+ {
return ResourceManager.GetString("SearchBar", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 秒.
///
- public static string Second {
- get {
+ public static string Second
+ {
+ get
+ {
return ResourceManager.GetString("Second", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 选中.
///
- public static string Selected {
- get {
+ public static string Selected
+ {
+ get
+ {
return ResourceManager.GetString("Selected", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 发送通知.
///
- public static string SendNotification {
- get {
+ public static string SendNotification
+ {
+ get
+ {
return ResourceManager.GetString("SendNotification", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 徽章.
///
- public static string Shield {
- get {
+ public static string Shield
+ {
+ get
+ {
return ResourceManager.GetString("Shield", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 在当前窗口显示.
///
- public static string ShowInCurrentWindow {
- get {
+ public static string ShowInCurrentWindow
+ {
+ get
+ {
return ResourceManager.GetString("ShowInCurrentWindow", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 在主窗口显示.
///
- public static string ShowInMainWindow {
- get {
+ public static string ShowInMainWindow
+ {
+ get
+ {
return ResourceManager.GetString("ShowInMainWindow", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 显示行号.
///
- public static string ShowRowNumber {
- get {
+ public static string ShowRowNumber
+ {
+ get
+ {
return ResourceManager.GetString("ShowRowNumber", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 侧边菜单.
///
- public static string SideMenu {
- get {
+ public static string SideMenu
+ {
+ get
+ {
return ResourceManager.GetString("SideMenu", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 滑块.
///
- public static string Slider {
- get {
+ public static string Slider
+ {
+ get
+ {
return ResourceManager.GetString("Slider", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 分割按钮.
///
- public static string SplitButton {
- get {
+ public static string SplitButton
+ {
+ get
+ {
return ResourceManager.GetString("SplitButton", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 精灵.
///
- public static string Sprite {
- get {
+ public static string Sprite
+ {
+ get
+ {
return ResourceManager.GetString("Sprite", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 开始截图.
///
- public static string StartScreenshot {
- get {
+ public static string StartScreenshot
+ {
+ get
+ {
return ResourceManager.GetString("StartScreenshot", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 保持打开.
///
- public static string StaysOpen {
- get {
+ public static string StaysOpen
+ {
+ get
+ {
return ResourceManager.GetString("StaysOpen", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 步骤.
///
- public static string Step {
- get {
+ public static string Step
+ {
+ get
+ {
return ResourceManager.GetString("Step", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 步骤条.
///
- public static string StepBar {
- get {
+ public static string StepBar
+ {
+ get
+ {
return ResourceManager.GetString("StepBar", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 样式模板.
///
- public static string Styles {
- get {
+ public static string Styles
+ {
+ get
+ {
return ResourceManager.GetString("Styles", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 子标题.
///
- public static string SubTitle {
- get {
+ public static string SubTitle
+ {
+ get
+ {
return ResourceManager.GetString("SubTitle", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 成功.
///
- public static string Success {
- get {
+ public static string Success
+ {
+ get
+ {
return ResourceManager.GetString("Success", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 选项卡控件.
///
- public static string TabControl {
- get {
+ public static string TabControl
+ {
+ get
+ {
return ResourceManager.GetString("TabControl", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 标签.
///
- public static string Tag {
- get {
+ public static string Tag
+ {
+ get
+ {
return ResourceManager.GetString("Tag", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 正文.
///
- public static string Text {
- get {
+ public static string Text
+ {
+ get
+ {
return ResourceManager.GetString("Text", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 文本块.
///
- public static string TextBlock {
- get {
+ public static string TextBlock
+ {
+ get
+ {
return ResourceManager.GetString("TextBlock", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 文本框.
///
- public static string TextBox {
- get {
+ public static string TextBox
+ {
+ get
+ {
return ResourceManager.GetString("TextBox", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 文本对话框.
///
- public static string TextDialog {
- get {
+ public static string TextDialog
+ {
+ get
+ {
return ResourceManager.GetString("TextDialog", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 文本对话框(控件中).
///
- public static string TextDialogInControl {
- get {
+ public static string TextDialogInControl
+ {
+ get
+ {
return ResourceManager.GetString("TextDialogInControl", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 文本对话框,带计时器.
///
- public static string TextDialogWithTimer {
- get {
+ public static string TextDialogWithTimer
+ {
+ get
+ {
return ResourceManager.GetString("TextDialogWithTimer", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 时间条.
///
- public static string TimeBar {
- get {
+ public static string TimeBar
+ {
+ get
+ {
return ResourceManager.GetString("TimeBar", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 时间选择器.
///
- public static string TimePicker {
- get {
+ public static string TimePicker
+ {
+ get
+ {
return ResourceManager.GetString("TimePicker", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 提示.
///
- public static string Tip {
- get {
+ public static string Tip
+ {
+ get
+ {
return ResourceManager.GetString("Tip", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 标题.
///
- public static string Title {
- get {
+ public static string Title
+ {
+ get
+ {
return ResourceManager.GetString("Title", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 这是标题.
///
- public static string TitleDemoStr1 {
- get {
+ public static string TitleDemoStr1
+ {
+ get
+ {
return ResourceManager.GetString("TitleDemoStr1", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 此项必填.
///
- public static string TitleDemoStr2 {
- get {
+ public static string TitleDemoStr2
+ {
+ get
+ {
return ResourceManager.GetString("TitleDemoStr2", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 标题在左侧.
///
- public static string TitleDemoStr3 {
- get {
+ public static string TitleDemoStr3
+ {
+ get
+ {
return ResourceManager.GetString("TitleDemoStr3", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 切换按钮.
///
- public static string ToggleButton {
- get {
+ public static string ToggleButton
+ {
+ get
+ {
return ResourceManager.GetString("ToggleButton", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 工具条.
///
- public static string ToolBar {
- get {
+ public static string ToolBar
+ {
+ get
+ {
return ResourceManager.GetString("ToolBar", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 工具.
///
- public static string Tools {
- get {
+ public static string Tools
+ {
+ get
+ {
return ResourceManager.GetString("Tools", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 穿梭框.
///
- public static string Transfer {
- get {
+ public static string Transfer
+ {
+ get
+ {
return ResourceManager.GetString("Transfer", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 内容过渡控件.
///
- public static string TransitioningContentControl {
- get {
+ public static string TransitioningContentControl
+ {
+ get
+ {
return ResourceManager.GetString("TransitioningContentControl", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 树视图.
///
- public static string TreeView {
- get {
+ public static string TreeView
+ {
+ get
+ {
return ResourceManager.GetString("TreeView", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 试试关闭程序吧?.
///
- public static string Try2CloseApp {
- get {
+ public static string Try2CloseApp
+ {
+ get
+ {
return ResourceManager.GetString("Try2CloseApp", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 类型.
///
- public static string Type {
- get {
+ public static string Type
+ {
+ get
+ {
return ResourceManager.GetString("Type", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 上传文件.
///
- public static string UploadFile {
- get {
+ public static string UploadFile
+ {
+ get
+ {
return ResourceManager.GetString("UploadFile", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 上传;上传中.
///
- public static string UploadStr {
- get {
+ public static string UploadStr
+ {
+ get
+ {
return ResourceManager.GetString("UploadStr", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 可见性.
///
- public static string Visibility {
- get {
+ public static string Visibility
+ {
+ get
+ {
return ResourceManager.GetString("Visibility", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to VS 插件.
///
- public static string Vsix {
- get {
+ public static string Vsix
+ {
+ get
+ {
return ResourceManager.GetString("Vsix", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 警告.
///
- public static string Warning {
- get {
+ public static string Warning
+ {
+ get
+ {
return ResourceManager.GetString("Warning", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 瀑布流.
///
- public static string WaterfallPanel {
- get {
+ public static string WaterfallPanel
+ {
+ get
+ {
return ResourceManager.GetString("WaterfallPanel", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 网站.
///
- public static string Website {
- get {
+ public static string Website
+ {
+ get
+ {
return ResourceManager.GetString("Website", resourceCulture);
}
}
-
+
///
/// Looks up a localized string similar to 窗口.
///
- public static string Window {
- get {
+ public static string Window
+ {
+ get
+ {
return ResourceManager.GetString("Window", resourceCulture);
}
}
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx
index c1d966c20..268845a14 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.en.resx
@@ -765,4 +765,7 @@
CheckComboBox
+
+ FlexPanel
+
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fa.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fa.resx
index c99e954f5..678a63f44 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fa.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fa.resx
@@ -765,4 +765,7 @@
CheckComboBox
+
+ FlexPanel
+
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fr.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fr.resx
index 704223fcc..17e4228f9 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fr.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.fr.resx
@@ -130,10 +130,10 @@
C'est une belle journée aujourd'hui
- Fichier enregistré
+ Fichier enregistré!
- Espace disque bientôt epuisé
+ Espace disque bientôt epuisé!
Erreur de connexion. Veuillez vérifier votre réseau !
@@ -765,4 +765,7 @@
CheckComboBox
+
+ FlexPanel
+
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ko-KR.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ko-KR.resx
index 3769cd421..434c22f70 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ko-KR.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ko-KR.resx
@@ -765,4 +765,7 @@
CheckComboBox
+
+ FlexPanel
+
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.pt-BR.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.pt-BR.resx
index 1b95c60d0..0ef9e4f0d 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.pt-BR.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.pt-BR.resx
@@ -765,4 +765,7 @@
PersianToolkit
+
+ FlexPanel
+
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.resx
index c55ea4607..44f323d75 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.resx
@@ -765,4 +765,7 @@
多选组合框
+
+ 弹性盒子
+
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ru.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ru.resx
index 0b0bb70ab..bec2cdb5b 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ru.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.ru.resx
@@ -765,4 +765,7 @@
CheckComboBox
+
+ FlexPanel
+
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.tr.resx b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.tr.resx
index f1ac48bd7..e2d789909 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.tr.resx
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/Lang.tr.resx
@@ -765,4 +765,7 @@
CheckComboBox
+
+ FlexPanel
+
\ No newline at end of file
diff --git a/src/Shared/HandyControlDemo_Shared/Properties/Langs/LangProvider.cs b/src/Shared/HandyControlDemo_Shared/Properties/Langs/LangProvider.cs
index b15c71b4d..8e091a68f 100644
--- a/src/Shared/HandyControlDemo_Shared/Properties/Langs/LangProvider.cs
+++ b/src/Shared/HandyControlDemo_Shared/Properties/Langs/LangProvider.cs
@@ -99,7 +99,8 @@ private void UpdateLangs()
OnPropertyChanged(nameof(Exit));
OnPropertyChanged(nameof(Expander));
OnPropertyChanged(nameof(Fatal));
- OnPropertyChanged(nameof(FlipClock));
+ OnPropertyChanged(nameof(FlexPanel));
+ OnPropertyChanged(nameof(FlipClock));
OnPropertyChanged(nameof(FloatingBlock));
OnPropertyChanged(nameof(FlowDocument));
OnPropertyChanged(nameof(FlowDocumentPageViewer));
@@ -565,6 +566,11 @@ private void UpdateLangs()
///
public string Fatal => Lang.Fatal;
+ ///
+ /// 查找类似 弹性盒子 的本地化字符串。
+ ///
+ public string FlexPanel => Lang.FlexPanel;
+
///
/// 查找类似 翻页时钟 的本地化字符串。
///
@@ -1651,6 +1657,11 @@ public class LangKeys
///
public static string Fatal = nameof(Fatal);
+ ///
+ /// 查找类似 弹性盒子 的本地化字符串。
+ ///
+ public static string FlexPanel = nameof(FlexPanel);
+
///
/// 查找类似 翻页时钟 的本地化字符串。
///
diff --git a/src/Shared/HandyControlDemo_Shared/Resources/Img/LeftMainContent/layout-FlexLayout-16.png b/src/Shared/HandyControlDemo_Shared/Resources/Img/LeftMainContent/layout-FlexLayout-16.png
new file mode 100644
index 000000000..3b24bd18a
Binary files /dev/null and b/src/Shared/HandyControlDemo_Shared/Resources/Img/LeftMainContent/layout-FlexLayout-16.png differ
diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Controls/FlexPanelDemoCtl.xaml b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/FlexPanelDemoCtl.xaml
new file mode 100644
index 000000000..c55f1b4c0
--- /dev/null
+++ b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/FlexPanelDemoCtl.xaml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Controls/FlexPanelDemoCtl.xaml.cs b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/FlexPanelDemoCtl.xaml.cs
new file mode 100644
index 000000000..d9089da2e
--- /dev/null
+++ b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/FlexPanelDemoCtl.xaml.cs
@@ -0,0 +1,10 @@
+namespace HandyControlDemo.UserControl
+{
+ public partial class FlexPanelDemoCtl : IFull
+ {
+ public FlexPanelDemoCtl()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Styles/ToolBarDemoCtl.xaml b/src/Shared/HandyControlDemo_Shared/UserControl/Styles/ToolBarDemoCtl.xaml
index ddb4a029c..1a2e750fb 100644
--- a/src/Shared/HandyControlDemo_Shared/UserControl/Styles/ToolBarDemoCtl.xaml
+++ b/src/Shared/HandyControlDemo_Shared/UserControl/Styles/ToolBarDemoCtl.xaml
@@ -7,56 +7,82 @@
DataContext="{Binding ComboBoxDemo,Source={StaticResource Locator}}"
Background="{DynamicResource RegionBrush}">
-
-
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Shared/HandyControl_Shared/Controls/Block/RunningBlock.cs b/src/Shared/HandyControl_Shared/Controls/Block/RunningBlock/RunningBlock.cs
similarity index 82%
rename from src/Shared/HandyControl_Shared/Controls/Block/RunningBlock.cs
rename to src/Shared/HandyControl_Shared/Controls/Block/RunningBlock/RunningBlock.cs
index 7020e8432..fc7e905c1 100644
--- a/src/Shared/HandyControl_Shared/Controls/Block/RunningBlock.cs
+++ b/src/Shared/HandyControl_Shared/Controls/Block/RunningBlock/RunningBlock.cs
@@ -1,7 +1,6 @@
using System;
using System.Windows;
using System.Windows.Controls;
-using System.Windows.Media;
using System.Windows.Media.Animation;
using HandyControl.Data;
using HandyControl.Expression.Drawing;
@@ -24,19 +23,32 @@ public class RunningBlock : ContentControl
public override void OnApplyTemplate()
{
+ if (_elementPanel != null)
+ {
+ _elementPanel.SizeChanged -= ElementPanel_SizeChanged;
+ }
+
base.OnApplyTemplate();
_elementContent = GetTemplateChild(ElementContent) as FrameworkElement;
_elementPanel = GetTemplateChild(ElementPanel) as Panel;
+
+ if (_elementPanel != null)
+ {
+ _elementPanel.SizeChanged += ElementPanel_SizeChanged;
+ }
+
UpdateContent();
}
+ private void ElementPanel_SizeChanged(object sender, SizeChangedEventArgs e) => UpdateContent();
+
public static readonly DependencyProperty RunawayProperty = DependencyProperty.Register(
"Runaway", typeof(bool), typeof(RunningBlock), new FrameworkPropertyMetadata(ValueBoxes.TrueBox, FrameworkPropertyMetadataOptions.AffectsRender));
public bool Runaway
{
- get => (bool) GetValue(RunawayProperty);
+ get => (bool)GetValue(RunawayProperty);
set => SetValue(RunawayProperty, ValueBoxes.BooleanBox(value));
}
@@ -45,7 +57,7 @@ public bool Runaway
public bool AutoRun
{
- get => (bool) GetValue(AutoRunProperty);
+ get => (bool)GetValue(AutoRunProperty);
set => SetValue(AutoRunProperty, ValueBoxes.BooleanBox(value));
}
@@ -54,7 +66,7 @@ public bool AutoRun
public Orientation Orientation
{
- get => (Orientation) GetValue(OrientationProperty);
+ get => (Orientation)GetValue(OrientationProperty);
set => SetValue(OrientationProperty, value);
}
@@ -63,7 +75,7 @@ public Orientation Orientation
public Duration Duration
{
- get => (Duration) GetValue(DurationProperty);
+ get => (Duration)GetValue(DurationProperty);
set => SetValue(DurationProperty, value);
}
@@ -72,7 +84,7 @@ public Duration Duration
public double Speed
{
- get => (double) GetValue(SpeedProperty);
+ get => (double)GetValue(SpeedProperty);
set => SetValue(SpeedProperty, value);
}
@@ -93,7 +105,7 @@ public double Speed
public bool IsRunning
{
- get => (bool) GetValue(IsRunningProperty);
+ get => (bool)GetValue(IsRunningProperty);
set => SetValue(IsRunningProperty, ValueBoxes.BooleanBox(value));
}
@@ -102,60 +114,57 @@ public bool IsRunning
public bool AutoReverse
{
- get => (bool) GetValue(AutoReverseProperty);
+ get => (bool)GetValue(AutoReverseProperty);
set => SetValue(AutoReverseProperty, ValueBoxes.BooleanBox(value));
}
private void UpdateContent()
{
if (_elementContent == null || _elementPanel == null) return;
+ if (MathHelper.IsZero(_elementPanel.ActualWidth) || MathHelper.IsZero(_elementPanel.ActualHeight)) return;
_storyboard?.Stop();
- _elementPanel.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
- _elementPanel.Width = _elementPanel.DesiredSize.Width;
- _elementPanel.Height = _elementPanel.DesiredSize.Height;
-
double from;
double to;
PropertyPath propertyPath;
if (Orientation == Orientation.Horizontal)
{
- if (AutoRun && _elementPanel.Width < ActualWidth)
+ if (AutoRun && _elementPanel.ActualWidth < ActualWidth)
{
return;
}
if (Runaway)
{
- from = -_elementPanel.Width;
+ from = -_elementPanel.ActualWidth;
to = ActualWidth;
}
else
{
from = 0;
- to = ActualWidth - _elementPanel.Width;
+ to = ActualWidth - _elementPanel.ActualWidth;
SetCurrentValue(AutoReverseProperty, ValueBoxes.TrueBox);
}
propertyPath = new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.X)");
}
else
{
- if (AutoRun && _elementPanel.Height < ActualHeight)
+ if (AutoRun && _elementPanel.ActualHeight < ActualHeight)
{
return;
}
if (Runaway)
{
- from = -_elementPanel.Height;
+ from = -_elementPanel.ActualHeight;
to = ActualHeight;
}
else
{
from = 0;
- to = ActualHeight - _elementPanel.Height;
+ to = ActualHeight - _elementPanel.ActualHeight;
SetCurrentValue(AutoReverseProperty, ValueBoxes.TrueBox);
}
propertyPath = new PropertyPath("(UIElement.RenderTransform).(TransformGroup.Children)[0].(TranslateTransform.Y)");
@@ -180,7 +189,5 @@ private void UpdateContent()
_storyboard.Children.Add(animation);
_storyboard.Begin();
}
-
- protected override void OnRender(DrawingContext drawingContext) => UpdateContent();
}
}
\ No newline at end of file
diff --git a/src/Shared/HandyControl_Shared/Controls/Block/RunningBlock/RunningBorder.cs b/src/Shared/HandyControl_Shared/Controls/Block/RunningBlock/RunningBorder.cs
new file mode 100644
index 000000000..5966ad75c
--- /dev/null
+++ b/src/Shared/HandyControl_Shared/Controls/Block/RunningBlock/RunningBorder.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Windows;
+using System.Windows.Controls;
+using HandyControl.Tools;
+
+namespace HandyControl.Controls
+{
+ public class RunningBorder : Border
+ {
+ private bool _test;
+
+ protected override Size MeasureOverride(Size constraint)
+ {
+ if (_test)
+ {
+ _test = false;
+ return constraint;
+ }
+
+ var child = Child;
+ var borderThickness = BorderThickness;
+ var padding = Padding;
+
+ if (UseLayoutRounding)
+ {
+ var dpiScaleX = DpiHelper.DeviceDpiX;
+ var dpiScaleY = DpiHelper.DeviceDpiY;
+
+ borderThickness = new Thickness(
+ DpiHelper.RoundLayoutValue(borderThickness.Left, dpiScaleX),
+ DpiHelper.RoundLayoutValue(borderThickness.Top, dpiScaleY),
+ DpiHelper.RoundLayoutValue(borderThickness.Right, dpiScaleX),
+ DpiHelper.RoundLayoutValue(borderThickness.Bottom, dpiScaleY));
+ }
+
+ var borderSize = ConvertThickness2Size(borderThickness);
+ var paddingSize = ConvertThickness2Size(padding);
+ var mySize = new Size();
+
+ if (child != null)
+ {
+ var combined = new Size(borderSize.Width + paddingSize.Width, borderSize.Height + paddingSize.Height);
+ var borderConstraint = new Size(Math.Max(0.0, constraint.Width - combined.Width), Math.Max(0.0, constraint.Height - combined.Height));
+ var childConstraint = new Size(Math.Max(0.0, double.PositiveInfinity - combined.Width), Math.Max(0.0, double.PositiveInfinity - combined.Height));
+
+
+ child.Measure(borderConstraint);
+ var childSize = child.DesiredSize;
+
+ mySize.Width = childSize.Width + combined.Width;
+ mySize.Height = childSize.Height + combined.Height;
+
+ child.Measure(childConstraint);
+ }
+ else
+ {
+ mySize = new Size(borderSize.Width + paddingSize.Width, borderSize.Height + paddingSize.Height);
+ }
+
+ return mySize;
+ }
+
+ private static Size ConvertThickness2Size(Thickness th) => new Size(th.Left + th.Right, th.Top + th.Bottom);
+ }
+}
\ No newline at end of file
diff --git a/src/Shared/HandyControl_Shared/Controls/Input/PasswordBox.cs b/src/Shared/HandyControl_Shared/Controls/Input/PasswordBox.cs
index 2d8ec15b4..507053dac 100644
--- a/src/Shared/HandyControl_Shared/Controls/Input/PasswordBox.cs
+++ b/src/Shared/HandyControl_Shared/Controls/Input/PasswordBox.cs
@@ -359,6 +359,15 @@ private void PasswordBox_PasswordChanged(object sender, RoutedEventArgs e)
}
}
- private void TextBox_TextChanged(object sender, TextChangedEventArgs e) => VerifyData();
+ private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
+ {
+ VerifyData();
+
+ if (!IsSafeEnabled && ShowPassword)
+ {
+ Password = _textBox.Text;
+ SetCurrentValue(UnsafePasswordProperty, Password);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/src/Shared/HandyControl_Shared/Controls/Panel/FlexPanel.cs b/src/Shared/HandyControl_Shared/Controls/Panel/FlexPanel.cs
new file mode 100644
index 000000000..dd4b60b31
--- /dev/null
+++ b/src/Shared/HandyControl_Shared/Controls/Panel/FlexPanel.cs
@@ -0,0 +1,717 @@
+using System;
+using System.Collections.Generic;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Media;
+using HandyControl.Data;
+using HandyControl.Expression.Drawing;
+using HandyControl.Tools;
+using HandyControl.Tools.Extension;
+
+namespace HandyControl.Controls
+{
+ public class FlexPanel : Panel
+ {
+ private UVSize _uvConstraint;
+
+ private int _lineCount;
+
+ private readonly List _orderList = new List();
+
+ #region Item
+
+ public static readonly DependencyProperty OrderProperty = DependencyProperty.RegisterAttached(
+ "Order", typeof(int), typeof(FlexPanel),
+ new FrameworkPropertyMetadata(ValueBoxes.Int0Box, OnItemPropertyChanged));
+
+ public static void SetOrder(DependencyObject element, int value)
+ => element.SetValue(OrderProperty, value);
+
+ public static int GetOrder(DependencyObject element)
+ => (int)element.GetValue(OrderProperty);
+
+ public static readonly DependencyProperty FlexGrowProperty = DependencyProperty.RegisterAttached(
+ "FlexGrow", typeof(double), typeof(FlexPanel),
+ new FrameworkPropertyMetadata(ValueBoxes.Double0Box, OnItemPropertyChanged),
+ ValidateHelper.IsInRangeOfPosDoubleIncludeZero);
+
+ public static void SetFlexGrow(DependencyObject element, double value)
+ => element.SetValue(FlexGrowProperty, value);
+
+ public static double GetFlexGrow(DependencyObject element)
+ => (double)element.GetValue(FlexGrowProperty);
+
+ public static readonly DependencyProperty FlexShrinkProperty = DependencyProperty.RegisterAttached(
+ "FlexShrink", typeof(double), typeof(FlexPanel),
+ new FrameworkPropertyMetadata(ValueBoxes.Double1Box, OnItemPropertyChanged),
+ ValidateHelper.IsInRangeOfPosDoubleIncludeZero);
+
+ public static void SetFlexShrink(DependencyObject element, double value)
+ => element.SetValue(FlexShrinkProperty, value);
+
+ public static double GetFlexShrink(DependencyObject element)
+ => (double)element.GetValue(FlexShrinkProperty);
+
+ public static readonly DependencyProperty FlexBasisProperty = DependencyProperty.RegisterAttached(
+ "FlexBasis", typeof(double), typeof(FlexPanel),
+ new FrameworkPropertyMetadata(double.NaN, OnItemPropertyChanged));
+
+ public static void SetFlexBasis(DependencyObject element, double value)
+ => element.SetValue(FlexBasisProperty, value);
+
+ public static double GetFlexBasis(DependencyObject element)
+ => (double)element.GetValue(FlexBasisProperty);
+
+ public static readonly DependencyProperty AlignSelfProperty = DependencyProperty.RegisterAttached(
+ "AlignSelf", typeof(FlexItemAlignment), typeof(FlexPanel),
+ new FrameworkPropertyMetadata(default(FlexItemAlignment), OnItemPropertyChanged));
+
+ public static void SetAlignSelf(DependencyObject element, FlexItemAlignment value)
+ => element.SetValue(AlignSelfProperty, value);
+
+ #endregion
+
+ #region Panel
+
+ public static FlexItemAlignment GetAlignSelf(DependencyObject element)
+ => (FlexItemAlignment)element.GetValue(AlignSelfProperty);
+
+ public static readonly DependencyProperty FlexDirectionProperty = DependencyProperty.Register(
+ "FlexDirection", typeof(FlexDirection), typeof(FlexPanel),
+ new FrameworkPropertyMetadata(default(FlexDirection), FrameworkPropertyMetadataOptions.AffectsMeasure));
+
+ public FlexDirection FlexDirection
+ {
+ get => (FlexDirection)GetValue(FlexDirectionProperty);
+ set => SetValue(FlexDirectionProperty, value);
+ }
+
+ public static readonly DependencyProperty FlexWrapProperty = DependencyProperty.Register(
+ "FlexWrap", typeof(FlexWrap), typeof(FlexPanel),
+ new FrameworkPropertyMetadata(default(FlexWrap), FrameworkPropertyMetadataOptions.AffectsMeasure));
+
+ public FlexWrap FlexWrap
+ {
+ get => (FlexWrap)GetValue(FlexWrapProperty);
+ set => SetValue(FlexWrapProperty, value);
+ }
+
+ public static readonly DependencyProperty JustifyContentProperty = DependencyProperty.Register(
+ "JustifyContent", typeof(FlexContentJustify), typeof(FlexPanel),
+ new FrameworkPropertyMetadata(default(FlexContentJustify),
+ FrameworkPropertyMetadataOptions.AffectsMeasure));
+
+ public FlexContentJustify JustifyContent
+ {
+ get => (FlexContentJustify)GetValue(JustifyContentProperty);
+ set => SetValue(JustifyContentProperty, value);
+ }
+
+ public static readonly DependencyProperty AlignItemsProperty = DependencyProperty.Register(
+ "AlignItems", typeof(FlexItemsAlignment), typeof(FlexPanel),
+ new FrameworkPropertyMetadata(default(FlexItemsAlignment),
+ FrameworkPropertyMetadataOptions.AffectsMeasure));
+
+ public FlexItemsAlignment AlignItems
+ {
+ get => (FlexItemsAlignment)GetValue(AlignItemsProperty);
+ set => SetValue(AlignItemsProperty, value);
+ }
+
+ public static readonly DependencyProperty AlignContentProperty = DependencyProperty.Register(
+ "AlignContent", typeof(FlexContentAlignment), typeof(FlexPanel),
+ new FrameworkPropertyMetadata(default(FlexContentAlignment),
+ FrameworkPropertyMetadataOptions.AffectsMeasure));
+
+ public FlexContentAlignment AlignContent
+ {
+ get => (FlexContentAlignment)GetValue(AlignContentProperty);
+ set => SetValue(AlignContentProperty, value);
+ }
+
+ #endregion
+
+ private static void OnItemPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
+ {
+ if (d is UIElement element)
+ {
+ if (VisualTreeHelper.GetParent(element) is FlexPanel p)
+ {
+ p.InvalidateMeasure();
+ }
+ }
+ }
+
+ protected override Size MeasureOverride(Size constraint)
+ {
+ var curLineSize = new UVSize(FlexDirection);
+ var panelSize = new UVSize(FlexDirection);
+ _uvConstraint = new UVSize(FlexDirection, constraint);
+ var childConstraint = new Size(constraint.Width, constraint.Height);
+ _lineCount = 1;
+ var children = InternalChildren;
+
+ _orderList.Clear();
+ for (var i = 0; i < children.Count; i++)
+ {
+ var child = children[i];
+ if (child == null) continue;
+
+ _orderList.Add(new FlexItemInfo(i, GetOrder(child)));
+ }
+
+ _orderList.Sort();
+
+ for (var i = 0; i < children.Count; i++)
+ {
+ var child = children[_orderList[i].Index];
+ if (child == null) continue;
+
+ var flexBasis = GetFlexBasis(child);
+ if (!flexBasis.IsNaN())
+ {
+ child.SetCurrentValue(WidthProperty, flexBasis);
+ }
+ child.Measure(childConstraint);
+
+ var sz = new UVSize(FlexDirection, child.DesiredSize);
+
+ if (FlexWrap == FlexWrap.NoWrap) //continue to accumulate a line
+ {
+ curLineSize.U += sz.U;
+ curLineSize.V = Math.Max(sz.V, curLineSize.V);
+ }
+ else
+ {
+ if (MathHelper.GreaterThan(curLineSize.U + sz.U, _uvConstraint.U)) //need to switch to another line
+ {
+ panelSize.U = Math.Max(curLineSize.U, panelSize.U);
+ panelSize.V += curLineSize.V;
+ curLineSize = sz;
+ _lineCount++;
+
+ if (MathHelper.GreaterThan(sz.U, _uvConstraint.U)) //the element is wider then the constrint - give it a separate line
+ {
+ panelSize.U = Math.Max(sz.U, panelSize.U);
+ panelSize.V += sz.V;
+ curLineSize = new UVSize(FlexDirection);
+ _lineCount++;
+ }
+ }
+ else //continue to accumulate a line
+ {
+ curLineSize.U += sz.U;
+ curLineSize.V = Math.Max(sz.V, curLineSize.V);
+ }
+ }
+ }
+
+ //the last line size, if any should be added
+ panelSize.U = Math.Max(curLineSize.U, panelSize.U);
+ panelSize.V += curLineSize.V;
+
+ //go from UV space to W/H space
+ return new Size(panelSize.Width, panelSize.Height);
+ }
+
+ protected override Size ArrangeOverride(Size arrangeSize)
+ {
+ var uvFinalSize = new UVSize(FlexDirection, arrangeSize);
+ if (MathHelper.IsZero(uvFinalSize.U) || MathHelper.IsZero(uvFinalSize.V)) return arrangeSize;
+
+ // init status
+ var children = InternalChildren;
+ var lineIndex = 0;
+
+ var curLineSizeArr = new UVSize[_lineCount];
+ curLineSizeArr[0] = new UVSize(FlexDirection);
+
+ var lastInLineArr = new int[_lineCount];
+ for (var i = 0; i < _lineCount; i++)
+ {
+ lastInLineArr[i] = int.MaxValue;
+ }
+
+ // calculate line max U space
+ for (var i = 0; i < children.Count; i++)
+ {
+ var child = children[_orderList[i].Index];
+ if (child == null) continue;
+
+ var sz = new UVSize(FlexDirection, child.DesiredSize);
+
+ if (FlexWrap == FlexWrap.NoWrap)
+ {
+ curLineSizeArr[lineIndex].U += sz.U;
+ curLineSizeArr[lineIndex].V = Math.Max(sz.V, curLineSizeArr[lineIndex].V);
+ }
+ else
+ {
+ if (MathHelper.GreaterThan(curLineSizeArr[lineIndex].U + sz.U, uvFinalSize.U)) //need to switch to another line
+ {
+ lastInLineArr[lineIndex] = i;
+ lineIndex++;
+ curLineSizeArr[lineIndex] = sz;
+
+ if (MathHelper.GreaterThan(sz.U, uvFinalSize.U)) //the element is wider then the constraint - give it a separate line
+ {
+ //switch to next line which only contain one element
+ lastInLineArr[lineIndex] = i;
+ lineIndex++;
+ curLineSizeArr[lineIndex] = new UVSize(FlexDirection);
+ }
+ }
+ else //continue to accumulate a line
+ {
+ curLineSizeArr[lineIndex].U += sz.U;
+ curLineSizeArr[lineIndex].V = Math.Max(sz.V, curLineSizeArr[lineIndex].V);
+ }
+ }
+ }
+
+ // init status
+ var scaleU = Math.Min(_uvConstraint.U / uvFinalSize.U, 1);
+ var firstInLine = 0;
+ var wrapReverseAdd = 0;
+ var wrapReverseFlag = FlexWrap == FlexWrap.WrapReverse ? -1 : 1;
+ var accumulatedFlag = FlexWrap == FlexWrap.WrapReverse ? 1 : 0;
+ var itemsU = .0;
+ var accumulatedV = .0;
+ var freeV = uvFinalSize.V;
+ foreach (var flexSize in curLineSizeArr)
+ {
+ freeV -= flexSize.V;
+ }
+
+ var freeItemV = freeV;
+
+ // calculate status
+ var lineFreeVArr = new double[_lineCount];
+ switch (AlignContent)
+ {
+ case FlexContentAlignment.Stretch:
+ if (_lineCount > 1)
+ {
+ freeItemV = freeV / _lineCount;
+ for (var i = 0; i < _lineCount; i++)
+ {
+ lineFreeVArr[i] = freeItemV;
+ }
+
+ accumulatedV = FlexWrap == FlexWrap.WrapReverse ? uvFinalSize.V - curLineSizeArr[0].V - lineFreeVArr[0] : 0;
+ }
+
+ break;
+ case FlexContentAlignment.FlexStart:
+ wrapReverseAdd = FlexWrap == FlexWrap.WrapReverse ? 0 : 1;
+ if (_lineCount > 1)
+ {
+ accumulatedV = FlexWrap == FlexWrap.WrapReverse ? uvFinalSize.V - curLineSizeArr[0].V : 0;
+ }
+ else
+ {
+ wrapReverseAdd = 0;
+ }
+
+ break;
+ case FlexContentAlignment.FlexEnd:
+ wrapReverseAdd = FlexWrap == FlexWrap.WrapReverse ? 1 : 0;
+ if (_lineCount > 1)
+ {
+ accumulatedV = FlexWrap == FlexWrap.WrapReverse ? uvFinalSize.V - curLineSizeArr[0].V - freeV : freeV;
+ }
+ else
+ {
+ wrapReverseAdd = 0;
+ }
+
+ break;
+ case FlexContentAlignment.Center:
+ if (_lineCount > 1)
+ {
+ accumulatedV = FlexWrap == FlexWrap.WrapReverse ? uvFinalSize.V - curLineSizeArr[0].V - freeV * 0.5 : freeV * 0.5;
+ }
+
+ break;
+ case FlexContentAlignment.SpaceBetween:
+ if (_lineCount > 1)
+ {
+ freeItemV = freeV / (_lineCount - 1);
+ for (var i = 0; i < _lineCount - 1; i++)
+ {
+ lineFreeVArr[i] = freeItemV;
+ }
+
+ accumulatedV = FlexWrap == FlexWrap.WrapReverse ? uvFinalSize.V - curLineSizeArr[0].V : 0;
+ }
+
+ break;
+ case FlexContentAlignment.SpaceAround:
+ if (_lineCount > 1)
+ {
+ freeItemV = freeV / _lineCount * 0.5;
+ for (var i = 0; i < _lineCount - 1; i++)
+ {
+ lineFreeVArr[i] = freeItemV * 2;
+ }
+
+ accumulatedV = FlexWrap == FlexWrap.WrapReverse ? uvFinalSize.V - curLineSizeArr[0].V - freeItemV : freeItemV;
+ }
+
+ break;
+ }
+
+ // clear status
+ lineIndex = 0;
+
+ // arrange line
+ for (var i = 0; i < children.Count; i++)
+ {
+ var child = children[_orderList[i].Index];
+ if (child == null) continue;
+
+ var sz = new UVSize(FlexDirection, child.DesiredSize);
+
+ if (FlexWrap != FlexWrap.NoWrap)
+ {
+ if (i >= lastInLineArr[lineIndex]) //need to switch to another line
+ {
+ ArrangeLine(new FlexLineInfo
+ {
+ ItemsU = itemsU,
+ OffsetV = accumulatedV + freeItemV * wrapReverseAdd,
+ LineV = curLineSizeArr[lineIndex].V,
+ LineFreeV = freeItemV,
+ LineU = uvFinalSize.U,
+ ItemStartIndex = firstInLine,
+ ItemEndIndex = i,
+ ScaleU = scaleU
+ });
+
+ accumulatedV += (lineFreeVArr[lineIndex] + curLineSizeArr[lineIndex + accumulatedFlag].V) * wrapReverseFlag;
+ lineIndex++;
+ itemsU = 0;
+
+ if (i >= lastInLineArr[lineIndex]
+ ) //the element is wider then the constraint - give it a separate line
+ {
+ //switch to next line which only contain one element
+ ArrangeLine(new FlexLineInfo
+ {
+ ItemsU = itemsU,
+ OffsetV = accumulatedV + freeItemV * wrapReverseAdd,
+ LineV = curLineSizeArr[lineIndex].V,
+ LineFreeV = freeItemV,
+ LineU = uvFinalSize.U,
+ ItemStartIndex = i,
+ ItemEndIndex = ++i,
+ ScaleU = scaleU
+ });
+
+ accumulatedV += (lineFreeVArr[lineIndex] + curLineSizeArr[lineIndex + accumulatedFlag].V) * wrapReverseFlag;
+ lineIndex++;
+ itemsU = 0;
+ }
+
+ firstInLine = i;
+ }
+ }
+
+ itemsU += sz.U;
+ }
+
+ // arrange the last line, if any
+ if (firstInLine < children.Count)
+ {
+ ArrangeLine(new FlexLineInfo
+ {
+ ItemsU = itemsU,
+ OffsetV = accumulatedV + freeItemV * wrapReverseAdd,
+ LineV = curLineSizeArr[lineIndex].V,
+ LineFreeV = freeItemV,
+ LineU = uvFinalSize.U,
+ ItemStartIndex = firstInLine,
+ ItemEndIndex = children.Count,
+ ScaleU = scaleU
+ });
+ }
+
+ return arrangeSize;
+ }
+
+ private void ArrangeLine(FlexLineInfo lineInfo)
+ {
+ var isHorizontal = FlexDirection == FlexDirection.Row || FlexDirection == FlexDirection.RowReverse;
+ var isReverse = FlexDirection == FlexDirection.RowReverse || FlexDirection == FlexDirection.ColumnReverse;
+ var itemCount = lineInfo.ItemEndIndex - lineInfo.ItemStartIndex;
+ var children = InternalChildren;
+ var lineFreeU = lineInfo.LineU - lineInfo.ItemsU;
+ var constraintFreeU = _uvConstraint.U - lineInfo.ItemsU;
+
+ // calculate initial u
+ var u = .0;
+ if (isReverse)
+ {
+ u = JustifyContent switch
+ {
+ FlexContentJustify.FlexStart => lineInfo.LineU,
+ FlexContentJustify.SpaceBetween => lineInfo.LineU,
+ FlexContentJustify.SpaceAround => lineInfo.LineU,
+ FlexContentJustify.FlexEnd => lineInfo.ItemsU,
+ FlexContentJustify.Center => (lineInfo.LineU + lineInfo.ItemsU) * 0.5,
+ _ => u
+ };
+ }
+ else
+ {
+ u = JustifyContent switch
+ {
+ FlexContentJustify.FlexEnd => lineFreeU,
+ FlexContentJustify.Center => lineFreeU * 0.5,
+ _ => u
+ };
+ }
+
+ u *= lineInfo.ScaleU;
+
+ // apply FlexGrow
+ var flexGrowUArr = new double[itemCount];
+ if (constraintFreeU > 0)
+ {
+ var ignoreFlexGrow = true;
+ var flexGrowSum = .0;
+
+ for (var i = 0; i < itemCount; i++)
+ {
+ var flexGrow = GetFlexGrow(children[_orderList[i].Index]);
+ ignoreFlexGrow &= MathHelper.IsVerySmall(flexGrow);
+ flexGrowUArr[i] = flexGrow;
+ flexGrowSum += flexGrow;
+ }
+
+ if (!ignoreFlexGrow)
+ {
+ var flexGrowItem = .0;
+ if (flexGrowSum > 0)
+ {
+ flexGrowItem = constraintFreeU / flexGrowSum;
+ lineInfo.ScaleU = 1;
+ lineFreeU = 0; //line free U was used up
+ }
+
+ for (var i = 0; i < itemCount; i++)
+ {
+ flexGrowUArr[i] *= flexGrowItem;
+ }
+ }
+ else
+ {
+ flexGrowUArr = new double[itemCount];
+ }
+ }
+
+ // apply FlexShrink
+ var flexShrinkUArr = new double[itemCount];
+ if (constraintFreeU < 0)
+ {
+ var ignoreFlexShrink = true;
+ var flexShrinkSum = .0;
+
+ for (var i = 0; i < itemCount; i++)
+ {
+ var flexShrink = GetFlexShrink(children[_orderList[i].Index]);
+ ignoreFlexShrink &= MathHelper.IsVerySmall(flexShrink - 1);
+ flexShrinkUArr[i] = flexShrink;
+ flexShrinkSum += flexShrink;
+ }
+
+ if (!ignoreFlexShrink)
+ {
+ var flexShrinkItem = .0;
+ if (flexShrinkSum > 0)
+ {
+ flexShrinkItem = constraintFreeU / flexShrinkSum;
+ lineInfo.ScaleU = 1;
+ lineFreeU = 0; //line free U was used up
+ }
+
+ for (var i = 0; i < itemCount; i++)
+ {
+ flexShrinkUArr[i] *= flexShrinkItem;
+ }
+ }
+ else
+ {
+ flexShrinkUArr = new double[itemCount];
+ }
+ }
+
+ // calculate offset u
+ var offsetUArr = new double[itemCount];
+ if (lineFreeU > 0)
+ {
+ if (JustifyContent == FlexContentJustify.SpaceBetween)
+ {
+ var freeItemU = lineFreeU / (itemCount - 1);
+ for (var i = 1; i < itemCount; i++)
+ {
+ offsetUArr[i] = freeItemU;
+ }
+ }
+ else if (JustifyContent == FlexContentJustify.SpaceAround)
+ {
+ var freeItemU = lineFreeU / itemCount * 0.5;
+ offsetUArr[0] = freeItemU;
+ for (var i = 1; i < itemCount; i++)
+ {
+ offsetUArr[i] = freeItemU * 2;
+ }
+ }
+ }
+
+ // arrange item
+ for (int i = lineInfo.ItemStartIndex, j = 0; i < lineInfo.ItemEndIndex; i++, j++)
+ {
+ var child = children[_orderList[i].Index];
+ if (child == null) continue;
+
+ var childSize = new UVSize(FlexDirection, isHorizontal
+ ? new Size(child.DesiredSize.Width * lineInfo.ScaleU, child.DesiredSize.Height)
+ : new Size(child.DesiredSize.Width, child.DesiredSize.Height * lineInfo.ScaleU));
+
+ childSize.U += flexGrowUArr[j] + flexShrinkUArr[j];
+
+ if (isReverse)
+ {
+ u -= childSize.U;
+ u -= offsetUArr[j];
+ }
+ else
+ {
+ u += offsetUArr[j];
+ }
+
+ var v = lineInfo.OffsetV;
+ var alignSelf = GetAlignSelf(child);
+ var alignment = alignSelf == FlexItemAlignment.Auto ? AlignItems : (FlexItemsAlignment)alignSelf;
+
+ switch (alignment)
+ {
+ case FlexItemsAlignment.Stretch:
+ if (_lineCount == 1 && FlexWrap == FlexWrap.NoWrap)
+ {
+ childSize.V = lineInfo.LineV + lineInfo.LineFreeV;
+ }
+ else
+ {
+ childSize.V = lineInfo.LineV;
+ }
+
+ break;
+ case FlexItemsAlignment.FlexEnd:
+ v += lineInfo.LineV - childSize.V;
+ break;
+ case FlexItemsAlignment.Center:
+ v += (lineInfo.LineV - childSize.V) * 0.5;
+ break;
+ }
+
+ child.Arrange(isHorizontal ? new Rect(u, v, childSize.U, childSize.V) : new Rect(v, u, childSize.V, childSize.U));
+
+ if (!isReverse)
+ {
+ u += childSize.U;
+ }
+ }
+ }
+
+ private readonly struct FlexItemInfo : IComparable
+ {
+ public FlexItemInfo(int index, int order)
+ {
+ Index = index;
+ Order = order;
+ }
+
+ private int Order { get; }
+
+ public int Index { get; }
+
+ public int CompareTo(FlexItemInfo other) => Order.CompareTo(other.Order);
+ }
+
+ private struct FlexLineInfo
+ {
+ public double ItemsU { get; set; }
+
+ public double OffsetV { get; set; }
+
+ public double LineU { get; set; }
+
+ public double LineV { get; set; }
+
+ public double LineFreeV { get; set; }
+
+ public int ItemStartIndex { get; set; }
+
+ public int ItemEndIndex { get; set; }
+
+ public double ScaleU { get; set; }
+ }
+
+ private struct UVSize
+ {
+ public UVSize(FlexDirection direction, Size size)
+ {
+ U = V = 0d;
+ FlexDirection = direction;
+ Width = size.Width;
+ Height = size.Height;
+ }
+
+ public UVSize(FlexDirection direction)
+ {
+ U = V = 0d;
+ FlexDirection = direction;
+ }
+
+ public double U { get; set; }
+
+ public double V { get; set; }
+
+ private FlexDirection FlexDirection { get; }
+
+ public double Width
+ {
+ get => FlexDirection == FlexDirection.Row || FlexDirection == FlexDirection.RowReverse ? U : V;
+ private set
+ {
+ if (FlexDirection == FlexDirection.Row || FlexDirection == FlexDirection.RowReverse)
+ {
+ U = value;
+ }
+ else
+ {
+ V = value;
+ }
+ }
+ }
+
+ public double Height
+ {
+ get => FlexDirection == FlexDirection.Row || FlexDirection == FlexDirection.RowReverse ? V : U;
+ private set
+ {
+ if (FlexDirection == FlexDirection.Row || FlexDirection == FlexDirection.RowReverse)
+ {
+ V = value;
+ }
+ else
+ {
+ U = value;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/Shared/HandyControl_Shared/Data/Flex/FlexContentAlignment.cs b/src/Shared/HandyControl_Shared/Data/Flex/FlexContentAlignment.cs
new file mode 100644
index 000000000..965ce360e
--- /dev/null
+++ b/src/Shared/HandyControl_Shared/Data/Flex/FlexContentAlignment.cs
@@ -0,0 +1,12 @@
+namespace HandyControl.Data
+{
+ public enum FlexContentAlignment
+ {
+ Stretch,
+ FlexStart,
+ FlexEnd,
+ Center,
+ SpaceBetween,
+ SpaceAround
+ }
+}
\ No newline at end of file
diff --git a/src/Shared/HandyControl_Shared/Data/Flex/FlexContentJustify.cs b/src/Shared/HandyControl_Shared/Data/Flex/FlexContentJustify.cs
new file mode 100644
index 000000000..5402f93ee
--- /dev/null
+++ b/src/Shared/HandyControl_Shared/Data/Flex/FlexContentJustify.cs
@@ -0,0 +1,11 @@
+namespace HandyControl.Data
+{
+ public enum FlexContentJustify
+ {
+ FlexStart,
+ FlexEnd,
+ Center,
+ SpaceBetween,
+ SpaceAround
+ }
+}
\ No newline at end of file
diff --git a/src/Shared/HandyControl_Shared/Data/Flex/FlexDirection.cs b/src/Shared/HandyControl_Shared/Data/Flex/FlexDirection.cs
new file mode 100644
index 000000000..6d3b0d859
--- /dev/null
+++ b/src/Shared/HandyControl_Shared/Data/Flex/FlexDirection.cs
@@ -0,0 +1,10 @@
+namespace HandyControl.Data
+{
+ public enum FlexDirection
+ {
+ Row,
+ RowReverse,
+ Column,
+ ColumnReverse
+ }
+}
diff --git a/src/Shared/HandyControl_Shared/Data/Flex/FlexItemAlignment.cs b/src/Shared/HandyControl_Shared/Data/Flex/FlexItemAlignment.cs
new file mode 100644
index 000000000..0f9e3c2b4
--- /dev/null
+++ b/src/Shared/HandyControl_Shared/Data/Flex/FlexItemAlignment.cs
@@ -0,0 +1,12 @@
+namespace HandyControl.Data
+{
+ public enum FlexItemAlignment
+ {
+ Auto,
+ FlexStart,
+ FlexEnd,
+ Center,
+ Baseline,
+ Stretch
+ }
+}
diff --git a/src/Shared/HandyControl_Shared/Data/Flex/FlexItemsAlignment.cs b/src/Shared/HandyControl_Shared/Data/Flex/FlexItemsAlignment.cs
new file mode 100644
index 000000000..c51b62d32
--- /dev/null
+++ b/src/Shared/HandyControl_Shared/Data/Flex/FlexItemsAlignment.cs
@@ -0,0 +1,11 @@
+namespace HandyControl.Data
+{
+ public enum FlexItemsAlignment
+ {
+ Stretch,
+ FlexStart,
+ FlexEnd,
+ Center,
+ Baseline
+ }
+}
diff --git a/src/Shared/HandyControl_Shared/Data/Flex/FlexWrap.cs b/src/Shared/HandyControl_Shared/Data/Flex/FlexWrap.cs
new file mode 100644
index 000000000..de1cfc9bb
--- /dev/null
+++ b/src/Shared/HandyControl_Shared/Data/Flex/FlexWrap.cs
@@ -0,0 +1,9 @@
+namespace HandyControl.Data
+{
+ public enum FlexWrap
+ {
+ NoWrap,
+ Wrap,
+ WrapReverse
+ }
+}
diff --git a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
index 6860ddbf7..18ae61f9e 100644
--- a/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
+++ b/src/Shared/HandyControl_Shared/HandyControl_Shared.projitems
@@ -75,6 +75,7 @@
+
@@ -94,6 +95,7 @@
+
@@ -145,10 +147,16 @@
-
+
+
+
+
+
+
+
diff --git a/src/Shared/HandyControl_Shared/Interactivity/Commands/PushMainWindow2TopCommand.cs b/src/Shared/HandyControl_Shared/Interactivity/Commands/PushMainWindow2TopCommand.cs
index 07a2427c8..386d6a788 100644
--- a/src/Shared/HandyControl_Shared/Interactivity/Commands/PushMainWindow2TopCommand.cs
+++ b/src/Shared/HandyControl_Shared/Interactivity/Commands/PushMainWindow2TopCommand.cs
@@ -1,8 +1,7 @@
using System;
using System.Windows;
using System.Windows.Input;
-using System.Windows.Interop;
-using HandyControl.Tools.Interop;
+using HandyControl.Tools;
namespace HandyControl.Interactivity
{
@@ -15,11 +14,7 @@ public void Execute(object parameter)
if (Application.Current.MainWindow != null && Application.Current.MainWindow.Visibility != Visibility.Visible)
{
Application.Current.MainWindow.Show();
- var hwndSource = (HwndSource)PresentationSource.FromDependencyObject(Application.Current.MainWindow);
- if (hwndSource != null)
- {
- InteropMethods.SetForegroundWindow(hwndSource.Handle);
- }
+ WindowHelper.SetWindowToForeground(Application.Current.MainWindow);
}
}
diff --git a/src/Shared/HandyControl_Shared/Themes/Basic/Geometries.xaml b/src/Shared/HandyControl_Shared/Themes/Basic/Geometries.xaml
index 2ec5da7a5..5a3b53572 100644
--- a/src/Shared/HandyControl_Shared/Themes/Basic/Geometries.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Basic/Geometries.xaml
@@ -52,7 +52,8 @@
M716.8 375.466667l34.133333 34.133333c17.066667 17.066667 42.666667 17.066667 59.733334 0 17.066667-17.066667 17.066667-42.666667 0-59.733333l-34.133334-34.133334 34.133334-34.133333c17.066667-17.066667 17.066667-42.666667 0-59.733333-17.066667-17.066667-42.666667-17.066667-59.733334 0l-34.133333 34.133333-34.133333-34.133333c-17.066667-17.066667-42.666667-17.066667-59.733334 0-17.066667 17.066667-17.066667 42.666667 0 59.733333l34.133334 34.133333-34.133334 34.133334c-17.066667 17.066667-17.066667 42.666667 0 59.733333 17.066667 17.066667 42.666667 17.066667 59.733334 0l34.133333-34.133333z m-426.666667 0l34.133334 34.133333c17.066667 17.066667 42.666667 17.066667 59.733333 0 17.066667-17.066667 17.066667-42.666667 0-59.733333l-34.133333-34.133334 34.133333-34.133333c17.066667-17.066667 17.066667-42.666667 0-59.733333-17.066667-17.066667-42.666667-17.066667-59.733333 0l-34.133334 34.133333-34.133333-34.133333c-17.066667-17.066667-42.666667-17.066667-59.733333 0-17.066667 17.066667-17.066667 42.666667 0 59.733333l34.133333 34.133333-34.133333 34.133334c-17.066667 17.066667-17.066667 42.666667 0 59.733333 17.066667 17.066667 42.666667 17.066667 59.733333 0l34.133333-34.133333zM0 85.333333c0-51.2 42.666667-85.333333 85.333333-85.333333h853.333334c51.2 0 85.333333 42.666667 85.333333 85.333333v853.333334c0 51.2-42.666667 85.333333-85.333333 85.333333H85.333333c-51.2 0-85.333333-42.666667-85.333333-85.333333V85.333333z m512 469.333334c-136.533333 0-230.4 68.266667-290.133333 196.266666-8.533333 17.066667 0 42.666667 17.066666 59.733334s42.666667 0 59.733334-17.066667c51.2-93.866667 110.933333-145.066667 221.866666-145.066667 102.4 0 170.666667 51.2 221.866667 145.066667 8.533333 17.066667 34.133333 25.6 59.733333 17.066667 17.066667-8.533333 25.6-34.133333 17.066667-59.733334-76.8-128-170.666667-196.266667-307.2-196.266666z
M512 0 30.11843 240.941297l0 542.117406 481.88157 240.941297 481.88157-240.941297L993.88157 240.941297 512 0zM575.776472 768.799969 460.188012 768.799969 460.188012 656.222073l115.588459 0L575.776472 768.799969zM623.335603 509.329685c-52.375829 36.723353-59.600363 55.988096-59.600363 84.885211l0 19.866447L468.616977 614.081343l0-26.489278c0-45.754021 13.846342-80.67124 61.406497-116.791866 46.957428-36.723353 57.79423-62.0082 57.79423-84.282484 0-25.284848-21.67258-54.181962-55.386393-54.181962-42.743457 0-70.436142 26.489278-82.477374 85.486914l-105.956088-21.67258c24.683144-111.976192 82.477374-157.127486 205.289345-157.127486 98.12985 0 157.72919 63.212631 157.72919 131.842639C707.017407 423.240044 688.956071 461.76953 623.335603 509.329685z
M 721.005 638.949 C 758.74 638.949 789.333 669.56 789.333 707.312 C 789.333 745.047 758.74 775.657 721.005 775.657 C 683.253 775.657 652.66 745.047 652.66 707.312 C 652.66 669.56 683.253 638.949 721.005 638.949 Z M 512.017 638.949 C 549.77 638.949 580.38 669.56 580.38 707.312 C 580.38 745.047 549.77 775.657 512.017 775.657 C 474.265 775.657 443.672 745.047 443.672 707.312 C 443.672 669.56 474.265 638.949 512.017 638.949 Z M 303.029 638.949 C 340.781 638.949 371.392 669.56 371.392 707.312 C 371.392 745.047 340.781 775.657 303.029 775.657 C 265.277 775.657 234.667 745.047 234.667 707.312 C 234.667 669.56 265.277 638.949 303.029 638.949 Z M 721.005 443.655 C 758.74 443.655 789.333 474.265 789.333 512.017 C 789.333 549.769 758.74 580.363 721.005 580.363 C 683.253 580.363 652.66 549.769 652.66 512.017 C 652.66 474.265 683.253 443.655 721.005 443.655 Z M 512.017 443.655 C 549.77 443.655 580.38 474.265 580.38 512.017 C 580.38 549.769 549.77 580.363 512.017 580.363 C 474.265 580.363 443.672 549.769 443.672 512.017 C 443.672 474.265 474.265 443.655 512.017 443.655 Z M 303.029 443.655 C 340.781 443.655 371.392 474.265 371.392 512.017 C 371.392 549.769 340.781 580.363 303.029 580.363 C 265.277 580.363 234.667 549.769 234.667 512.017 C 234.667 474.265 265.277 443.655 303.029 443.655 Z M 721.005 248.343 C 758.74 248.343 789.333 278.953 789.333 316.688 C 789.333 354.44 758.74 385.051 721.005 385.051 C 683.253 385.051 652.66 354.44 652.66 316.688 C 652.66 278.953 683.253 248.343 721.005 248.343 Z M 512.017 248.343 C 549.77 248.343 580.38 278.953 580.38 316.688 C 580.38 354.44 549.77 385.051 512.017 385.051 C 474.265 385.051 443.672 354.44 443.672 316.688 C 443.672 278.953 474.265 248.343 512.017 248.343 Z M 303.029 248.343 C 340.781 248.343 371.392 278.953 371.392 316.688 C 371.392 354.44 340.781 385.051 303.029 385.051 C 265.277 385.051 234.667 354.44 234.667 316.688 C 234.667 278.953 265.277 248.343 303.029 248.343 Z
- M384 896C384 825.307552 440.814697 768 512 768 582.692448 768 640 824.814694 640 896 640 966.692448 583.185303 1024 512 1024 441.307552 1024 384 967.185306 384 896ZM384 512C384 441.307552 440.814697 384 512 384 582.692448 384 640 440.814697 640 512 640 582.692448 583.185303 640 512 640 441.307552 640 384 583.185303 384 512ZM384 128C384 57.307552 440.814697 0 512 0 582.692448 0 640 56.814697 640 128 640 198.692448 583.185303 256 512 256 441.307552 256 384 199.185303 384 128Z
+ M2,12 C3.1045694,12 4,12.895431 4,14 4,15.104569 3.1045694,16 2,16 0.89543051,16 0,15.104569 0,14 0,12.895431 0.89543051,12 2,12 z M2,6 C3.1045694,6 4,6.8954306 4,8 4,9.1045694 3.1045694,10 2,10 0.89543051,10 0,9.1045694 0,8 0,6.8954306 0.89543051,6 2,6 z M2,0 C3.1045694,0 4,0.89543056 4,2 4,3.1045694 3.1045694,4 2,4 0.89543051,4 0,3.1045694 0,2 0,0.89543056 0.89543051,0 2,0 z
+ M14,0 C15.104569,0 16,0.89543051 16,2 16,3.1045694 15.104569,4 14,4 12.895431,4 12,3.1045694 12,2 12,0.89543051 12.895431,0 14,0 z M8,0 C9.1045694,0 10,0.89543051 10,2 10,3.1045694 9.1045694,4 8,4 6.8954306,4 6,3.1045694 6,2 6,0.89543051 6.8954306,0 8,0 z M2,0 C3.1045694,0 4,0.89543051 4,2 4,3.1045694 3.1045694,4 2,4 0.89543056,4 0,3.1045694 0,2 0,0.89543051 0.89543056,0 2,0 z
M798.165333 97.834667a42.624 42.624 0 0 0-60.330666 0l-140.629334 140.629333-55.381333-55.296-60.330667 60.330667 55.381334 55.296-353.706667 353.706666a42.709333 42.709333 0 0 0-11.221333 19.84l-42.666667 170.666667a42.538667 42.538667 0 0 0 51.712 51.712l170.666667-42.666667c7.509333-1.877333 14.378667-5.76 19.84-11.221333l353.792-353.792 55.210666 55.125333 60.330667-60.330666-55.210667-55.125334 140.544-140.544a42.624 42.624 0 0 0 0-60.330666l-128-128zM319.488 772.138667l-90.197333 22.570666 22.570666-90.197333 345.386667-345.386667 67.669333 67.584-345.429333 345.429334z
M23.063,0L11,12L3,6L0,7v15l3,2l8-6l11.875,12L30,27V2.938L23.063,0z M3,19v-8l5,4L3,19z M23,21l-8-6l8-6V21z
M827.904 541.184a278.592 278.592 0 0 0 0-58.368l73.728-58.368c15.872-13.056 20.224-35.584 9.728-53.504l-78.592-137.728c-9.984-17.408-31.232-25.856-51.712-18.176l-86.528 35.072c-15.872-11.52-32.512-21.248-49.664-29.184l-12.8-92.928c-3.072-20.224-20.736-35.584-41.216-35.584h-157.44c-20.736 0-38.144 14.848-41.216 35.84L378.88 221.44c-17.152 7.936-33.792 17.92-49.664 29.184L242.688 215.296c-18.688-7.168-41.216 0.768-51.2 18.176L112.64 371.2c-10.24 17.92-6.144 40.448 10.24 53.76l73.472 58.112c-1.024 9.472-1.536 19.2-1.536 29.184 0 9.728 0.512 19.456 1.536 29.184l-73.984 58.368c-15.872 13.056-19.968 35.584-9.728 53.248l78.848 137.728c9.984 17.408 32 25.856 51.456 17.92l86.528-35.072c15.872 11.52 32.512 21.248 49.664 29.184l13.056 93.696c3.328 20.48 20.48 35.328 41.216 35.328h157.44c20.48 0 38.144-15.36 41.216-35.84l13.056-93.184c17.152-7.936 33.792-17.664 49.664-29.184l86.784 35.328c4.864 1.792 9.984 2.816 15.104 2.816 14.848 0 28.672-7.936 36.096-20.992l78.592-137.728c10.24-17.664 6.4-40.192-9.984-53.76l-73.472-58.112z m-25.344 231.168l-99.584-40.448c-7.424-3.072-15.872-1.792-22.272 3.072-19.712 15.36-40.704 27.648-62.464 36.608-7.424 3.072-12.544 9.728-13.568 17.664l-14.592 104.96-155.392 2.304-15.104-107.264c-1.024-7.936-6.4-14.592-13.568-17.664-21.76-8.96-42.752-21.504-62.464-36.608-4.096-3.072-8.96-4.608-13.824-4.608-2.816 0-5.888 0.512-8.448 1.536l-96.256 41.472-80.896-137.216 84.48-66.816c6.144-4.864 9.472-12.8 8.448-20.48-1.536-12.032-2.56-24.32-2.56-36.608 0-12.288 1.024-24.576 2.56-36.608 1.024-7.936-2.048-15.616-8.448-20.48l-83.712-64 76.544-139.264 99.584 40.448c7.424 3.072 15.872 1.792 22.272-3.072 19.712-15.36 40.96-27.648 62.72-36.864 7.424-3.072 12.544-9.728 13.568-17.664l12.544-104.704 157.696-2.304 15.104 107.264c1.024 7.936 6.4 14.592 13.568 17.664 21.76 8.96 42.752 21.504 62.464 36.864 6.4 4.864 14.848 6.144 22.272 3.072l96.256-41.472 80.896 137.216-84.48 66.816c-6.144 4.864-9.472 12.544-8.448 20.48 1.536 12.032 2.56 24.32 2.56 36.608 0 12.288-1.024 24.576-2.56 36.608-1.024 7.936 2.304 15.616 8.448 20.48l83.712 63.744-77.056 139.264zM512 345.6c-91.136 0-165.12 74.752-165.12 166.4s73.984 166.4 165.12 166.4 165.12-74.752 165.12-166.4-73.984-166.4-165.12-166.4z m0 297.216c-71.168 0-129.28-58.624-129.28-130.816 0-72.192 58.112-130.816 129.28-130.816s129.28 58.624 129.28 130.816c0 72.192-57.856 130.816-129.28 130.816z
diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/Base/RunningBlockBaseStyle.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/Base/RunningBlockBaseStyle.xaml
index 3b61ada6c..69b569c8a 100644
--- a/src/Shared/HandyControl_Shared/Themes/Styles/Base/RunningBlockBaseStyle.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Styles/Base/RunningBlockBaseStyle.xaml
@@ -16,7 +16,7 @@
-
+
@@ -28,7 +28,7 @@
-
+
diff --git a/src/Shared/HandyControl_Shared/Themes/Styles/Base/ToolBarBaseStyle.xaml b/src/Shared/HandyControl_Shared/Themes/Styles/Base/ToolBarBaseStyle.xaml
index 261234d09..21051f339 100644
--- a/src/Shared/HandyControl_Shared/Themes/Styles/Base/ToolBarBaseStyle.xaml
+++ b/src/Shared/HandyControl_Shared/Themes/Styles/Base/ToolBarBaseStyle.xaml
@@ -60,12 +60,29 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Shared/HandyControl_Shared/Tools/Helper/WindowHelper.cs b/src/Shared/HandyControl_Shared/Tools/Helper/WindowHelper.cs
index b951640a7..fcbb36b6f 100644
--- a/src/Shared/HandyControl_Shared/Tools/Helper/WindowHelper.cs
+++ b/src/Shared/HandyControl_Shared/Tools/Helper/WindowHelper.cs
@@ -152,5 +152,42 @@ public static Thickness WindowMaximizedPadding
public static IntPtr GetHandle(this Window window) => new WindowInteropHelper(window).EnsureHandle();
public static HwndSource GetHwndSource(this Window window) => HwndSource.FromHwnd(window.GetHandle());
+
+ ///
+ /// 让窗口激活作为前台最上层窗口
+ ///
+ ///
+ public static void SetWindowToForeground(Window window)
+ {
+ // [WPF 让窗口激活作为前台最上层窗口的方法 - lindexi - 博客园](https://www.cnblogs.com/lindexi/p/12749671.html)
+ var interopHelper = new WindowInteropHelper(window);
+ var thisWindowThreadId = InteropMethods.GetWindowThreadProcessId(interopHelper.Handle, out _);
+ var currentForegroundWindow = InteropMethods.GetForegroundWindow();
+ var currentForegroundWindowThreadId = InteropMethods.GetWindowThreadProcessId(currentForegroundWindow, out _);
+
+ // [c# - Bring a window to the front in WPF - Stack Overflow](https://stackoverflow.com/questions/257587/bring-a-window-to-the-front-in-wpf )
+ // [SetForegroundWindow的正确用法 - 子坞 - 博客园](https://www.cnblogs.com/ziwuge/archive/2012/01/06/2315342.html )
+ /*
+ 1.得到窗口句柄FindWindow
+ 2.切换键盘输入焦点AttachThreadInput
+ 3.显示窗口ShowWindow(有些窗口被最小化/隐藏了)
+ 4.更改窗口的Z Order,SetWindowPos使之最上,为了不影响后续窗口的Z Order,改完之后,再还原
+ 5.最后SetForegroundWindow
+ */
+
+ InteropMethods.AttachThreadInput(currentForegroundWindowThreadId, thisWindowThreadId, true);
+
+ window.Show();
+ window.Activate();
+ // 去掉和其他线程的输入链接
+ InteropMethods.AttachThreadInput(currentForegroundWindowThreadId, thisWindowThreadId, false);
+
+ // 用于踢掉其他的在上层的窗口
+ if (window.Topmost != true)
+ {
+ window.Topmost = true;
+ window.Topmost = false;
+ }
+ }
}
}
diff --git a/src/Shared/HandyControl_Shared/Tools/Interop/InteropMethods.cs b/src/Shared/HandyControl_Shared/Tools/Interop/InteropMethods.cs
index 72a223511..ea9cbd44b 100644
--- a/src/Shared/HandyControl_Shared/Tools/Interop/InteropMethods.cs
+++ b/src/Shared/HandyControl_Shared/Tools/Interop/InteropMethods.cs
@@ -43,6 +43,13 @@ internal static extern bool ReadProcessMemory(IntPtr hProcess, IntPtr lpBaseAddr
[DllImport(InteropValues.ExternDll.User32, SetLastError = true, CharSet = CharSet.Auto)]
internal static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
+ [DllImport(InteropValues.ExternDll.User32, SetLastError = true, CharSet = CharSet.Auto)]
+ internal static extern bool AttachThreadInput(in uint currentForegroundWindowThreadId,
+ in uint thisWindowThreadId, bool isAttach);
+
+ [DllImport(InteropValues.ExternDll.User32, SetLastError = true, CharSet = CharSet.Auto)]
+ internal static extern IntPtr GetForegroundWindow();
+
[DllImport(InteropValues.ExternDll.Kernel32, SetLastError = true, CharSet = CharSet.Auto)]
internal static extern IntPtr OpenProcess(InteropValues.ProcessAccess dwDesiredAccess,
[MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, uint dwProcessId);