using System.Windows;
using Microsoft.Xaml.Behaviors;
namespace ShrlAlgo.Toolkit.Mvvm.Behaviors;
///
/// 通过设置属性值,关闭窗口
///
///
///
///
/// i:Interaction.Behaviors>
///
///
public class CloseByPropertyBehavior : Behavior
{
public static readonly DependencyProperty CloseTriggerProperty = DependencyProperty.Register(
nameof(CloseTrigger),
typeof(bool),
typeof(CloseByPropertyBehavior),
new PropertyMetadata(false, OnCloseTriggerChanged)
);
public bool CloseTrigger
{
get => (bool)GetValue(CloseTriggerProperty);
set => SetValue(CloseTriggerProperty, value);
}
private static void OnCloseTriggerChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (d is CloseByPropertyBehavior behavior)
{
behavior.OnCloseTriggerChanged();
}
}
private void OnCloseTriggerChanged()
{
// when closetrigger is true, close the window
if (CloseTrigger)
{
AssociatedObject.Close();
}
}
}