更新整理
This commit is contained in:
46
ShrlAlgoToolkit.Mvvm/Behaviors/CloseByPropertyBehavior.cs
Normal file
46
ShrlAlgoToolkit.Mvvm/Behaviors/CloseByPropertyBehavior.cs
Normal file
@@ -0,0 +1,46 @@
|
||||
using System.Windows;
|
||||
using Microsoft.Xaml.Behaviors;
|
||||
|
||||
namespace ShrlAlgoToolkit.Mvvm.Behaviors;
|
||||
|
||||
/// <summary>
|
||||
/// 通过设置属性值,关闭窗口
|
||||
/// </summary>
|
||||
/// <example>
|
||||
/// <c><i:Interaction.Behaviors>
|
||||
/// <behavior:CloseByPropertyBehavior CloseTrigger = "{Binding CloseTrigger}" />
|
||||
/// </ i:Interaction.Behaviors>
|
||||
/// </c>
|
||||
/// </example>
|
||||
public class CloseByPropertyBehavior : Behavior<Window>
|
||||
{
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user