桌面 DLL 中的 Prism PopupChildWindowAction 缺失

2023-11-30

我正在尝试在 WPF Prism 桌面应用程序中实现模式对话框。

从 Prism 指导中我可以看到正确的方法应该是使用交互:

<i:Interaction.Triggers>
    <prism:InteractionRequestTrigger 
            SourceObject="{Binding ConfirmCancelInteractionRequest}">

        <prism:PopupChildWindowAction
                  ContentTemplate="{StaticResource ConfirmWindowTemplate}"/>

    </prism:InteractionRequestTrigger>
</i:Interaction.Triggers>

But PopupChildWindowAction不适用于桌面版 Microsoft.Practices.Prism.Interactivity.DLL 库,只有 Silverlight?

我可以在 google 上搜索 WPF (Prism) 中模态对话框的许多不同实现,但只是想知道为什么 Prism Desktop DLL 中缺少此功能,而 Silverlight DLL 中却提供了此功能? 我可以使用交互服务,但建议使用交互请求作为 MVVM 应用程序更合适的方法。


确实如此,它只存在于 Silverlight prism 库中,

你能做的就是创建你自己的。

CS :

public class OpenPopupWindowAction : TriggerAction<FrameworkElement>
{     
    protected override void Invoke(object parameter)
    {           
        var popup = (ChildWindow)ServiceLocator.Current.GetInstance<IPopupDialogWindow>();
        popup.Owner = PlacementTarget ?? (Window)ServiceLocator.Current.GetInstance<IShell>();

        popup.DialogResultCommand = PopupDailogResultCommand;
        popup.Show();                      
    }

    public Window PlacementTarget
    {
        get { return (Window)GetValue(PlacementTargetProperty); }
        set { SetValue(PlacementTargetProperty, value); }
    }       

    public static readonly DependencyProperty PlacementTargetProperty =
        DependencyProperty.Register("PlacementTarget", typeof(Window), typeof(OpenPopupWindowAction), new PropertyMetadata(null));


    public ICommand PopupDailogResultCommand    
    {
        get { return (ICommand)GetValue(PopupDailogResultCommandProperty); }
        set { SetValue(PopupDailogResultCommandProperty, value); }
    }

    public static readonly DependencyProperty PopupDailogResultCommandProperty =
        DependencyProperty.Register("PopupDailogResultCommand", typeof(ICommand), typeof(OpenPopupWindowAction), new PropertyMetadata(null));        
}

XAML :

    <i:EventTrigger SourceObject="{Binding}" EventName="NavigatedFrom"> 
        <popup:OpenPopupWindowAction  PopupDailogResultCommand="{Binding OnNavigationConfirmed}"/>
    </i:EventTrigger>

如果您需要,这里是对话框窗口本身的代码。

cs:

public partial class ChildWindow : Window, IPopupDialogWindow
{
    public ChildWindow()
    {
        InitializeComponent();
        DataContext = this;
    }

    public new PopupDialogResult DialogResult
    {
        get;
        set;
    }

    public System.Windows.Input.ICommand DialogResultCommand
    {
        get;
        set;
    }
}

xaml :

  <Window x:Class="Utils.ActionPopupWindow.ChildWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="300" Width="400" WindowStartupLocation="CenterOwner"
    xmlns:popup="clr-namespace:Utils.ActionPopupWindow"
    xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" 
    xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"
    x:Name="popUpWindow"
    >

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="30"/>
    </Grid.RowDefinitions>
    <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="30">
        This is a child window <LineBreak/> launched from the <LineBreak/>main window
    </TextBlock>
    <StackPanel Grid.Row="1" Background="#FFA6A6A6">
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">

            <Button Content="Ok" 
                    MinWidth="100" 
                    Command="{Binding DialogResultCommand}" 
                    CommandParameter="{x:Static popup:PopupDialogResult.OK}"
                    >
                 <i:Interaction.Triggers>
                      <i:EventTrigger EventName="Click">
                         <ei:CallMethodAction MethodName="Close" TargetObject="{Binding ElementName=popUpWindow}"/>
                       </i:EventTrigger>
                  </i:Interaction.Triggers>
            </Button>

            <Button Content="Cancel" 
                    MinWidth="100"
                    Command="{Binding DialogResultCommand}" 
                    CommandParameter="{x:Static popup:PopupDialogResult.Cancel}"
                    >
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="Click">
                        <ei:CallMethodAction MethodName="Close" TargetObject="{Binding ElementName=popUpWindow}"/>
                    </i:EventTrigger>
                </i:Interaction.Triggers>
            </Button>           
        </StackPanel>             
    </StackPanel>

