在保留当前页面状态的情况下,告知用户并承载相关操作。
1 | public class Dialog : ContentControl |
属性
| 属性 | 描述 | 默认值 | 备注 |
|---|---|---|---|
| IsClosed | 是否关闭 |
附加属性
| 名称 | 说明 |
|---|---|
| Token | 用于设置消息标记 |
方法
| 名称 | 说明 |
|---|---|
| Show(object, string) | 显示承载内容 |
| Show |
显示承载内容(自动实例化承载内容) |
| Close( ) | 关闭 |
| Register(string, FrameworkElement) | 为指定的元素注册消息标记 |
| Unregister(string, Panel) | 为指定的元素取消消息标记的注册 |
| Unregister(Panel) | 如果该元素注册了消息标记则取消注册 |
| Unregister(string) | 如果该消息标记有对应的元素则取消注册 |
案例
基本用法
1 | <Border x:Class="HandyControlDemo.UserControl.TextDialog" |
1 | namespace HandyControlDemo.UserControl |
1 | Dialog.Show(new TextDialog()); |

异步等待结果返回
通过Initialize扩展方法初始化vm后,可在此基础上使用GetResultAsync方法实现异步等待:
1 | Dialog.Show<InteractiveDialog>() |
更简单的异步方式
1 | var d = Dialog.Show<ProgressDialog>(); |
弹框行为
如果在调用Show方法时,没有给定token参数,则默认会在当前激活的窗口弹框。如果token给定了值,内部会判断目标元素的类型,如果类型是窗口,则会在该窗口下的装饰层中弹出,否则会寻找目标元素的子元素,直到找到类型为DialogContainer的子元素,最后会在该子元素内部弹出。
1 | <UserControl hc:Dialog.Token="DialogContainer"> |