如何解决如何在一个网格上创建DialogHost并在另一个网格上调用
我正在寻找一种方法来使我的DialogHost
集中在WPF应用程序的中间,为此,我需要在MainGrid
中创建它。
<Grid Name="MainGrid">
<materialDesign:DialogHost CloSEOnClickAway="True">
<materialDesign:DialogHost.DialogContent>
<Grid Margin="20">
<TextBlock Text="My first Dialog" />
</Grid>
</materialDesign:DialogHost.DialogContent>
</materialDesign:DialogHost>
<Grid Name="Grid1" Width="250" Height ="Auto">
... //MyCode
<Button Name="MyButton" Style="{StaticResource MaterialDesignRaisedButton}" Click="ButtonClick">
...
</Grid>
</Grid>
但是,我将用来调用此DialogHost
的按钮在Grid1
中。
有可能这样做吗?如果可以,怎么办?
解决方法
您可以使用Material Design提供的DialogHost.OpenDialogCommand
路由命令。如果将其指定为Command
到按钮,它将引发路由事件,该事件在可视化树中冒泡,直到到达显示该对话框的DialogHost
来处理它为止。例如:
<Button Command="{x:Static materialDesign:DialogHost.OpenDialogCommand}">
由于此机制通过搜索父级对话主机而起作用,因此您必须为其分配views as content。这意味着将Grid
内的DialogHost
移到DialogContent
之后。
对于您的情况,您可以将DialogHost
直接放入窗口中,也可以将MainGrid
放入窗口宿主内容中。最后,只需要将Grid1
分配给按钮。
OpenDialogCommand
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。