gpt4 book ai didi

c# - MVVM ICommand 绑定(bind) "higher up"

转载 作者:行者123 更新时间:2023-12-03 10:58:01 24 4
gpt4 key购买 nike

我正在开发一个类似购物车的应用程序,作为实践 MVVM 设计模式的一种方式。

我有一个 View,它的 ViewModel 几乎只是一个 购物车 ,以及 购物车 主要是 的列表产品 s。

现在,我的 View 显示 产品 GridView ,它使用 DataTemplate 显示每个 的名称、价格和删除按钮产品 .问题是,由于数据绑定(bind),如果我尝试将 Remove 按钮的 Command 属性数据绑定(bind)到 删除命令 我的 ViewModel 中的属性,代码失败,因为它查找 删除命令 产品 类而不是 查看型号 类(class)。

我非常怀疑我想打破封装并拥有 产品 处理从 中删除自己购物车 ,但我似乎无法找出解决此问题的正确方法。

最佳答案

为您的 GridView 命名并执行 Command="{Binding ElementName=theGridView, Path=DataContext.RemoveCommand}" .您也可以使用 RelativeSource 绑定(bind),尽管我认为前者更快。

您还需要将 Product 本身传递给命令处理程序,以便知道用户单击了哪个,使用 CommandParameter="{Binding Path=.}" 执行此操作. RemoveCommand 属性应声明为返回类型 ICommand 但应返回 RelayCommand 的通用实例,即:

public ICommand RemoveCommand { get { return new RelayCommand<Product>(OnRemove); } }
private void OnRemove(Product product)
{
// remove it here
}

关于c# - MVVM ICommand 绑定(bind) "higher up",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34848415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com