130 #region Template parts
156 #region New DPs : IconSize / IconMargin / IconStretch
185 DependencyProperty.Register(
189 new FrameworkPropertyMetadata(
191 FrameworkPropertyMetadataOptions.AffectsMeasure |
192 FrameworkPropertyMetadataOptions.AffectsArrange |
193 FrameworkPropertyMetadataOptions.AffectsRender));
222 DependencyProperty.Register(
226 new FrameworkPropertyMetadata(
227 new Thickness(0, 0, 4, 0),
228 FrameworkPropertyMetadataOptions.AffectsMeasure |
229 FrameworkPropertyMetadataOptions.AffectsArrange));
258 DependencyProperty.Register(
262 new FrameworkPropertyMetadata(
264 FrameworkPropertyMetadataOptions.AffectsRender));
268 #region New DPs : Shadow (Effect)
297 DependencyProperty.Register(
301 new FrameworkPropertyMetadata(
303 FrameworkPropertyMetadataOptions.AffectsRender,
331 DependencyProperty.Register(
335 new FrameworkPropertyMetadata(
337 FrameworkPropertyMetadataOptions.AffectsRender,
365 DependencyProperty.Register(
369 new FrameworkPropertyMetadata(
371 FrameworkPropertyMetadataOptions.AffectsRender,
399 DependencyProperty.Register(
403 new FrameworkPropertyMetadata(
405 FrameworkPropertyMetadataOptions.AffectsRender,
435 DependencyProperty.Register(
439 new FrameworkPropertyMetadata(
441 FrameworkPropertyMetadataOptions.AffectsRender,
469 DependencyProperty.Register(
473 new FrameworkPropertyMetadata(
475 FrameworkPropertyMetadataOptions.AffectsRender,
508 btn.UpdateShadowEffect();
513 #region Existing : ImagePosition / OnceLogin / Login / IconSource / IconPath / Command etc.
544 DependencyProperty.Register(
579 DependencyProperty.Register(
583 new PropertyMetadata(Brushes.Blue));
614 DependencyProperty.Register(
618 new PropertyMetadata(
new Thickness(3)));
650 DependencyProperty.Register(
654 new PropertyMetadata(
new SolidColorBrush(Color.FromArgb(0x30, 0x00, 0x7A, 0xFF))));
681 DependencyProperty.Register(
685 new FrameworkPropertyMetadata(
687 FrameworkPropertyMetadataOptions.AffectsMeasure |
688 FrameworkPropertyMetadataOptions.AffectsArrange));
715 DependencyProperty.Register(
775 DefaultStyleKeyProperty.OverrideMetadata(
781 var uri =
new Uri(
"/Dreamine.UI.Wpf.Themes;component/DreamineButtonStyle.xaml",
782 UriKind.RelativeOrAbsolute);
784 var app = Application.Current;
787 bool alreadyAdded = app.Resources.MergedDictionaries
788 .OfType<ResourceDictionary>()
789 .Any(x => x.Source !=
null && x.Source.Equals(uri));
793 var dict =
new ResourceDictionary { Source = uri };
794 app.Resources.MergedDictionaries.Add(dict);
833 base.OnApplyTemplate();
859 _shadowHost.Effect =
null;
864 _shadowHost.Effect =
new DropShadowEffect
900 new PropertyMetadata(
null));
928 new PropertyMetadata(
null));
940 DependencyProperty.Register(
971 DependencyProperty.RegisterAttached(
975 new PropertyMetadata(
null));
1059 DependencyProperty.RegisterAttached(
1060 "CommandTriggerName",
1063 new PropertyMetadata(
"PreviewMouseUp"));
1217 DependencyProperty.RegisterAttached(
"IsHandlersHooked", typeof(
bool), typeof(
DreamineButton),
1218 new PropertyMetadata(
false));
1284 DependencyProperty.RegisterAttached(
"IsExecuting", typeof(
bool), typeof(
DreamineButton),
1285 new PropertyMetadata(
false));
1370 if (d is not UIElement element)
return;
1373 element.AddHandler(UIElement.PreviewMouseUpEvent,
new MouseButtonEventHandler((s, ev) =>
1378 element.AddHandler(Control.MouseDoubleClickEvent,
new MouseButtonEventHandler((s, ev) =>
1383 element.AddHandler(UIElement.PreviewKeyUpEvent,
new KeyEventHandler((s, ev) =>
1388 element.AddHandler(UIElement.TouchUpEvent,
new EventHandler<TouchEventArgs>((s, ev) =>
1390 TryExecuteCommand(d,
"TouchUp", ev);
1393 element.AddHandler(ButtonBase.ClickEvent,
new RoutedEventHandler((s, ev) =>
1460 private static async
void TryExecuteCommand(DependencyObject d,
string eventName, RoutedEventArgs eventArgs)
1465 if (
string.IsNullOrWhiteSpace(rawTrigger))
1468 var triggers = rawTrigger
1470 .Select(s => s.Trim())
1471 .Where(s => !
string.IsNullOrWhiteSpace(s))
1474 if (triggers.Length > 0 &&
1475 !triggers.Contains(eventName, StringComparer.OrdinalIgnoreCase))
1484 object? parameter =
null;
1490 if (parameter ==
null && d is ButtonBase bbForParam)
1491 parameter = bbForParam.CommandParameter;
1494 if (parameter ==
null)
1495 parameter = eventArgs;
1498 if (d is ButtonBase bb && command !=
null && ReferenceEquals(bb.Command, command))
1511 if (btn.MinimumGrade > 0 && btn.Grade < btn.MinimumGrade)
1516 autoClick: MessageBoxResult.OK,
1517 autoClickDelaySeconds: 3);
1525 if (command ==
null)
1529 if (command.CanExecute(parameter))
1531 command.Execute(parameter);
1534 eventArgs.Handled =
true;
1564 DependencyProperty.Register(nameof(
ShineColor), typeof(Brush), typeof(
DreamineButton),
new PropertyMetadata(
null));
1633 DependencyProperty.Register(nameof(
IsSelected), typeof(
bool), typeof(
DreamineButton),
new PropertyMetadata(
false));
1714 DependencyProperty.Register(nameof(
Grade), typeof(
int), typeof(
DreamineButton),
new PropertyMetadata(0));
1770 DependencyProperty.Register(
1774 new PropertyMetadata(
false));