wpf - 在 MaterialDesign 的 DialogHost 中引用 MainWindow 的内容
问题描述
我正在使用 XAML 库中的 Material Design 开发 WPF 应用程序。我想使用一个对话框来显示错误消息。在我读过的文档中,为了使对话框后面的内容变暗和禁用,我必须将它放在 DialogHost 标记中,就在 DialogHost.DialogContent 之后
这就是我现在所拥有的:
<Window>
<md:DialogHost>
<md:DialogHost.DialogContent>
Content of my dialog box
</md:DialogHost.DialogContent>
My window's content wrapped in grid.
</md:DialogHost>
</Window>
问题是:我打算为不同目的添加更多对话框,但我真的不知道该怎么做,因为我必须将其余代码放在 DialogHost 标记中,在我看来应该是有点乱。
相反,我想实现这样的目标:
<Window>
<Grid>
<md:DialogHost>
<md:DialogHost.DialogContent>
Content of my dialog box
</md:DialogHost.DialogContent>
Reference somehow the rest of the window's content
</md:DialogHost>
Window's content
</Grid>
</Window>
我尝试使用 ContentPresenter 但我收到错误消息说属性 Content 不能绑定到可视元素。
如果上面描述的想法是不可能做到的,我怎么能使用超过 1 个对话框呢?因为将一个嵌套在另一个中会导致代码混乱。
解决方案
您应该首先从主窗口中删除并为您需要的每个对话框<md:DialogHost.DialogContent>
创建一个。<UserControl>
在使用此类对话框的 ViewModel 类中,您必须实例化它<UserControl>
并将此实例作为 DialogHost.Show 方法的参数提供。
Dim view As New MyDialog1() With {.DataContext = Me}
Dim obj as Object = Await MaterialDesignThemes.Wpf.DialogHost.Show(view)
if obj IsNot Nothing Then
'do something
EndIf
在这个(VB)示例中,MyDialog1 View 类是使用 VieModel 类的 DataContext 实例化的,允许 View 类访问 ViewModel 类属性。然后调用 DialogHost.Show 方法。View 类可以提供在 View 类关闭后评估的用户响应。
推荐阅读
- javascript - 如何在javascript中为每个onchange更改字体粗细
- selenium - 使用 Selenium 抓取 React 表
- mongodb - 查找嵌入式文档 ID
- spring-boot - 保护每个微服务
- go - 我们如何管理在 Kafka Confluent Golang 中运行多个进程的应用程序的事务 ID?
- oracle-apex - 评估类型开关并执行操作
- c# - 静态 ItemsSource 的 Xamarin.Forms Picker 问题
- javascript - 如何在使用 jquery ui 删除时对元素进行排序?
- ios - ThumbNail 生成器无法在 PryntTrimmerView CocoaPod 中获取帧宽度
- postgresql - 使用 Lambda 连接到私有子网中的 ec2 实例