【问题标题】:Scope of Popup and InteractionRequest in PrismPrism中Popup和InteractionRequest的范围
【发布时间】:2011-10-12 05:36:30
【问题描述】:

我需要说明何时使用 Pop-up、InteractionRequest。这是我的场景。

我有左侧导航视图,它以树格式显示文件夹(与 Windows 目录相同)。我应该允许用户使用上下文菜单添加、重命名和删除目录。对于添加和重命名操作,它应该弹出一个带有“文本框”的窗口供用户输入,并且应该有“保存”和“取消”按钮。对于删除选项,如果应该要求确认。

添加/重命名操作应该怎么做?

  1. 创建没有 ViewModel 的简单窗口(用户输入 TextBox、保存和取消按钮)。保存和取消按钮单击将设置 DialogResult 标志并关闭窗口。

  2. 使用 ViewModel 创建简单的窗口(带有用户输入 TextBox 、保存和取消按钮)。 保存和取消按钮点击将在 ViewModel 中处理(这看起来有点乏味,因为代码非常有限)。

  3. 有没有其他方法可以处理这个问题?

删除操作应该怎么做?

  1. 我会去InteractionRequest

  2. 我会选择自定义窗口 (Dialog),它会像 MessageBox 一样被调用,没有弹出窗口或 InteractionRequest(即来自视图模型 => MyMessageBox.Show(.....) == Dialog.Ok。 .

请给我正确的解决方案。

【问题讨论】:

  • 我希望这个问题包含有关交互请求和弹出窗口的所有信息。我花了很多时间在哪里使用交互请求和弹出窗口以及不应该使用的位置。
  • 好吧,我会做一点研究并很快更新我的答案。

标签: c# wpf prism


【解决方案1】:

由于您的 Popup 非常小,我实际上会在您当前的 View 中创建一个 DataTemplate,然后将 Add/Rename/Remove 命令绑定到同一个 ViewModel。

我喜欢使用my own custom Popup,因为过去我在使用 WPF 的弹出窗口时遇到过很多问题。一般是这样使用的:

<Grid Name="RootPanel">

    <DockPanel>
        <TreeView DockPanel.Dock="Right" />
        // <!-- Other Window Content -->
    </DockPanel>

    <local:PopupPanel
        local:PopupPanel.PopupParent="{Binding ElementName=RootPanel}"
        local:PopupPanel.IsPopupVisible="{Binding IsPopupVisible}"

        local:PopupPanel.BackgroundOpacity=".5"
        local:PopupPanel.PopupEnterKeyCommand="{Binding SaveCommand}"
        local:PopupPanel.PopupEscapeKeyCommand="{Binding CancelCommand}">

        // Put whatever you want for Popup Content here

        // Usually I have a property in my ViewModel for PopupContent, and 
        // will put a ContentControl here that uses a different ContentTemplate 
        // based on what type of object is in PopupContent
    </local:PopupPanel>

</Grid>

【讨论】:

  • 1.它适用于 TextBox 用户输入吗? 2. 为什么不自定义 MessageBox 像 MyMessageBox.Show(..) 或 IMessageBox.Show(..) 这样我就可以改变消息框的样式。
  • @Mohanavel 1. 是的。 2.当然你可以用.Show()方法创建你自己的自定义MessageBox,但是如果你想修改对话框的内容,我觉得用Popup更容易
  • 你能给我一个 URL/Sample 站点,它包含带有用户输入 TextBox 的 POP-UP 或交互请求吗?我希望这个问题包含有关交互请求和弹出窗口的所有信息。我花了很多时间在哪里使用交互请求和弹出窗口以及不应该在哪里使用。
  • @Mohanavel 我从不使用交互请求或 WPF 的内置弹出窗口,所以我没有任何关于这些书签的网站。不过,您应该可以通过 Google 轻松找到一些内容。
猜你喜欢
  • 1970-01-01
  • 2013-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
  • 1970-01-01
  • 2022-01-02
相关资源
最近更新 更多