MaterialDesignInXAML / MaterialDesignInXAML/MaterialDesignInXamlToolkit

[WIP] Draggable Dialog

未关闭
#1,196 4 条评论 4 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

enhancement
主要语言
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)?

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

调研方向

首先查看当前的 Popup/PopupEx 对话框实现以及 MaterialDesignEmbeddedDialogHost 实现。在为两种样式实现并验证可拖动对话框之前,先解决所列出的有关边界、调整大小、重新打开、持久化和 opt-in 行为的决策。

由索引模型根据 Issue 内容生成。

评估

技术栈
csharp
领域
design, desktop
Issue 类型
功能
难度
5/5
预计耗时
一周以上
活跃度
停滞
描述清晰度
需要澄清
新手友好度
25/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。