WPF ItemsControl 按钮命令绑定不起作用

2023-12-13

我有一个 ItemsControl 控件,其 ItemsSource 为 ObservableCollection。它的 DataTemplate 内部还有一个按钮。按钮的 Command 属性绑定到 ViewModel 中的 RelayCommand(我使用的是 MVVM Light),CommandParameter 绑定到 ItemsSource 中的相应项目。
问题是由于某种原因该命令永远不会触发。另一方面,代码隐藏工作得很好。在调试鼠标单击事件处理程序时,我可以看到发送者(Button 类型)的 CommandParameter 填充了正确的数据,而 Command 为空。

我在这里错过了什么?

XAML:

<ItemsControl ItemsSource="{Binding Users}"
              Margin="{StaticResource ContentMargin}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Button Margin="{StaticResource ImageButtonMargin}"
                    Style="{StaticResource ImageButtonStyle}"
                    Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}, Path=DataContext.UserSelectedCommand}"
                    CommandParameter="{Binding}">
                    <!--...-->

视图模型:

private ObservableCollection<User> _users;
private RelayCommand<User> _userSelectedCommand;

public ObservableCollection<User> Users
{
    get { return _users; }
    set
    {
        _users = value;
        RaisePropertyChanged();
    }
}

public RelayCommand<User> UserSelectedCommand
{
    get { return _userSelectedCommand; }
}

protected override sealed void SetCommands() // called in the constructor which is in turned called by SimpleIoc
{
     userSelectedCommand = new RelayCommand<User>((user) => UserSeriesSelected(user));
}

private void UserSelected(User selectedUser)
{

}

使用命名元素绑定作为数据模板内的绑定源,以从根数据上下文访问命令。您可以使用根网格或其他容器作为命名元素。 ItemsControl 本身也可以使用。

<ItemsControl x:Name="MyItems" ItemsSource="{Binding Users}"
              Margin="{StaticResource ContentMargin}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Button Margin="{StaticResource ImageButtonMargin}"
                    Style="{StaticResource ImageButtonStyle}"
                    Command="{Binding ElementName=MyItems,  Path=DataContext.UserSelectedCommand}"
                    CommandParameter="{Binding}">
                    <!--...-->
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF ItemsControl 按钮命令绑定不起作用 的相关文章

  • 每个托管线程是否都有自己对应的本机线程?

    我想知道是否在 Net 中创建托管线程 通过调用Thread Start 导致在后台创建一个本机线程 那么托管线程是否有对应的本机线程呢 如果是 当托管线程等待或睡眠时 是否意味着相应的本机线程也在等待或睡眠 是的 NET 线程映射到所有当
  • 提交后禁用按钮

    当用户提交付款表单并且发布表单的代码导致 Firefox 中出现重复发布时 我试图禁用按钮 去掉代码就不会出现这个问题 在firefox以外的任何浏览器中也不会出现这个问题 知道如何防止双重帖子吗 System Text StringBui
  • MVC 在布局代码之前执行视图代码并破坏我的脚本顺序

    我正在尝试将所有 javascript 包含内容移至页面底部 我正在将 MVC 与 Razor 一起使用 我编写了一个辅助方法来注册脚本 它按注册顺序保留脚本 并排除重复的内容 Html RegisterScript scripts som
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • 使用 LINQ2SQL 在 ASP.NET MVC 中的各种模型存储库之间共享数据上下文

    我的应用程序中有 2 个存储库 每个存储库都有自己的数据上下文对象 最终结果是我尝试将从一个存储库检索到的对象附加到从另一个存储库检索到的对象 这会导致异常 Use 构造函数注入将 DataContext 注入每个存储库 public cl
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • 如何区分用户点击链接和页面自动重定向?

    拥有 C WebBrowser control http msdn microsoft com en us library system windows forms webbrowser aspx在我的 WinForms 应用程序中 并意识
  • 使用接口有什么好处?

    使用接口有什么用 我听说它用来代替多重继承 并且还可以用它来完成数据隐藏 还有其他优点吗 哪些地方使用了接口 程序员如何识别需要该接口 有什么区别explicit interface implementation and implicit
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • DbContext 和 ObjectContext 有什么区别

    From MSDN 表示工作单元和存储库模式的组合 使您能够查询数据库并将更改分组在一起 然后将这些更改作为一个单元写回存储 DbContext在概念上类似于ObjectContext 我虽然DbContext只处理与数据库的连接以及针对数
  • 如何在 Xaml 文本中添加电子邮件链接?

    我在 Windows Phone 8 应用程序中有一些大文本 我希望其中有电子邮件链接 例如 mailto 功能 这是代码的一部分
  • WPF - 关闭 App.g.cs 中 Main 的自动生成

    我正在学习WPF 我想在 App xaml cs 中提供我自己的 Main 方法 而不是在 App g cs 中为我生成一个方法 然而 我不断遇到冲突 因为我还没有找到如何阻止生成额外的 Main 我的项目文件或其他地方是否有控制此设置的设
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • 为什么 gcc 抱怨“错误:模板参数 '0' 的类型 'intT' 取决于模板参数”?

    我的编译器是gcc 4 9 0 以下代码无法编译 template
  • 如何在非控制台应用程序中查看 cout 输出?

    输出到调试窗口似乎相当繁琐 我在哪里可以找到cout如果我正在编写非控制台信息 则输出 Like double i a b cout lt lt b lt lt endl I want to check out whether b is z
  • 按 Esc 按键关闭 Ajax Modal 弹出窗口

    我已经使用 Ajax 显示了一个面板弹出窗口 我要做的是当用户按 Esc 键时关闭该窗口 这可能吗 如果有人知道这一点或以前做过这一点 请帮助我 Thanks 通过以下链接 您可以通过按退出按钮轻松关闭窗口 http www codepro
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 如何将 PostgreSql 与 EntityFramework 6.0.2 集成? [复制]

    这个问题在这里已经有答案了 我收到以下错误 实体框架提供程序类型的 实例 成员 Npgsql NpgsqlServices Npgsql 版本 2 0 14 2 文化 中性 PublicKeyToken 5d8b90d52f46fda7 没

