gpt4 book ai didi

wpf - WPF中的非模态 float 对话框

转载 作者:行者123 更新时间:2023-12-04 10:32:56 29 4
gpt4 key购买 nike

我想创建一个 UI 序列,用户点击一个按钮,它会在它下面弹出一个小面板,上面有一个按钮和一个文本框,可能还有一个小的项目列表。
该对话框是非模态的,更重要的是,当您单击主窗口中的其他位置时,它就会消失。

例如,当您在 Internet Explorer 7 中单击“收藏夹”星形图标或在 Firefox 中两次单击位置栏中的星形时,它会显示书签编辑器对话框。

实现这一目标的最干净的方法是什么?

我应该使用 UserControl 并在单击按钮时绝对修复它的位置吗?
如果是这样,当用户单击其他地方时如何隐藏它?

最佳答案

我会说做你正在寻找的最干净的方法是使用 Popup . Popup 类显示一个 float 在屏幕上其余元素上方的元素,但它是非模态的,并且可以配置为在用户单击离开它时消失 - 非常适合您的非模态对话框。 Popup 类的属性允许您控制它相对于另一个控件的显示位置(在您的情况下,是您希望用户按下以打开弹出窗口的按钮)。

这是一个全 XAML 示例:

<Grid>
<ToggleButton HorizontalAlignment="Center" VerticalAlignment="Top"
x:Name="PopButton" Content="Pop"/>
<Popup Placement="Bottom" PlacementTarget="{Binding ElementName=PopButton}" StaysOpen="False"
IsOpen="{Binding ElementName=PopButton, Path=IsChecked, Mode=TwoWay}">
<Rectangle Height="100" Width="200" Fill="Blue"/>
</Popup>
</Grid>

您还可以使用命令或事件处理程序从代码中打开/关闭弹出窗口。

Placement 和 PlacementTarget 属性设置弹出窗口将出现的位置,以及它相对于哪个控件出现(还有其他选项允许您让它相对于其当前位置和相对于鼠标出现)。将 StaysOpen 设置为 False 将使 WPF 在用户单击弹出窗口外部时自动关闭它。

默认情况下,弹出窗口没有自己的样式 - 它只是 float 内容的容器 - 因此您必须将其样式设置为看起来像您的窗口镶边/工具栏/等。作为适当的。

关于wpf - WPF中的非模态 float 对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/915475/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com