|
@@ -32,26 +32,42 @@ namespace Avalonia.Controls.Primitives
|
|
|
/// <summary>
|
|
|
/// Defines the <see cref="Checked"/> event.
|
|
|
/// </summary>
|
|
|
+ [Obsolete("Use IsCheckedChangedEvent instead.")]
|
|
|
public static readonly RoutedEvent<RoutedEventArgs> CheckedEvent =
|
|
|
- RoutedEvent.Register<ToggleButton, RoutedEventArgs>(nameof(Checked), RoutingStrategies.Bubble);
|
|
|
+ RoutedEvent.Register<ToggleButton, RoutedEventArgs>(
|
|
|
+ nameof(Checked),
|
|
|
+ RoutingStrategies.Bubble);
|
|
|
|
|
|
/// <summary>
|
|
|
/// Defines the <see cref="Unchecked"/> event.
|
|
|
/// </summary>
|
|
|
+ [Obsolete("Use IsCheckedChangedEvent instead.")]
|
|
|
public static readonly RoutedEvent<RoutedEventArgs> UncheckedEvent =
|
|
|
- RoutedEvent.Register<ToggleButton, RoutedEventArgs>(nameof(Unchecked), RoutingStrategies.Bubble);
|
|
|
+ RoutedEvent.Register<ToggleButton, RoutedEventArgs>(
|
|
|
+ nameof(Unchecked),
|
|
|
+ RoutingStrategies.Bubble);
|
|
|
|
|
|
/// <summary>
|
|
|
/// Defines the <see cref="Unchecked"/> event.
|
|
|
/// </summary>
|
|
|
+ [Obsolete("Use IsCheckedChangedEvent instead.")]
|
|
|
public static readonly RoutedEvent<RoutedEventArgs> IndeterminateEvent =
|
|
|
- RoutedEvent.Register<ToggleButton, RoutedEventArgs>(nameof(Indeterminate), RoutingStrategies.Bubble);
|
|
|
+ RoutedEvent.Register<ToggleButton, RoutedEventArgs>(
|
|
|
+ nameof(Indeterminate),
|
|
|
+ RoutingStrategies.Bubble);
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Defines the <see cref="IsCheckedChanged"/> event.
|
|
|
+ /// </summary>
|
|
|
+ public static readonly RoutedEvent<RoutedEventArgs> IsCheckedChangedEvent =
|
|
|
+ RoutedEvent.Register<ToggleButton, RoutedEventArgs>(
|
|
|
+ nameof(IsCheckedChanged),
|
|
|
+ RoutingStrategies.Bubble);
|
|
|
|
|
|
private bool? _isChecked = false;
|
|
|
|
|
|
static ToggleButton()
|
|
|
{
|
|
|
- IsCheckedProperty.Changed.AddClassHandler<ToggleButton>((x, e) => x.OnIsCheckedChanged(e));
|
|
|
}
|
|
|
|
|
|
public ToggleButton()
|
|
@@ -62,6 +78,7 @@ namespace Avalonia.Controls.Primitives
|
|
|
/// <summary>
|
|
|
/// Raised when a <see cref="ToggleButton"/> is checked.
|
|
|
/// </summary>
|
|
|
+ [Obsolete("Use IsCheckedChanged instead.")]
|
|
|
public event EventHandler<RoutedEventArgs>? Checked
|
|
|
{
|
|
|
add => AddHandler(CheckedEvent, value);
|
|
@@ -71,6 +88,7 @@ namespace Avalonia.Controls.Primitives
|
|
|
/// <summary>
|
|
|
/// Raised when a <see cref="ToggleButton"/> is unchecked.
|
|
|
/// </summary>
|
|
|
+ [Obsolete("Use IsCheckedChanged instead.")]
|
|
|
public event EventHandler<RoutedEventArgs>? Unchecked
|
|
|
{
|
|
|
add => AddHandler(UncheckedEvent, value);
|
|
@@ -80,12 +98,22 @@ namespace Avalonia.Controls.Primitives
|
|
|
/// <summary>
|
|
|
/// Raised when a <see cref="ToggleButton"/> is neither checked nor unchecked.
|
|
|
/// </summary>
|
|
|
+ [Obsolete("Use IsCheckedChanged instead.")]
|
|
|
public event EventHandler<RoutedEventArgs>? Indeterminate
|
|
|
{
|
|
|
add => AddHandler(IndeterminateEvent, value);
|
|
|
remove => RemoveHandler(IndeterminateEvent, value);
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// Raised when the <see cref="IsChecked"/> property value changes.
|
|
|
+ /// </summary>
|
|
|
+ public event EventHandler<RoutedEventArgs>? IsCheckedChanged
|
|
|
+ {
|
|
|
+ add => AddHandler(IsCheckedChangedEvent, value);
|
|
|
+ remove => RemoveHandler(IsCheckedChangedEvent, value);
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// Gets or sets whether the <see cref="ToggleButton"/> is checked.
|
|
|
/// </summary>
|
|
@@ -147,6 +175,7 @@ namespace Avalonia.Controls.Primitives
|
|
|
/// Called when <see cref="IsChecked"/> becomes true.
|
|
|
/// </summary>
|
|
|
/// <param name="e">Event arguments for the routed event that is raised by the default implementation of this method.</param>
|
|
|
+ [Obsolete("Use OnIsCheckedChanged instead.")]
|
|
|
protected virtual void OnChecked(RoutedEventArgs e)
|
|
|
{
|
|
|
RaiseEvent(e);
|
|
@@ -156,6 +185,7 @@ namespace Avalonia.Controls.Primitives
|
|
|
/// Called when <see cref="IsChecked"/> becomes false.
|
|
|
/// </summary>
|
|
|
/// <param name="e">Event arguments for the routed event that is raised by the default implementation of this method.</param>
|
|
|
+ [Obsolete("Use OnIsCheckedChanged instead.")]
|
|
|
protected virtual void OnUnchecked(RoutedEventArgs e)
|
|
|
{
|
|
|
RaiseEvent(e);
|
|
@@ -165,31 +195,51 @@ namespace Avalonia.Controls.Primitives
|
|
|
/// Called when <see cref="IsChecked"/> becomes null.
|
|
|
/// </summary>
|
|
|
/// <param name="e">Event arguments for the routed event that is raised by the default implementation of this method.</param>
|
|
|
+ [Obsolete("Use OnIsCheckedChanged instead.")]
|
|
|
protected virtual void OnIndeterminate(RoutedEventArgs e)
|
|
|
{
|
|
|
RaiseEvent(e);
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// Called when <see cref="IsChecked"/> changes.
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="e">Event arguments for the routed event that is raised by the default implementation of this method.</param>
|
|
|
+ protected virtual void OnIsCheckedChanged(RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ RaiseEvent(e);
|
|
|
+ }
|
|
|
+
|
|
|
protected override AutomationPeer OnCreateAutomationPeer()
|
|
|
{
|
|
|
return new ToggleButtonAutomationPeer(this);
|
|
|
}
|
|
|
|
|
|
- private void OnIsCheckedChanged(AvaloniaPropertyChangedEventArgs e)
|
|
|
+ /// <inheritdoc/>
|
|
|
+ protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change)
|
|
|
{
|
|
|
- var newValue = (bool?)e.NewValue;
|
|
|
+ base.OnPropertyChanged(change);
|
|
|
|
|
|
- switch (newValue)
|
|
|
+ if (change.Property == IsCheckedProperty)
|
|
|
{
|
|
|
- case true:
|
|
|
- OnChecked(new RoutedEventArgs(CheckedEvent));
|
|
|
- break;
|
|
|
- case false:
|
|
|
- OnUnchecked(new RoutedEventArgs(UncheckedEvent));
|
|
|
- break;
|
|
|
- default:
|
|
|
- OnIndeterminate(new RoutedEventArgs(IndeterminateEvent));
|
|
|
- break;
|
|
|
+ var newValue = change.GetNewValue<bool?>();
|
|
|
+
|
|
|
+#pragma warning disable CS0618 // Type or member is obsolete
|
|
|
+ switch (newValue)
|
|
|
+ {
|
|
|
+ case true:
|
|
|
+ OnChecked(new RoutedEventArgs(CheckedEvent));
|
|
|
+ break;
|
|
|
+ case false:
|
|
|
+ OnUnchecked(new RoutedEventArgs(UncheckedEvent));
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ OnIndeterminate(new RoutedEventArgs(IndeterminateEvent));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+#pragma warning restore CS0618 // Type or member is obsolete
|
|
|
+
|
|
|
+ OnIsCheckedChanged(new RoutedEventArgs(IsCheckedChangedEvent));
|
|
|
}
|
|
|
}
|
|
|
|