12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using HandyControl.Data;
- using HandyControl.Tools.Converter;
- namespace HandyControl.Controls;
- public class BorderElement
- {
- public static readonly DependencyProperty CornerRadiusProperty = DependencyProperty.RegisterAttached(
- "CornerRadius", typeof(CornerRadius), typeof(BorderElement), new FrameworkPropertyMetadata(default(CornerRadius), FrameworkPropertyMetadataOptions.Inherits));
- 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.ActualWidthProperty);
- BindingOperations.ClearBinding(border, FrameworkElement.ActualHeightProperty);
- BindingOperations.ClearBinding(border, Border.CornerRadiusProperty);
- }
- }
- }
- public static void SetCircular(DependencyObject element, bool value)
- => element.SetValue(CircularProperty, ValueBoxes.BooleanBox(value));
- public static bool GetCircular(DependencyObject element)
- => (bool) element.GetValue(CircularProperty);
- }
|