MaterialDesignInXAML / MaterialDesignInXAML/MaterialDesignInXamlToolkit
[WIP] Draggable Dialog
还没有人认领这个 Issue。
- 主要语言
- C#
- 星标
- 16.3k
- 派生
- 3.5k
- 平均合并
- 1 天 22 小时
- 30 天内合并 PR
- 8
描述
As I know this is not part of Material Design spec.
But if you like to implement it in web, you have easy possibilities to do this with either [React](https://material-ui.com/demos/dialogs/#draggable-dialog) or [Angular](https://stackoverflow.com/a/49706221/3924697).
For phones I wouldn't like that feature, as you don't have any space to drag the dialog around, but for desktop applications or even on tablets this feature with a wider screens, makes sense, if you maybe like to see what was behind the dialog and it is somehow also Desktop-Application default/expected behavior for dialogs.
## Current implementations
There are two styles, which can be applied to the dialog host.
1. (default) - this style is based on a `Popup` (`PopupEx`) for the dialog.
2. `MaterialDesignEmbeddedDialogHost` - this style is based on `Grid` for the dialog.
## Current behavior
The current behavior is, ...
- that a `Card` is set as the `Grid` or `Popup` content.
- that the dialog will be shown centered to the dialog host.
- that the content (`DialogHost.DialogContent`, `DialogHost.DialogContentTemplate` etc.) is shown in the Card content.
- that while resizing/dragging the dialog remains centered.
## TBD
### default
- [ ] As implemented as a popup the drag could be done anywhere on the screen and is not limited to the dialog host. Should this be allowed or should it be limited?
- [ ] Where should the dialog move on resize or drag of the host window? I think `PopupEx` has already the right behavior, if the dialog is drawn in the window. But if you drag the popup out of the window boundaries should there still be a repositioning?
### MaterialDesignEmbeddedDialogHost
- [ ] The drag here could be realized with margins. In opposite to the default style, this is already bounded to the dialog host content or maybe window content.
- [ ] As working with margins, on resize the dialog could disappear. Here we need to develop a resize/maximize/restore strategy.
### both
- [ ] What should happen, if the dialog reopens? Should the last position persist (this would be kind of the default behavior, as the properties of the `Grid`/`Popup` would be modified on drag)?
- [ ] Should this feature be opt-in or on by default (this would be a breaking change though)?
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
首先查看当前的 Popup/PopupEx 对话框实现以及 MaterialDesignEmbeddedDialogHost 实现。在为两种样式实现并验证可拖动对话框之前,先解决所列出的有关边界、调整大小、重新打开、持久化和 opt-in 行为的决策。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- csharp
- 领域
- design, desktop
- Issue 类型
- 功能
- 难度
- 5/5
- 预计耗时
- 一周以上
- 活跃度
- 停滞
- 描述清晰度
- 需要澄清
- 新手友好度
- 25/100