Files
Shrlalgo.RvKits/WPFluent/Controls/MessageBox/MessageBoxClosingEventArgs.cs

50 lines
1.0 KiB
C#

using System.Diagnostics;
using System.Windows;
namespace WPFluent.Controls;
public sealed class MessageBoxClosingEventArgs : RoutedEventArgs
{
private MessageBoxClosingDeferral _deferral = null!;
private int _deferralCount;
internal MessageBoxClosingEventArgs(System.Windows.MessageBoxResult result)
{
Result = result;
}
public bool Cancel { get; set; }
public System.Windows.MessageBoxResult Result { get; }
public MessageBoxClosingDeferral GetDeferral()
{
_deferralCount++;
return new MessageBoxClosingDeferral(() =>
{
DecrementDeferralCount();
});
}
internal void SetDeferral(MessageBoxClosingDeferral deferral)
{
_deferral = deferral;
}
internal void DecrementDeferralCount()
{
Debug.Assert(_deferralCount > 0);
_deferralCount--;
if (_deferralCount == 0)
{
_deferral.Complete();
}
}
internal void IncrementDeferralCount()
{
_deferralCount++;
}
}