在ContentControl中托管模式对话框

时间:2012-02-07 02:08:29

标签: wpf dialog hosting

我没有在MainWindow的中心托管我的模态对话框,而是希望在MainWindow中的一个ContentControl中托管它。希望有人可以告诉我如何解决这个问题。感谢。

2 个答案:

答案 0 :(得分:1)

我在自定义FrameworkElement的{​​{3}}上有一个示例,可让您在主要内容上显示模态内容。

控件可以像这样使用:

<c:ModalContentPresenter IsModal="{Binding DialogIsVisible}">
    <TabControl Margin="5">
            <Button Margin="55"
                    Padding="10"
                    Command="{Binding ShowModalContentCommand}">
                This is the primary Content
            </Button>
        </TabItem>
    </TabControl>

    <c:ModalContentPresenter.ModalContent>
        <Button Margin="75"
                Padding="50"
                Command="{Binding HideModalContentCommand}">
            This is the modal content
        </Button>
    </c:ModalContentPresenter.ModalContent>

</c:ModalContentPresenter>

特点:

  • 显示任意内容。
  • 在显示模态内容时不禁用主要内容。
  • 在显示模态内容时禁用对主要内容的鼠标和键盘访问。
  • 仅对其所涵盖的内容进行模态处理,而不是整个应用程序。
  • 可以通过绑定到IsModal属性以MVVM友好的方式使用。

答案 1 :(得分:0)

我已经构建了一个自定义UserControl来完成此行为。找到代码的文章为here,可以这样使用:

<local:PopupPanel 
    Content="{Binding PopupContent}"
    local:PopupPanel.PopupParent="{Binding ElementName=PopupParentPanel}"
    local:PopupPanel.IsPopupVisible="{Binding IsPopupVisible}" />