SukiUI 是一个基于 Avalonia 跨平台 UI 框架构建的现代化 UI 组件库,它提供了丰富的控件和优雅的设计风格,帮助开发者快速构建美观且功能强大的桌面应用程序。最新发布的 6.0.2 版本带来了大量改进和新特性,从基础控件优化到高级功能增强,全面提升了开发体验和用户界面质量。
.NET Avalonia11 + SukiUI6.0.2 常用对话框开发
Avalonia11 结合 SukiUI6.0 可以快速实现美观、一致的桌面程序对话框。SukiUI 提供了封装完善的 DialogManager 和多种预设对话框(消息、确认、输入、选择等),同时支持自定义对话框模板。以下是常用对话框的完整实现方案,包含代码示例和最佳实践。

第一种写法:ShowDialog(string header, string content)
- 功能:显示一个带有标题和内容的对话框,对话框的图标为错误图标,按钮为"重试"、"忽略"、"中止"。
cs
public async Task<object> ShowDialog(string header, string content)
{
var result = await SukiMessageBox.ShowDialog(new SukiMessageBoxHost
{
IconPreset = SukiMessageBoxIcons.Error,
Header = header,
Content = content,
ActionButtonsPreset = SukiMessageBoxButtons.RetryIgnoreAbort,
}, new SukiMessageBoxOptions
{
BackgroundStyle = SukiBackgroundStyle.Bubble,
BackgroundAnimationEnabled = false,
IsTitleBarVisible = false
});
return result;
}
-
代码解析:
-
SukiMessageBox.ShowDialog:这是SukiUI提供的方法,用于显示对话框。 -
new SukiMessageBoxHost:创建一个对话框的主体内容,其中:-
IconPreset = SukiMessageBoxIcons.Error:设置对话框的图标为错误图标。 -
Header = header:设置对话框的标题。 -
Content = content:设置对话框的主要内容。 -
ActionButtonsPreset = SukiMessageBoxButtons.RetryIgnoreAbort:设置对话框的按钮为"重试"、"忽略"、"中止"。
-
-
new SukiMessageBoxOptions:创建一个对话框的选项,其中:-
BackgroundStyle = SukiBackgroundStyle.Bubble:设置对话框的背景样式为气泡风格。 -
BackgroundAnimationEnabled = false:禁用背景动画。 -
IsTitleBarVisible = false:隐藏对话框的标题栏。
-
-
await:使用异步方式等待用户对对话框的操作完成,返回用户的选择结果。
-
-
适用场景:当需要显示一个带有错误信息的对话框,并让用户选择"重试"、"忽略"或"中止"时,可以使用这种写法。
第二种写法:ShowDialog(string header, string content, string buttonText)
- 功能:显示一个带有标题、内容和自定义按钮的对话框,对话框的图标为错误图标,按钮为"重试"、"忽略"、"中止"和用户自定义的按钮。
cs
public async Task<object> ShowDialog(string header, string content, string buttonText)
{
var result = await SukiMessageBox.ShowDialog(new SukiMessageBoxHost
{
IconPreset = SukiMessageBoxIcons.Error,
Header = header,
Content = content,
ActionButtonsPreset = SukiMessageBoxButtons.RetryIgnoreAbort,
FooterLeftItemsSource = [
SukiMessageBoxButtonsFactory.CreateButton(buttonText)
]
}, new SukiMessageBoxOptions
{
BackgroundStyle = SukiBackgroundStyle.Bubble,
BackgroundAnimationEnabled = false,
IsTitleBarVisible = false
});
return result;
}
-
代码解析:
-
FooterLeftItemsSource = [SukiMessageBoxButtonsFactory.CreateButton(buttonText)]:在对话框底部左侧添加一个自定义按钮,按钮的文本由buttonText参数指定。 -
其余部分与第一种写法相同。
-
-
适用场景:当需要在对话框中添加一个额外的自定义按钮时,可以使用这种写法。例如,除了"重试"、"忽略"、"中止"按钮外,还可以添加一个"详情"按钮,让用户查看更多信息。
第三种写法:ShowDialogCheckBox(string checkBoxContent, string showContent)
- 功能:显示一个带有复选框和内容的对话框,对话框的图标为警告图标,按钮为"是"、"否"。
cs
public async Task<object> ShowDialogCheckBox(string checkBoxContent, string showContent)
{
var checkBox = new CheckBox { Content = checkBoxContent };
var result = await SukiMessageBox.ShowDialog(new SukiMessageBoxHost
{
IconPreset = SukiMessageBoxIcons.Warning,
Content = showContent,
ActionButtonsPreset = SukiMessageBoxButtons.YesNo,
FooterLeftItemsSource = [checkBox]
}, new SukiMessageBoxOptions
{
BackgroundStyle = SukiBackgroundStyle.Flat,
BackgroundAnimationEnabled = false,
IsTitleBarVisible = false
});
return result;
}
-
代码解析:
-
var checkBox = new CheckBox { Content = checkBoxContent }:创建一个复选框,并设置其内容为checkBoxContent。 -
FooterLeftItemsSource = [checkBox]:将复选框添加到对话框底部左侧。 -
IconPreset = SukiMessageBoxIcons.Warning:设置对话框的图标为警告图标。 -
ActionButtonsPreset = SukiMessageBoxButtons.YesNo:设置对话框的按钮为"是"、"否"。 -
BackgroundStyle = SukiBackgroundStyle.Flat:设置对话框的背景样式为平面风格。 -
其余部分与前两种写法类似。
-
-
适用场景:当需要在对话框中添加一个复选框,让用户在选择"是"或"否"的同时,还可以选择是否勾选某个选项时,可以使用这种写法。例如,在提示用户是否删除文件时,还可以让用户选择是否不再显示此类提示。