在保留当前页面状态的情况下,告知用户并承载相关操作。
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"> |