</Grid>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

桌面 DLL 中的 Prism PopupChildWindowAction 缺失 的相关文章

  • 如何在 Qt Creator 中编辑 QtWebKit 的右键上下文菜单?

    好吧 这是我的困境 我正在使用 Qt Creator 制作一个使用 Webkit 的简单应用程序 我认为 Qt Creator 会有一种简单的方法来使用信号和槽编辑器编辑右键单击上下文菜单 但事实证明这不是真的 我知道 webkit 有与上
  • WPF 双值数据与自定义小数分隔符绑定

    是否有一种集中方式让 WPF UI 遵守控制面板 gt 区域设置中设置的自定义小数分隔符 当我将双值数据绑定到文本框时 我想使用区域设置中设置的小数分隔符输入值 下面的代码 当放入应用程序的构造函数中时 将使用当前区域性设置的小数分隔符 但
  • 如何在Windows窗体中平滑地重新绘制Panel

    如何将面板重漆成光滑的 我正在使用一个使面板无效的计时器 panel1 Invalidate 每 300 毫秒一次 然后panel1 Paint如果我向该面板添加图像 问题是它看起来像是在跳跃 我需要尽可能快地移动其上的一张图像 这是截屏问
  • EF 6:映射复杂类型集合?

    EF 6 代码优先 是否支持复杂类型集合 值对象集合 映射 我知道它支持复杂类型 但还没有找到我们拥有复杂类型集合的示例 例如 假设您有一个名为 Student 的实体 其中包含联系人集合 对于 NH 我可以简单地说 Student 有一个
  • 如何从 XmlDocument() 上的 URL 加载 XML

    我有这个代码 string m strFilePath http www google com ig api weather 12414 hl it XmlDocument myXmlDocument new XmlDocument myX
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • 如何重写 C++ 标准库类函数?

    如何重写 C 标准库类函数 在我的应用程序中 我使用ofstream代码中许多不同位置的对象 现在我想在Linux Ubuntu中以不同的权限模式打开文件 但open的函数ofstream没有参数来指定它创建的文件的权限模式 现在我想覆盖o
  • 实体框架 6 - 使用我的 getHashCode()

    这篇文章需要了解一定的背景知识 请耐心等待 我们有一个使用 EF 的 n 层 WPF 应用程序 我们通过 dbContext 将数据从数据库加载到 POCO 类中 dbContext 被销毁 然后用户可以编辑数据 我们使用 Julie Le
  • LongListSelector 更改 ItemTemplate

    我想动态改变ItemTemplate of a LongListSelector 我通过将其绑定到 ViewModel 中的属性来做到这一点
  • C++ 将 HashMap 对象返回给 Java

    我有一个 JAVA 调用的 JNI 函数 需要构建并返回一个 HashMap 映射的键是 String 相应的值是 boolean 或 Boolean 任何一个都可以 只要它有效 使用我当前的代码 如下 该字符串已成功添加到返回的映射中 并
  • Json.NET 在返回 json 序列化字符串时添加反斜杠

    我正在尝试使用 Json NET 将列表序列化为 json 字符串 但返回字符串中包含反斜杠 这又导致 json 解析失败 var x from d in entities Books ToList select new ID d ID B
  • C# 在不使用反射的情况下运行时出现“找不到方法”异常

    我在获得上述异常时遇到问题 我有一个相对简单的结构 分为两个 dll 第一个包含 IEntityService IEntity 和基本实现 第二个包含实际的实现和接口 因此 有一个 IMachine 服务实现了 IEntityService
  • 使用 jni 从 C 调用 java 函数

    我正在编写一个简单的程序来从我的 C 程序调用 Java 函数 以下是我的代码 include
  • 处理后退导航 Windows 10 (UWP)

    在我的 Xaml 页面中 我有一个框架 我正在尝试使用 backButton 事件来在frame 内导航 所以我尝试使用这段代码 public MainPage this InitializeComponent if Windows Fou
  • 代码契约确保 ReSharperExternalAnnotations

    有谁知道如何在 ReSharperExternalAnnotations 中添加 Code Contracts Ensures 它在最新的 v7 1 3 和最新的 v8 EAP 中都不存在 在任何自定义 xml 中也不存在 具体来说 它应该
  • C++11正则表达式匹配[重复]

    这个问题在这里已经有答案了 我正在尝试在 C 11 中进行相当简单的正则表达式匹配 使用 gcc 4 7 2 但我遇到了很多麻烦 尝试使用构建模式 std regex unquoted R regex s s regex 导致构造函数抛出一
  • 隐藏 AppBar 中的省略号

    当您在 UWP 应用中创建 AppBar 或 CommandBar 时 控件侧面附近总会隐藏一个省略号 如下所示 我不想在我的应用程序中使用它 但我没有在其中找到任何方法 属性AppBar这会帮助我摆脱它 这应该是可能的 因为许多默认的 W
  • 我可以向函数添加属性以防止重入吗?

    目前 我有一些如下所示的功能 private bool inFunction1 false public void function1 if inFunction1 return inFunction1 true do stuff whic
  • 使用 lambda 从数组中选择每隔一个元素[重复]

    这个问题在这里已经有答案了 C 4 0 如何使用 lambda 表达式完成以下操作 int a new int 8 0 1 2 3 4 5 6 7 Now fetch every second element so that we get
  • PerformanceCounter.NextValue() 抛出 InvalidOperationException

    这是创建性能计数器的代码 var ftpPerfCounter new PerformanceCounter FTP Service Current Connections Total 这是异常发生的地方 int cnt int Math