随机推荐

  • 实体框架 - 在事务内的“SaveChanges”之前检索 ID

    在实体框架中 在调用 SaveChanges 之前 是否有任何方法可以检索事务内新创建的 ID 身份 我需要第二次插入的 ID 但它总是返回为 0 ObjectContext objectContext IObjectContextAdap
  • 在Mongodb中存储100MB的大文件

    我想在 MongoDB 中存储 100MB 到 1GB 的大文件 就像 BLOB 对象一样 以后可以更轻松地检索它 我使用的编程语言是 PHP 请从这个意义上指导我 为此 您需要使用 GridFS 因为通常 MongoDB 文档限制为 16
  • JSF 模板:呈现的页面缺少 DOCTYPE

    TL DR 我无法让 DOCTYPE 标头出现在我的 JSF 页面上 我刚刚继承了一个 JSF 1 2 项目 该项目在 IE 下存在一些显示问题 我是 JSF 的新手 但我认为问题源于这样一个事实 渲染的页面 来自 查看源代码 不包含正确的
  • 合并两个不同时间粒度的时间序列

    我有两个包含时间序列数据的 CSV 文件 我想将这两个合并到一个文件中 File1 具有以 1 分钟为间隔的周期性数据 File2 具有非周期性的事件触发数据 File2 中数据的时间戳可能与 File1 中的数据一致 也可能不一致 我想合
  • 访问策略不可用

    我正在尝试在 Azure Key Vault 中输入访问策略 但收到消息 访问策略不可用 此密钥保管库的访问配置设置为基于角色的访问控制 要添加或管理您的访问策略 请转至访问控制 IAM 页面 在azure中 我如何输入访问策略 我已经添加
  • 如何在Sql中创建用户定义的类型

    我不知道如何创建具有可选约束的域 我试过 CREATE DOMAIN idx INT CHECK VALUE gt 100 AND VALUE lt 999 但遇到了以下错误 CREATE DROP 或 ALTER 语句中使用了未知的对象类
  • 如何使用 AngularDart 根据类型和名称进行依赖注入?

    我有两个服务 每个服务都需要一个不同的WebSocket 作为构造函数参数 我想使用 AngularDart 的依赖注入来传递 WebSocket 连接 但我不能单独依赖类型 因为我有两个 WebSocket 如何注释或指定每个服务应使用哪
  • asp.net mvc ajax post返回404未找到

    我正在尝试使用 jquery ajax 函数执行 ajax 请求 我有一个非常奇怪的行为 我的文件夹结构是这样的 我的客户端 ajax 调用 在 UserManagement Index cshtml 中 如下所示 var rolename
  • 带有多个选择框的 jQuery 验证插件

    我正在使用 jQuery Validate 来验证我的表单 问题是我有一个带有多个选择框 动态数字 的表单 并且它有一个动态名称 gt answers question id 我见过一些脚本 当有固定名称时 您可以使用它来寻址所有输入字段
  • 将 Apache ServiceMix 连接到 Websphere MQ

    我正在尝试从部署为 Apache Service Mix 上的 OSGI 包的驼峰路由连接到 websphere MQ 队列管理器 我已经部署了 Websphere MQ 附带的 IBM OSGI 包 并按如下方式配置了 Spring 配置
  • 如何在Python中对范围函数的值求和[重复]

    这个问题在这里已经有答案了 基本上我想总结表达式 k 5 的结果x 17 但 x 不同 例如 k 53 17 k 5 4 17 等等 到目前为止 我的代码如下所示 结果需要是来自范围 3 9 的 for x in range 3 9 k 5
  • 使用 jq 如何将一个非常大的 JSON 文件拆分为多个文件,每个文件都有特定数量的对象?

    我有一个很大的 JSON 文件 我猜有 400 万个对象 每个顶层都有几个嵌套在其中的级别 我想将其拆分为多个文件 每个文件包含 10000 个顶级对象 保留每个文件内部的结构 jq应该可以做到吧 我不知道怎么办 所以数据是这样的 id 1
  • 在 MVC 中提供用户通知/确认的推荐方法是什么?

    我遇到的一个常见场景是在用户执行操作后向他们提供通知 确认以告知他们成功 例如 假设用户在反馈表上提供反馈 然后单击提交反馈 您可能想显示 感谢您的反馈 消息after您已经执行了一些验证 例如他们在数据库中有有效的电子邮件 一些伪代码 p
  • 多个RDD的Spark联合

    在我的猪代码中我这样做 all combined Union relation1 relation2 relation3 relation4 relation5 relation 6 我想对火花做同样的事情 然而 不幸的是 我发现我必须继续
  • 防止 NSURLSession 默认 HTTP 标头

    我正在尝试向服务器发送一个非常具体的 HTTP 请求 即定义exactHTTP 标头集 但是NSURLSession不断 有帮助地 插入一堆 HTTP 标头 例如Accept Accept Language and Accept Encod
  • python,pandas,按组自相关

    fips year sc 0 1001 1990 0 707465 1 1001 1991 0 707465 2 1001 1992 0 707465 3 1001 1993 0 707465 4 1001 1994 0 707465 5
  • 使用drawBackground在QGraphicsView上绘制背景

    我在尝试绘画时遇到问题QGraphicsView Scene 我正在画一堆QLineF as background overridingQGraphicsView drawBackGround 但是 当我尝试更改背景颜色时 什么也没有发生
  • 更改 jQuery UI 滑块值选项时动画滑块手柄?

    我使用 jQuery UI 1 8 滑块小部件来使用户能够水平滑动 滚动一系列图标 有时我想以编程方式移动滑块 正确的方法是更改 选项 值 如下所示 content slider slider option value 37 不过 滑块手柄
  • 重新抛出异常而不需要抛出异常? [复制]

    这个问题在这里已经有答案了 考虑以下代码 static void main String args try catch Exception e throw e 这段代码编译无需添加throws Exception到方法签名 它的行为与Thr
  • WPF ItemsControl 按钮命令绑定不起作用

    我有一个 ItemsControl 控件 其 ItemsSource 为 ObservableCollection 它的 DataTemplate 内部还有一个按钮 按钮的 Command 属性绑定到 ViewModel 中的 RelayC