You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinUI3中如何检测ContentDialog的CloseButton是否被点击?

WinUI3中检测ContentDialog关闭按钮点击及输入内容验证

WinUI3 的 ContentDialog 没有直接的 IsClicked() 方法,但可以通过 ShowAsync() 的返回值判断用户点击了哪个按钮,进而结合输入框内容做验证。

核心逻辑说明

ContentDialog.ShowAsync() 返回 ContentDialogResult 枚举,不同按钮点击对应不同枚举值:

  • 点击 PrimaryButton(设置 PrimaryButtonText)返回 ContentDialogResult.Primary
  • 点击 SecondaryButton(设置 SecondaryButtonText)返回 ContentDialogResult.Secondary
  • 点击 CloseButton(设置 CloseButtonText 或右上角关闭叉号)返回 ContentDialogResult.None

修改后的代码示例

你当前代码里把"Select"设为CloseButtonText,若要检测这个按钮的点击并验证输入内容,可修改如下:

var inputTextBox = new TextBox
{
    AcceptsReturn = true,
    Height = 32,
    Width = 300,
    Text = string.Empty,
    TextWrapping = TextWrapping.Wrap,
};

if (Controller.CheckVersion() == 1)
{
    ContentDialog dialog = new ContentDialog
    {
        XamlRoot = this.XamlRoot,
        Style = Application.Current.Resources["DefaultContentDialogStyle"] as Style,
        Title = "Please write something!",
        Content = inputTextBox,
        CloseButtonText = "Select",
    };

    // 接收ShowAsync的返回值
    var result = await dialog.ShowAsync();

    // 判断是否点击了CloseButton
    if (result == ContentDialogResult.None)
    {
        // 检查TextBox输入内容
        if (string.IsNullOrWhiteSpace(inputTextBox.Text))
        {
            // 输入为空时的处理逻辑,比如提示用户
            var tipDialog = new ContentDialog
            {
                XamlRoot = this.XamlRoot,
                Title = "提示",
                Content = "请输入内容!",
                PrimaryButtonText = "确定"
            };
            await tipDialog.ShowAsync();
        }
        else
        {
            // 输入有效时的处理逻辑
            // TODO: 处理用户输入的内容
        }
    }
}

额外提示

如果"Select"是你希望用户确认输入的按钮,更合理的做法是将它设为 PrimaryButton(即设置 PrimaryButtonText = "Select"),此时点击它会返回 ContentDialogResult.Primary,语义更符合确认操作场景,代码判断逻辑只需改为 if (result == ContentDialogResult.Primary) 即可。

内容的提问来源于stack exchange,提问作者ravenaxd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 07:31:09