diff --git a/HandyControl/Controls/Attach/BorderElement.cs b/HandyControl/Controls/Attach/BorderElement.cs index 05db296b..7ee4455b 100644 --- a/HandyControl/Controls/Attach/BorderElement.cs +++ b/HandyControl/Controls/Attach/BorderElement.cs @@ -1,4 +1,8 @@ using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using HandyControl.Data; +using HandyControl.Tools.Converter; namespace HandyControl.Controls { @@ -10,5 +14,37 @@ namespace HandyControl.Controls public static void SetCornerRadius(DependencyObject element, CornerRadius value) => element.SetValue(CornerRadiusProperty, value); public static CornerRadius GetCornerRadius(DependencyObject element) => (CornerRadius)element.GetValue(CornerRadiusProperty); + + public static readonly DependencyProperty CircularProperty = DependencyProperty.RegisterAttached( + "Circular", typeof(bool), typeof(BorderElement), new PropertyMetadata(ValueBoxes.FalseBox, OnCircularChanged)); + + private static void OnCircularChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + if (d is Border border) + { + if ((bool)e.NewValue) + { + var binding = new MultiBinding + { + Converter = new BorderCircularConverter() + }; + binding.Bindings.Add(new Binding(FrameworkElement.ActualWidthProperty.Name) {Source = border}); + binding.Bindings.Add(new Binding(FrameworkElement.ActualHeightProperty.Name) { Source = border }); + border.SetBinding(Border.CornerRadiusProperty, binding); + } + else + { + BindingOperations.ClearBinding(border, FrameworkElement.MinWidthProperty); + BindingOperations.ClearBinding(border, FrameworkElement.MinHeightProperty); + BindingOperations.ClearBinding(border, Border.CornerRadiusProperty); + } + } + } + + public static void SetCircular(DependencyObject element, bool value) + => element.SetValue(CircularProperty, value); + + public static bool GetCircular(DependencyObject element) + => (bool) element.GetValue(CircularProperty); } } \ No newline at end of file diff --git a/HandyControl/Controls/Attach/LinkElement.cs b/HandyControl/Controls/Attach/LinkElement.cs index 5da5d111..d962952c 100644 --- a/HandyControl/Controls/Attach/LinkElement.cs +++ b/HandyControl/Controls/Attach/LinkElement.cs @@ -14,7 +14,7 @@ namespace HandyControl.Controls { if (d is UIElement element) { - CreateTrriger(element, (string) e.NewValue); + CreateTrigger(element, (string) e.NewValue); } } @@ -27,7 +27,7 @@ namespace HandyControl.Controls private static CommandBinding GetCommandBinding(DependencyObject element) => (CommandBinding) element.GetValue(CommandBindingProperty); - private static void CreateTrriger(UIElement element, string link) + private static void CreateTrigger(UIElement element, string link) { element.CommandBindings.Remove(GetCommandBinding(element)); element.SetCurrentValue(CommandBindingProperty, DependencyProperty.UnsetValue); diff --git a/HandyControl/Controls/Attach/VisualElement.cs b/HandyControl/Controls/Attach/VisualElement.cs index 511922bc..2e748dae 100644 --- a/HandyControl/Controls/Attach/VisualElement.cs +++ b/HandyControl/Controls/Attach/VisualElement.cs @@ -12,6 +12,6 @@ namespace HandyControl.Controls => element.SetValue(HighlightBrushProperty, value); public static Brush GetHighlightBrush(DependencyObject element) - => (Brush) element.GetValue(HighlightBrushProperty); + => (Brush) element.GetValue(HighlightBrushProperty); } } \ No newline at end of file diff --git a/HandyControl/Controls/Base/IGravatarGenerator.cs b/HandyControl/Controls/Base/IGravatarGenerator.cs new file mode 100644 index 00000000..37ddca34 --- /dev/null +++ b/HandyControl/Controls/Base/IGravatarGenerator.cs @@ -0,0 +1,7 @@ +namespace HandyControl.Controls +{ + public interface IGravatarGenerator + { + object GetGravatar(string id); + } +} \ No newline at end of file diff --git a/HandyControl/Controls/Input/SearchBar.cs b/HandyControl/Controls/Input/SearchBar.cs index 6243b3c8..5657ae1f 100644 --- a/HandyControl/Controls/Input/SearchBar.cs +++ b/HandyControl/Controls/Input/SearchBar.cs @@ -47,6 +47,7 @@ namespace HandyControl.Controls _textBox = GetTemplateChild(ElementTextBox) as WatermarkTextBox; if (_textBox != null) { + _textBox.Text = Text; SetBinding(TextProperty, new Binding(TextProperty.Name) { Source = _textBox, @@ -191,4 +192,4 @@ namespace HandyControl.Controls return result.Data; } } -} \ No newline at end of file +} diff --git a/HandyControl/Controls/Other/AnimationPath.cs b/HandyControl/Controls/Other/AnimationPath.cs index ff126038..054dd802 100644 --- a/HandyControl/Controls/Other/AnimationPath.cs +++ b/HandyControl/Controls/Other/AnimationPath.cs @@ -5,6 +5,8 @@ using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using HandyControl.Data; +using HandyControl.Expression.Drawing; +using HandyControl.Tools.Extension; namespace HandyControl.Controls { @@ -17,6 +19,11 @@ namespace HandyControl.Controls /// private Storyboard _storyboard; + /// + /// 路径长度 + /// + private double _pathLength; + /// /// 路径 /// @@ -47,8 +54,7 @@ namespace HandyControl.Controls /// 路径长度 /// public static readonly DependencyProperty PathLengthProperty = DependencyProperty.Register( - "PathLength", typeof(double), typeof(AnimationPath), new FrameworkPropertyMetadata(ValueBoxes.Double0Box, - OnPropertiesChanged)); + "PathLength", typeof(double), typeof(AnimationPath), new FrameworkPropertyMetadata(ValueBoxes.Double0Box, OnPropertiesChanged)); /// /// 路径长度 @@ -146,34 +152,47 @@ namespace HandyControl.Controls remove => RemoveHandler(CompletedEvent, value); } + /// + /// 更新路径 + /// private void UpdatePath() { if (!Duration.HasTimeSpan || !IsPlaying) return; - StrokeDashOffset = PathLength; + + _pathLength = PathLength > 0 ? PathLength : Data.GetTotalLength(new Size(ActualWidth, ActualHeight), StrokeThickness); + + if (MathHelper.IsVerySmall(_pathLength)) return; + + StrokeDashOffset = _pathLength; StrokeDashArray = new DoubleCollection(new List { - PathLength, - PathLength + _pathLength, + _pathLength }); //定义动画 + if (_storyboard != null) + { + _storyboard.Stop(); + _storyboard.Completed -= Storyboard_Completed; + } _storyboard = new Storyboard { RepeatBehavior = RepeatBehavior }; - _storyboard.Completed += (s, e) => RaiseEvent(new RoutedEventArgs(CompletedEvent)); + _storyboard.Completed += Storyboard_Completed; var frames = new DoubleAnimationUsingKeyFrames(); //开始位置 var frame0 = new LinearDoubleKeyFrame { - Value = PathLength, + Value = _pathLength, KeyTime = KeyTime.FromTimeSpan(TimeSpan.Zero) }; //结束位置 var frame1 = new LinearDoubleKeyFrame { - Value = -PathLength, + Value = -_pathLength, KeyTime = KeyTime.FromTimeSpan(Duration.TimeSpan) }; frames.KeyFrames.Add(frame0); @@ -185,5 +204,7 @@ namespace HandyControl.Controls _storyboard.Begin(); } + + private void Storyboard_Completed(object sender, EventArgs e) => RaiseEvent(new RoutedEventArgs(CompletedEvent)); } } \ No newline at end of file diff --git a/HandyControl/Controls/Other/Badge.cs b/HandyControl/Controls/Other/Badge.cs new file mode 100644 index 00000000..85e85c8b --- /dev/null +++ b/HandyControl/Controls/Other/Badge.cs @@ -0,0 +1,64 @@ +using System.Windows; +using System.Windows.Controls; +using HandyControl.Data; + +namespace HandyControl.Controls +{ + /// + /// 标记 + /// + public class Badge : ContentControl + { + public static readonly DependencyProperty TextProperty = DependencyProperty.Register( + "Text", typeof(string), typeof(Badge), new PropertyMetadata(default(string))); + + public string Text + { + get => (string) GetValue(TextProperty); + set => SetValue(TextProperty, value); + } + + public static readonly DependencyProperty ValueProperty = DependencyProperty.Register( + "Value", typeof(int), typeof(Badge), new PropertyMetadata(ValueBoxes.Int0Box, OnValueChanged)); + + private static void OnValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + var ctl = (Badge) d; + var v = (int) e.NewValue; + ctl.Text = v <= ctl.Maximum ? v.ToString() : $"{ctl.Maximum}+"; + } + + public int Value + { + get => (int) GetValue(ValueProperty); + set => SetValue(ValueProperty, value); + } + + public static readonly DependencyProperty IsDotProperty = DependencyProperty.Register( + "IsDot", typeof(bool), typeof(Badge), new PropertyMetadata(ValueBoxes.FalseBox)); + + public bool IsDot + { + get => (bool) GetValue(IsDotProperty); + set => SetValue(IsDotProperty, value); + } + + public static readonly DependencyProperty MaximumProperty = DependencyProperty.Register( + "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/Other/Dialog.cs b/HandyControl/Controls/Other/Dialog.cs new file mode 100644 index 00000000..a5f18d03 --- /dev/null +++ b/HandyControl/Controls/Other/Dialog.cs @@ -0,0 +1,69 @@ +using System.Windows.Controls; +using System.Windows.Documents; +using System.Windows.Input; +using HandyControl.Interactivity; +using HandyControl.Tools; + +namespace HandyControl.Controls +{ + public class Dialog : ContentControl + { + private Adorner _container; + + public Dialog() + { + CommandBindings.Add(new CommandBinding(ControlCommands.Close, (s, e) => Close())); + } + + public static Dialog Show(object content) + { + var dialog = new Dialog + { + Content = content + }; + + var window = VisualHelper.GetActiveWindow(); + if (window != null) + { + var decorator = VisualHelper.GetChild(window); + if (decorator != null) + { + if (decorator.Child != null) + { + decorator.Child.IsEnabled = false; + } + var layer = decorator.AdornerLayer; + if (layer != null) + { + var container = new AdornerContainer(layer) + { + Child = dialog + }; + dialog._container = container; + layer.Add(container); + } + } + } + + return dialog; + } + + public void Close() + { + var window = VisualHelper.GetActiveWindow(); + if (window != null) + { + var decorator = VisualHelper.GetChild(window); + if (decorator != null) + { + if (decorator.Child != null) + { + decorator.Child.IsEnabled = true; + } + var layer = decorator.AdornerLayer; + layer?.Remove(_container); + } + } + } + } +} \ No newline at end of file diff --git a/HandyControl/Controls/Other/GotoTop.cs b/HandyControl/Controls/Other/GotoTop.cs index 62d004a3..63df976c 100644 --- a/HandyControl/Controls/Other/GotoTop.cs +++ b/HandyControl/Controls/Other/GotoTop.cs @@ -30,7 +30,7 @@ namespace HandyControl.Controls { _scrollViewer.ScrollChanged -= ScrollViewer_ScrollChanged; } - _scrollViewer = VisualHelper.GetGetChild(obj); + _scrollViewer = VisualHelper.GetChild(obj); if (_scrollViewer != null) { _scrollViewer.ScrollChanged += ScrollViewer_ScrollChanged; diff --git a/HandyControl/Controls/Other/Gravatar.cs b/HandyControl/Controls/Other/Gravatar.cs new file mode 100644 index 00000000..1ba9da89 --- /dev/null +++ b/HandyControl/Controls/Other/Gravatar.cs @@ -0,0 +1,51 @@ +using System.Windows; +using System.Windows.Controls; +using System.Windows.Media; +using HandyControl.Tools; + +namespace HandyControl.Controls +{ + public class Gravatar : ContentControl + { + public static readonly DependencyProperty GeneratorProperty = DependencyProperty.Register( + "Generator", typeof(IGravatarGenerator), typeof(Gravatar), new PropertyMetadata(new GithubGravatarGenerator())); + + public IGravatarGenerator Generator + { + get => (IGravatarGenerator) GetValue(GeneratorProperty); + set => SetValue(GeneratorProperty, value); + } + + public static readonly DependencyProperty IdProperty = DependencyProperty.Register( + "Id", typeof(string), typeof(Gravatar), new PropertyMetadata(default(string), OnIdChanged)); + + private static void OnIdChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + var ctl = (Gravatar) d; + if (ctl.Source != null) return; + ctl.Content = ctl.Generator.GetGravatar((string)e.NewValue); + } + + public string Id + { + get => (string) GetValue(IdProperty); + set => SetValue(IdProperty, value); + } + + + public static readonly DependencyProperty SourceProperty = DependencyProperty.Register( + "Source", typeof(ImageSource), typeof(Gravatar), new PropertyMetadata(default(ImageSource), OnSourceChanged)); + + private static void OnSourceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) + { + var ctl = (Gravatar)d; + ctl.Background = new ImageBrush((ImageSource)e.NewValue); + } + + public ImageSource Source + { + get => (ImageSource) GetValue(SourceProperty); + set => SetValue(SourceProperty, value); + } + } +} \ No newline at end of file diff --git a/HandyControl/Controls/Panel/SimplePanel.cs b/HandyControl/Controls/Panel/SimplePanel.cs new file mode 100644 index 00000000..7f774b8b --- /dev/null +++ b/HandyControl/Controls/Panel/SimplePanel.cs @@ -0,0 +1,44 @@ +using System; +using System.Windows; +using System.Windows.Controls; + +namespace HandyControl.Controls +{ + /// + /// 用以代替Grid + /// + /// + /// 当不需要Grid的行、列分隔等功能时建议用此轻量级类代替 + /// + public class SimplePanel : Panel + { + protected override Size MeasureOverride(Size availableSize) + { + var maxSize = new Size(); + var children = InternalChildren; + + for (int i = 0, count = children.Count; i < count; ++i) + { + var child = children[i]; + if (child != null) + { + child.Measure(availableSize); + maxSize.Width = Math.Max(maxSize.Width, child.DesiredSize.Width); + maxSize.Height = Math.Max(maxSize.Height, child.DesiredSize.Height); + } + } + + return maxSize; + } + + protected override Size ArrangeOverride(Size arrangeSize) + { + foreach (UIElement child in InternalChildren) + { + child?.Arrange(new Rect(arrangeSize)); + } + + return arrangeSize; + } + } +} \ No newline at end of file diff --git a/HandyControl/Controls/Other/CircleProgressBar.cs b/HandyControl/Controls/ProgressBar/CircleProgressBar.cs similarity index 100% rename from HandyControl/Controls/Other/CircleProgressBar.cs rename to HandyControl/Controls/ProgressBar/CircleProgressBar.cs diff --git a/HandyControl/Controls/ProgressBar/WaveProgressBar.cs b/HandyControl/Controls/ProgressBar/WaveProgressBar.cs new file mode 100644 index 00000000..196665ca --- /dev/null +++ b/HandyControl/Controls/ProgressBar/WaveProgressBar.cs @@ -0,0 +1,119 @@ +using System.Windows; +using System.Windows.Controls.Primitives; +using System.Windows.Media; +using HandyControl.Data; +using HandyControl.Expression.Drawing; + +namespace HandyControl.Controls +{ + /// + /// 波浪进度条 + /// + [TemplatePart(Name = ElementWave, Type = typeof(FrameworkElement))] + [TemplatePart(Name = ElementClip, Type = typeof(FrameworkElement))] + public class WaveProgressBar : RangeBase + { + private const string ElementWave = "PART_Wave"; + + private const string ElementClip = "PART_Clip"; + + private FrameworkElement _waveElement; + + private const double TranslateTransformMinY = -20; + + private double _translateTransformYRange; + + private TranslateTransform _translateTransform; + + public WaveProgressBar() => Loaded += (s, e) => UpdateWave(Value); + + static WaveProgressBar() + { + FocusableProperty.OverrideMetadata(typeof(WaveProgressBar), + new FrameworkPropertyMetadata(ValueBoxes.FalseBox)); + MaximumProperty.OverrideMetadata(typeof(WaveProgressBar), + new FrameworkPropertyMetadata(ValueBoxes.Double100Box)); + } + + protected override void OnValueChanged(double oldValue, double newValue) + { + base.OnValueChanged(oldValue, newValue); + + UpdateWave(newValue); + } + + private void UpdateWave(double value) + { + if (_translateTransform == null || MathHelper.IsVerySmall(Maximum)) return; + var scale = 1 - value / Maximum; + var y = _translateTransformYRange * scale + TranslateTransformMinY; + _translateTransform.Y = y; + } + + public override void OnApplyTemplate() + { + base.OnApplyTemplate(); + + _waveElement = GetTemplateChild(ElementWave) as FrameworkElement; + var clipElement = GetTemplateChild(ElementClip) as FrameworkElement; + + if (_waveElement != null && clipElement != null) + { + _translateTransform = new TranslateTransform + { + Y = clipElement.Height + }; + _translateTransformYRange = clipElement.Height - TranslateTransformMinY; + _waveElement.RenderTransform = new TransformGroup + { + Children = {_translateTransform} + }; + } + } + + public static readonly DependencyProperty TextProperty = DependencyProperty.Register( + "Text", typeof(string), typeof(WaveProgressBar), new PropertyMetadata(default(string))); + + public string Text + { + get => (string)GetValue(TextProperty); + set => SetValue(TextProperty, value); + } + + public static readonly DependencyProperty ShowTextProperty = DependencyProperty.Register( + "ShowText", typeof(bool), typeof(WaveProgressBar), new PropertyMetadata(ValueBoxes.TrueBox)); + + public bool ShowText + { + get => (bool)GetValue(ShowTextProperty); + set => SetValue(ShowTextProperty, value); + } + + public static readonly DependencyProperty WaveFillProperty = DependencyProperty.Register( + "WaveFill", typeof(Brush), typeof(WaveProgressBar), new PropertyMetadata(default(Brush))); + + public Brush WaveFill + { + get => (Brush) GetValue(WaveFillProperty); + set => SetValue(WaveFillProperty, value); + } + + public static readonly DependencyProperty WaveThicknessProperty = DependencyProperty.Register( + "WaveThickness", typeof(double), typeof(WaveProgressBar), new PropertyMetadata(ValueBoxes.Double0Box)); + + public double WaveThickness + { + get => (double) GetValue(WaveThicknessProperty); + set => SetValue(WaveThicknessProperty, value); + } + + public static readonly DependencyProperty WaveStrokeProperty = DependencyProperty.Register( + "WaveStroke", typeof(Brush), typeof(WaveProgressBar), new PropertyMetadata(default(Brush))); + + public Brush WaveStroke + { + get => (Brush) GetValue(WaveStrokeProperty); + set => SetValue(WaveStrokeProperty, value); + } + } +} \ No newline at end of file diff --git a/HandyControl/Data/ValueBoxes.cs b/HandyControl/Data/ValueBoxes.cs index b2fb35dc..d53cba75 100644 --- a/HandyControl/Data/ValueBoxes.cs +++ b/HandyControl/Data/ValueBoxes.cs @@ -31,6 +31,8 @@ internal static object Int5Box = 5; + internal static object Int99Box = 99; + internal static object BooleanBox(bool value) => value ? TrueBox : FalseBox; } } \ No newline at end of file diff --git a/HandyControl/HandyControl.csproj b/HandyControl/HandyControl.csproj index efbf174e..a5a8e24d 100644 --- a/HandyControl/HandyControl.csproj +++ b/HandyControl/HandyControl.csproj @@ -86,6 +86,7 @@ + @@ -108,15 +109,20 @@ + + + + + - + @@ -174,8 +180,12 @@ + + + + @@ -356,6 +366,14 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + + + Designer + MSBuild:Compile + Designer MSBuild:Compile @@ -380,10 +398,18 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile @@ -428,6 +454,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile @@ -436,6 +466,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile diff --git a/HandyControl/Interactivity/AdornerContainer.cs b/HandyControl/Interactivity/AdornerContainer.cs index 4ffc4f93..4fea569d 100644 --- a/HandyControl/Interactivity/AdornerContainer.cs +++ b/HandyControl/Interactivity/AdornerContainer.cs @@ -14,8 +14,7 @@ namespace HandyControl.Interactivity public UIElement Child { - get => - _child; + get => _child; set { AddVisualChild(value); diff --git a/HandyControl/Properties/Langs/Lang.en.resx b/HandyControl/Properties/Langs/Lang.en.resx index b5f9a98b..28b6a0dc 100644 --- a/HandyControl/Properties/Langs/Lang.en.resx +++ b/HandyControl/Properties/Langs/Lang.en.resx @@ -1,95 +1,76 @@  + Microsoft ResX Schema + + Version 1.3 + + The primary goals of this format is to allow a simple XML format + that is mostly human readable. The generation and parsing of the + various data types are done through the TypeConverter classes + associated with the data types. + + Example: + + ... ado.net/XML headers & schema ... + text/microsoft-resx + 1.3 + System.Resources.ResXResourceReader, System.Windows.Forms, ... + System.Resources.ResXResourceWriter, System.Windows.Forms, ... + this is my long string + Blue + + [base64 mime encoded serialized .NET Framework object] + + + [base64 mime encoded string representing a byte array form of the .NET Framework object] + + + There are any number of "resheader" rows that contain simple + name/value pairs. + + Each data row contains a name, and value. The row also contains a + type or mimetype. Type corresponds to a .NET class that support + text/value conversion through the TypeConverter architecture. + Classes that don't support this are serialized and stored with the + mimetype set. + + The mimetype is used for serialized objects, and tells the + ResXResourceReader how to depersist the object. This is currently not + extensible. For a given mimetype the value must be set accordingly: + + Note - application/x-microsoft.net.object.binary.base64 is the format + that the ResXResourceWriter will generate, however the reader can + read any of the formats listed below. + + mimetype: application/x-microsoft.net.object.binary.base64 + value : The object must be serialized with + : System.Serialization.Formatters.Binary.BinaryFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.soap.base64 + value : The object must be serialized with + : System.Runtime.Serialization.Formatters.Soap.SoapFormatter + : and then encoded with base64 encoding. + + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> - - - - - - - - - - - - - - - - - - - + - @@ -108,13 +89,13 @@ text/microsoft-resx - 2.0 + 1.3 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Confirm diff --git a/HandyControl/Themes/Basic/Converters.xaml b/HandyControl/Themes/Basic/Converters.xaml index 8a4d418f..57809fe9 100644 --- a/HandyControl/Themes/Basic/Converters.xaml +++ b/HandyControl/Themes/Basic/Converters.xaml @@ -15,5 +15,7 @@ + + \ No newline at end of file diff --git a/HandyControl/Themes/Styles/Badge.xaml b/HandyControl/Themes/Styles/Badge.xaml new file mode 100644 index 00000000..5a1cc0f3 --- /dev/null +++ b/HandyControl/Themes/Styles/Badge.xaml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HandyControl/Themes/Styles/Base/BadgeBaseStyle.xaml b/HandyControl/Themes/Styles/Base/BadgeBaseStyle.xaml new file mode 100644 index 00000000..d1e7d26e --- /dev/null +++ b/HandyControl/Themes/Styles/Base/BadgeBaseStyle.xaml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/HandyControl/Themes/Styles/Base/DialogBaseStyle.xaml b/HandyControl/Themes/Styles/Base/DialogBaseStyle.xaml new file mode 100644 index 00000000..dc3c8493 --- /dev/null +++ b/HandyControl/Themes/Styles/Base/DialogBaseStyle.xaml @@ -0,0 +1,19 @@ + + + + + \ No newline at end of file diff --git a/HandyControl/Themes/Styles/Base/GravatarBaseStyle.xaml b/HandyControl/Themes/Styles/Base/GravatarBaseStyle.xaml new file mode 100644 index 00000000..861062d2 --- /dev/null +++ b/HandyControl/Themes/Styles/Base/GravatarBaseStyle.xaml @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/HandyControl/Themes/Styles/Base/ProgressBarBaseStyle.xaml b/HandyControl/Themes/Styles/Base/ProgressBarBaseStyle.xaml index df26dbfe..1619a5a2 100644 --- a/HandyControl/Themes/Styles/Base/ProgressBarBaseStyle.xaml +++ b/HandyControl/Themes/Styles/Base/ProgressBarBaseStyle.xaml @@ -5,6 +5,7 @@ + @@ -70,13 +71,12 @@ + + \ No newline at end of file diff --git a/HandyControl/Themes/Styles/Border.xaml b/HandyControl/Themes/Styles/Border.xaml index 4163cef3..27557b46 100644 --- a/HandyControl/Themes/Styles/Border.xaml +++ b/HandyControl/Themes/Styles/Border.xaml @@ -1,6 +1,11 @@  + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:controls="clr-namespace:HandyControl.Controls"> + + + + + + + + \ No newline at end of file diff --git a/HandyControl/Themes/Styles/Dialog.xaml b/HandyControl/Themes/Styles/Dialog.xaml new file mode 100644 index 00000000..d74f807e --- /dev/null +++ b/HandyControl/Themes/Styles/Dialog.xaml @@ -0,0 +1,10 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/HandyControl/Themes/Styles/ProgressBar.xaml b/HandyControl/Themes/Styles/ProgressBar.xaml index ce272123..117fc66b 100644 --- a/HandyControl/Themes/Styles/ProgressBar.xaml +++ b/HandyControl/Themes/Styles/ProgressBar.xaml @@ -196,6 +196,26 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Net40/HandyControl_Net40/Themes/Styles/Base/BadgeBaseStyle.xaml b/Net40/HandyControl_Net40/Themes/Styles/Base/BadgeBaseStyle.xaml new file mode 100644 index 00000000..d1e7d26e --- /dev/null +++ b/Net40/HandyControl_Net40/Themes/Styles/Base/BadgeBaseStyle.xaml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Net40/HandyControl_Net40/Themes/Styles/Base/ComboBoxBaseStyle.xaml b/Net40/HandyControl_Net40/Themes/Styles/Base/ComboBoxBaseStyle.xaml index ad9487c0..5bb899f8 100644 --- a/Net40/HandyControl_Net40/Themes/Styles/Base/ComboBoxBaseStyle.xaml +++ b/Net40/HandyControl_Net40/Themes/Styles/Base/ComboBoxBaseStyle.xaml @@ -41,6 +41,7 @@ - \ No newline at end of file diff --git a/Net40/HandyControl_Net40/Themes/Styles/Base/GravatarBaseStyle.xaml b/Net40/HandyControl_Net40/Themes/Styles/Base/GravatarBaseStyle.xaml new file mode 100644 index 00000000..342c8179 --- /dev/null +++ b/Net40/HandyControl_Net40/Themes/Styles/Base/GravatarBaseStyle.xaml @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file diff --git a/Net40/HandyControl_Net40/Themes/Styles/Base/ProgressBarBaseStyle.xaml b/Net40/HandyControl_Net40/Themes/Styles/Base/ProgressBarBaseStyle.xaml index df26dbfe..1619a5a2 100644 --- a/Net40/HandyControl_Net40/Themes/Styles/Base/ProgressBarBaseStyle.xaml +++ b/Net40/HandyControl_Net40/Themes/Styles/Base/ProgressBarBaseStyle.xaml @@ -5,6 +5,7 @@ + @@ -70,13 +71,12 @@ + + \ No newline at end of file diff --git a/Net40/HandyControl_Net40/Themes/Styles/Border.xaml b/Net40/HandyControl_Net40/Themes/Styles/Border.xaml index 4163cef3..3c14150f 100644 --- a/Net40/HandyControl_Net40/Themes/Styles/Border.xaml +++ b/Net40/HandyControl_Net40/Themes/Styles/Border.xaml @@ -1,5 +1,10 @@  + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:controls="clr-namespace:HandyControl.Controls"> + + + + + + + + \ No newline at end of file diff --git a/Net40/HandyControl_Net40/Themes/Styles/Gravatar.xaml b/Net40/HandyControl_Net40/Themes/Styles/Gravatar.xaml new file mode 100644 index 00000000..4384bd2d --- /dev/null +++ b/Net40/HandyControl_Net40/Themes/Styles/Gravatar.xaml @@ -0,0 +1,29 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/Net40/HandyControl_Net40/Themes/Styles/ProgressBar.xaml b/Net40/HandyControl_Net40/Themes/Styles/ProgressBar.xaml index ce272123..117fc66b 100644 --- a/Net40/HandyControl_Net40/Themes/Styles/ProgressBar.xaml +++ b/Net40/HandyControl_Net40/Themes/Styles/ProgressBar.xaml @@ -196,6 +196,26 @@ + + + + + + + + + +