微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在一个网格上创建DialogHost并在另一个网格上调用

如何解决如何在一个网格上创建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 举报,一经查实,本站将立刻删除。