41 lines
1.5 KiB
C#
41 lines
1.5 KiB
C#
using System.Windows;
|
|
|
|
namespace MainShell.Common
|
|
{
|
|
public class WindowService
|
|
{
|
|
// 定义一个名为 DialogResult 的附加属性
|
|
public static readonly DependencyProperty DialogResultProperty =
|
|
DependencyProperty.RegisterAttached(
|
|
"DialogResult",
|
|
typeof(bool?),
|
|
typeof(WindowService),
|
|
new PropertyMetadata(DialogResultChanged)); // 当此属性值改变时,调用 DialogResultChanged 方法
|
|
|
|
// 提供 Set 方法供外部设置附加属性的值
|
|
public static void SetDialogResult(UIElement element, bool? value)
|
|
{
|
|
element.SetValue(DialogResultProperty, value);
|
|
}
|
|
|
|
// 提供 Get 方法供外部获取附加属性的值
|
|
public static bool? GetDialogResult(UIElement element)
|
|
{
|
|
return (bool?)element.GetValue(DialogResultProperty);
|
|
}
|
|
|
|
// 当 DialogResult 附加属性的值改变时调用的回调方法
|
|
private static void DialogResultChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
|
{
|
|
// 确保附加属性应用在一个 Window 控件上,并且新的值是 bool 类型
|
|
if (d is Window window && e.NewValue is bool result)
|
|
{
|
|
// 设置窗口的 DialogResult
|
|
window.DialogResult = result;
|
|
// 关闭窗口
|
|
window.Close();
|
|
}
|
|
}
|
|
}
|
|
}
|