随机推荐

  • 使用 PHP 脚本进行 ERR_CONNECTION_RESET

    我有一个 PHP 脚本 可以下载和处理一些文件 有时文件数量非常大 因此需要一些时间 但是 当有大量文件需要处理时 连接会中断并出现 ERR CONNECTION RESET 错误 Chrome 这是我的配置 upload max file
  • 从网站上的按钮下载文件的 Python 脚本

    我想通过单击以下网址中的 导出到 Excel 按钮来下载 xls 文件 https apps tampagov net CallsForService Webapp Default aspx type TPD 更具体地说 按钮 name c
  • offsetTop 与 jQuery.offset().top

    我读过offsetLeft and offsetTop不能在所有浏览器中正常工作 jQuery offset 应该为此提供一个抽象 以提供正确的值 xbrowser 我想要做的是获取元素被单击的位置相对于元素左上角的坐标 问题是jQuery
  • 在 iOS 上读取 sms.db 和 call_history.db 文件?

    我正在为越狱的 iPhone 5s iOS 7 1 1 开发一个应用程序 以获取存储在相应 db 文件中的通话日志和消息 我有一些疑问 我有一个有效的证书 配置文件 并且我的应用程序是使用此配置文件签名的 因此是否有必要删除此配置文件并使用
  • 错误:控制到达非 void 函数的末尾

    我在学习C 我从教科书上复制了这段代码 在编译代码时 最后出现错误 错误说 控制到达非 void 函数的末尾 它位于代码的末尾 include ComplexNumber hpp include
  • 限制线程数和 Java 并发

    我找不到使用最新 JAVA 并发例程的具体案例的示例 我打算使用threads处理可能包含 0 到数千个请求的开放队列中的项目 我想限制在任何给定时间都有不少于 0 且不超过 10 个线程处理队列项目 是否有针对这种特定类型案例的 Java
  • 如何使用 JqGrid 更改 select2 下拉列表的选定值?

    我用的是奥列格的选择2演示 但我想知道是否可以更改下拉菜单中当前选择的值 例如 如果加载的四个值是 Any Fruit Vegetable Meat 下拉列表默认为 Any 我怎样才能将其更改为 Fruit 在 JqGrid 事件中load
  • Android Studio 空白活动

    我使用的是 Android Studio 2 1 没有 空白活动 选项 我见过有人问过这个问题 一般的建议是 自己做一个 问题是我对 Android 开发一无所知 所以我正在学习这个教程http developer android com
  • jQuery onclick 删除表格行

    如何点击删除表格行 这里有一个jsfiddle 我只想删除 del 链接嵌套的行 而不是脚本现在执行的最后一行 单击呼叫delTableRow 函数并且需要更改该函数以删除嵌套的 del 链接行
  • jqGrid 多选上的 PrettyCheckable

    我有一个jqGrid带有我用 CSS 自定义的多选复选框的表格和漂亮可检查 要自定义我设置的表格的所有复选框 prettyCheckable 如下 jQuery document ready function input type chec
  • sqoop 与 mysql 的导入问题

    我有一个基于 cdh5 的 hadoop ha 设置 我尝试使用 sqoop 从 mysql 导入表失败 并出现以下错误 15 03 20 12 47 53 ERROR manager SqlManager Error reading fr
  • 空格上仅支持 JavaScript 的自动换行功能?

    我发现的大多数自动换行功能都绑定到 css 和 或浏览器 dom 我正在 javascript 环境 rhino 中工作 需要找到或设计一个更好的自动换行 该换行可以在给定行长度值之前的空白处中断 我当前的解决方案只是搜索给定字符之前的最后
  • C++ 中如何进行柯里化?

    什么是柯里化 C 中如何进行柯里化 请解释一下STL容器中的活页夹 1 什么是柯里化 柯里化只是意味着将多个参数的函数转换为单个参数的函数 使用一个例子可以很容易地说明这一点 取一个函数f它接受三个参数 int f int a std st
  • 解决 pex 内部类

    当被测试的类是内部类时 有什么方法可以让 pex 工作吗 密封课程怎么样 我的意思是 毕竟这种类型的工具非常适合 API 测试 有时您可能希望至少将内容保留在内部 Thanks 通过以下方式为测试组件提供内部可见性InternalsVisi
  • 有没有办法模糊匹配或提供分数作为行值应与哪个 ID 或组关联的假设?

    我有一个看起来像这样的数据集 structure list ID c 1 2 3 4 5 6 7 8 9 10 Date c 2020 01 n04 2020 04 03 2020 12 10 2020 09 12 2020 11 19 2
  • 在运行时修改函数(拉出局部变量)

    想象一下这个简单的函数创建变量的修改值default modified default 0 def modify modified default 1 print modified replace with OS call I can t
  • 从单词列表中提取所有匹配的关键字并创建一个新的数据框 pandas [重复]

    这个问题在这里已经有答案了 我想从意见列中提取所有匹配的关键字 如果它们与关键字列表中的单词匹配 则在新列中打印所有匹配的单词 包括重复的单词 当前代码仅提取第一个匹配的单词 不包含重复的单词 import pandas as pd df
  • 作为 Maven 构建过程的一部分运行量角器测试

    我有一个 Maven 项目 我不想更改 POM 以便当我构建项目 Clean Install 时 在编译部分之后 将启动一组量角器测试 打开 selenium 并做几件事 并且仅如果测试通过 则构建本身也通过 我似乎找不到能为我提供这种功能
  • R 计算 for 循环中的平均值

    我有我的代码 V max 10 V min 0 n 1 H 1 C c 0 0 01 0 1 1 par mfrow c length C 1 1 mar c 2 0 2 0 oma c 1 5 0 0 V lt function C H
  • 桌面 DLL 中的 Prism PopupChildWindowAction 缺失

    我正在尝试在 WPF Prism 桌面应用程序中实现模式对话框 从 Prism 指导中我可以看到正确的方法应该是使用交互