gpt4 book ai didi

wpf - 如何在我的 WPF 应用程序中为页面制作模式对话框?

转载 作者:行者123 更新时间:2023-12-03 10:40:57 29 4
gpt4 key购买 nike

我有一个 WPF 窗口,其中有一个包含一个框架的控件。在那个框架中,我显示不同的页面。有没有办法让对话框模式只显示一个页面?当我显示对话框时,应该无法单击页面上的任何控件,但应该可以单击不在页面上的同一窗口上的控件。

最佳答案

如果我对您的信息的解释是正确的,那么您想要的东西类似于
Billy Hollis demonstrates in his StaffLynx application .

我最近构建了一个类似的控件,结果证明这种想法在 WPF 中实现起来相对简单。我创建了一个名为 DialogPresenter 的自定义控件。在自定义控件的控件模板中,我添加了类似于以下内容的标记:

<ControlTemplate TargetType="{x:Type local=DialogPresenter}">
<Grid>
<ContentControl>
<ContentPresenter />
</ContentControl>
<!-- The Rectangle is what simulates the modality -->
<Rectangle x:Name="Overlay" Visibility="Collapsed" Opacity="0.4" Fill="LightGrey" />
<Grid x:Name="Dialog" Visibility="Collapsed">
<!-- The template for the dialog goes here (borders and such...) -->
<ContentPresenter x:Name="PART_DialogView" />
</Grid>
</Grid>
<ControlTemplate.Triggers>
<!-- Triggers to change the visibility of the PART_DialogView and Overlay -->
</ControlTemplate.Triggers>
</ControlTemplate>

我还添加了 Show(Control view)方法,它找到“PART_DialogView”,并将传入的 View 添加到 Content属性(property)。

这让我可以使用 DialogPresenter如下:
<controls:DialogPresenter x:Name="DialogPresenter">
<!-- Normal parent view content here -->
<TextBlock>Hello World</TextBlock>
<Button>Click Me!</Button>
</controls:DialogPresenter>

对于按钮事件处理程序(或绑定(bind)命令),我只需调用 DialogPresenter 的 Show() 方法。 .

您还可以轻松地将 ScaleTransform 标记添加到 DialogPresenter 模板,以获得视频中显示的缩放效果。该解决方案具有整洁的自定义控件代码,以及为您的 UI 编程团队提供的非常简单的界面。

希望这可以帮助!

关于wpf - 如何在我的 WPF 应用程序中为页面制作模式对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/173652/

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