using System.Windows; using Microsoft.Xaml.Behaviors; namespace ShrlAlgoToolkit.Mvvm.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(); } } }