From 411541d578e50670798c5929292a75be4411de74 Mon Sep 17 00:00:00 2001
From: NaBian <836904362@qq.com>
Date: Thu, 7 Mar 2019 00:12:44 +0800
Subject: [PATCH] add Badge
---
HandyControl/Controls/Attach/BorderElement.cs | 7 +---
.../Controls/{Badge => Other}/Badge.cs | 16 ++++++-
HandyControl/Controls/Panel/SimplePanel.cs | 6 +++
HandyControl/HandyControl.csproj | 2 +-
HandyControl/Themes/Styles/Badge.xaml | 10 ++---
.../Themes/Styles/Base/BadgeBaseStyle.xaml | 39 ++++++++++++------
.../UserControl/Controls/BadgeDemoCtl.xaml | 13 +++++-
.../UserControl/Main/LeftMainContent.xaml | 2 +-
README.md | 4 ++
Resources/Badge.png | Bin 0 -> 4291 bytes
10 files changed, 70 insertions(+), 29 deletions(-)
rename HandyControl/Controls/{Badge => Other}/Badge.cs (75%)
create mode 100644 Resources/Badge.png
diff --git a/HandyControl/Controls/Attach/BorderElement.cs b/HandyControl/Controls/Attach/BorderElement.cs
index c0352bf9..7ee4455b 100644
--- a/HandyControl/Controls/Attach/BorderElement.cs
+++ b/HandyControl/Controls/Attach/BorderElement.cs
@@ -1,5 +1,4 @@
-using System;
-using System.Windows;
+using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using HandyControl.Data;
@@ -25,10 +24,6 @@ namespace HandyControl.Controls
{
if ((bool)e.NewValue)
{
- border.SetBinding(FrameworkElement.MinWidthProperty,
- new Binding(FrameworkElement.ActualWidthProperty.Name) { Source = border });
- border.SetBinding(FrameworkElement.MinHeightProperty,
- new Binding(FrameworkElement.ActualHeightProperty.Name) { Source = border });
var binding = new MultiBinding
{
Converter = new BorderCircularConverter()
diff --git a/HandyControl/Controls/Badge/Badge.cs b/HandyControl/Controls/Other/Badge.cs
similarity index 75%
rename from HandyControl/Controls/Badge/Badge.cs
rename to HandyControl/Controls/Other/Badge.cs
index 23faa7f4..85e85c8b 100644
--- a/HandyControl/Controls/Badge/Badge.cs
+++ b/HandyControl/Controls/Other/Badge.cs
@@ -4,6 +4,9 @@ using HandyControl.Data;
namespace HandyControl.Controls
{
+ ///
+ /// 标记
+ ///
public class Badge : ContentControl
{
public static readonly DependencyProperty TextProperty = DependencyProperty.Register(
@@ -22,7 +25,7 @@ namespace HandyControl.Controls
{
var ctl = (Badge) d;
var v = (int) e.NewValue;
- ctl.Text = v.ToString();
+ ctl.Text = v <= ctl.Maximum ? v.ToString() : $"{ctl.Maximum}+";
}
public int Value
@@ -41,12 +44,21 @@ namespace HandyControl.Controls
}
public static readonly DependencyProperty MaximumProperty = DependencyProperty.Register(
- "Maximum", typeof(int), typeof(Badge), new PropertyMetadata(ValueBoxes.Int99Box));
+ "Maximum", typeof(int), typeof(Badge), new PropertyMetadata(ValueBoxes.Int99Box, OnValueChanged));
public int Maximum
{
get => (int) GetValue(MaximumProperty);
set => SetValue(MaximumProperty, value);
}
+
+ public static readonly DependencyProperty BadgeMarginProperty = DependencyProperty.Register(
+ "BadgeMargin", typeof(Thickness), typeof(Badge), new PropertyMetadata(default(Thickness)));
+
+ public Thickness BadgeMargin
+ {
+ get => (Thickness) GetValue(BadgeMarginProperty);
+ set => SetValue(BadgeMarginProperty, value);
+ }
}
}
\ No newline at end of file
diff --git a/HandyControl/Controls/Panel/SimplePanel.cs b/HandyControl/Controls/Panel/SimplePanel.cs
index 41e9c532..7f774b8b 100644
--- a/HandyControl/Controls/Panel/SimplePanel.cs
+++ b/HandyControl/Controls/Panel/SimplePanel.cs
@@ -4,6 +4,12 @@ using System.Windows.Controls;
namespace HandyControl.Controls
{
+ ///
+ /// 用以代替Grid
+ ///
+ ///
+ /// 当不需要Grid的行、列分隔等功能时建议用此轻量级类代替
+ ///
public class SimplePanel : Panel
{
protected override Size MeasureOverride(Size availableSize)
diff --git a/HandyControl/HandyControl.csproj b/HandyControl/HandyControl.csproj
index da2a09d7..6e20ed86 100644
--- a/HandyControl/HandyControl.csproj
+++ b/HandyControl/HandyControl.csproj
@@ -109,7 +109,7 @@
-
+
diff --git a/HandyControl/Themes/Styles/Badge.xaml b/HandyControl/Themes/Styles/Badge.xaml
index a6572209..5a1cc0f3 100644
--- a/HandyControl/Themes/Styles/Badge.xaml
+++ b/HandyControl/Themes/Styles/Badge.xaml
@@ -10,23 +10,23 @@
-
-
-
-
-
diff --git a/HandyControl/Themes/Styles/Base/BadgeBaseStyle.xaml b/HandyControl/Themes/Styles/Base/BadgeBaseStyle.xaml
index f17adcc1..d1e7d26e 100644
--- a/HandyControl/Themes/Styles/Base/BadgeBaseStyle.xaml
+++ b/HandyControl/Themes/Styles/Base/BadgeBaseStyle.xaml
@@ -6,24 +6,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/HandyControlDemo/UserControl/Controls/BadgeDemoCtl.xaml b/HandyControlDemo/UserControl/Controls/BadgeDemoCtl.xaml
index f030241c..4e91afbc 100644
--- a/HandyControlDemo/UserControl/Controls/BadgeDemoCtl.xaml
+++ b/HandyControlDemo/UserControl/Controls/BadgeDemoCtl.xaml
@@ -5,10 +5,19 @@
xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs"
Background="{DynamicResource RegionBrush}">
-
+
-
+
+
+
+
+
+
+
+
+
+
diff --git a/HandyControlDemo/UserControl/Main/LeftMainContent.xaml b/HandyControlDemo/UserControl/Main/LeftMainContent.xaml
index f83e9744..02714bdf 100644
--- a/HandyControlDemo/UserControl/Main/LeftMainContent.xaml
+++ b/HandyControlDemo/UserControl/Main/LeftMainContent.xaml
@@ -388,7 +388,7 @@
-
+
diff --git a/README.md b/README.md
index 35673c7e..62519dd6 100644
--- a/README.md
+++ b/README.md
@@ -39,6 +39,10 @@ Step 3:enjoy coding
## Latest examples
+### Badge
+
+
+
### Gravatar

diff --git a/Resources/Badge.png b/Resources/Badge.png
new file mode 100644
index 0000000000000000000000000000000000000000..2b015d4563d6fe6c8aa3648b9313b6d9e6bd63f7
GIT binary patch
literal 4291
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
R)6WSyuz@+KQSbgg{|C?LQqKSY
literal 0
HcmV?d00001