XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEToolBox

【WPF】XFE工具箱

公开
关注 0 Fork 0 Star 0
UTF-8

通用弹窗

PopupWindow 提供与主窗口一致的圆角、顶部拖拽区、关闭按钮、背景变暗和开合动画。业务页面不需要自行创建 Window,只需通过 PopupHelper 显示页面或控件。

基本用法

var result = PopupHelper.ShowDialog(new MyPopupPage(), new PopupWindowOptions
{
    Title = "弹窗标题",
    Subtitle = "可选的副标题",
    Width = 420,
    Height = 480,
    Owner = MainWindow.Current,
    ContentMargin = new Thickness(0)
});

Owner 为空时会自动选择当前活动的非弹窗窗口。ShowDialog 是模态调用,关闭后返回可空的 MessageBoxResult

返回结果

需要主动关闭并返回结果的页面可以实现 IPopupPage

public partial class MyPopupPage : Page, IPopupPage
{
    public PopupWindow? PopupWindow { get; set; }

    private async void ConfirmButton_Click(object sender, RoutedEventArgs e)
    {
        if (PopupWindow is not null)
            await PopupWindow.CloseWithResultAsync(MessageBoxResult.OK);
    }
}

PopupHelper 会在显示前自动设置 IPopupPage.PopupWindow。使用窗口关闭按钮时,结果通常为 null;业务方应显式处理取消或无结果情况。

显示选项

属性 默认值 说明
Title 标题;标题与副标题都为空时内容区自动占用标题空间
Subtitle 副标题
Width / Height 320 / 230 弹窗尺寸
Owner 活动窗口 所属窗口
ContentMargin 0,0,0,15 内容区域边距
ShowCloseButton true 是否显示关闭按钮
ShowDragBar true 是否显示并启用顶部拖拽区
DimOwner true 显示时是否降低 Owner 不透明度并在关闭后恢复

快捷对话框

普通确认框:

var result = PopupHelper.ShowConfirmDialog(
    "确定要保存修改吗?",
    showCancelButton: true,
    confirmText: "保存",
    cancelText: "取消");

是/否选择框:

var result = PopupHelper.ShowYesOrNoDialog(
    "是否发布当前版本?",
    showCancelButton: true,
    yesText: "发布",
    noText: "暂不发布");

旧的 ShowDialog(content, width, height) 重载继续可用,适合不需要标题或其他交互选项的简单内容。