stormwen 2022-11-09 13:51 采纳率: 0%
浏览 57
已结题

wpf数据双重绑定后,MVVM绑定控件失效

wpf数据双重绑定后,MVVM绑定控件失效
代码如下

UI是ListBox循环嵌套(此处只保留了核心控件)

<ListBox x:Name="lbOrder" ItemsSource="{Binding P_OrderList}" >
    <ListBox.ItemTemplate>
        <DataTemplate>
            <CheckBox IsChecked="{Binding IsSelect, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"   Command="{Binding  ElementName=lbOrder,Path=DataContext.DC_OrderSelected}" ToolTip="选择订单" />
            <ListBox ItemsSource="{Binding OrderDetails}" >
                <ListBox.ItemTemplate>
                    <DataTemplate >
                        <CheckBox  IsChecked="{Binding IsSelectGoods, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"   Command="{Binding  ElementName=lbOrder,Path=DataContext.DC_OrderDetailSelected}" ToolTip="选中订单商品"  />
                        <TextBlock Text="{Binding InPrice}"></TextBlock>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

model的定义

public class P_OrderList{
        public Guid Id { get; set; }
        private bool _IsSelect;
        public bool IsSelect
        {
            get { return _IsSelect; }
            set { _IsSelect = value; OnPropertyChanged("IsSelect"); }
        }
        private ObservableCollection<OutOrderDetailDto> _OrderDetails;
        public ObservableCollection<OutOrderDetailDto> OrderDetails
        {
            get { return _OrderDetails; }
            set { _OrderDetails = value; OnPropertyChanged("OrderDetails"); }
        }
}  
  public class OutOrderDetailDto
    {
        public Guid Id { get; set; }
        public Guid OrderId { get; set; }

        private decimal _InPrice;
        public decimal InPrice
        {
            get { return _InPrice; }
            set
            {
                _InPrice = value; OnPropertyChanged("InPrice");
            }
        }
        private bool _IsSelectGoods;
        public bool IsSelectGoods
        {
            get { return _IsSelectGoods; }
            set { _IsSelectGoods = value; OnPropertyChanged("IsSelectGoods"); }
        }
  }

img

遇到的问题

1,选择了左侧商品或者订单的复选框。IsSelect 和IsSelectGoods的值已经发生了变化,但是CheckBox控件没有响应,IsChecked没有响应变化。
2,逻辑层,变更了 InPrice 的值,控件也没有变。

其他都绑定都没有问题,是不是双重绑定导致的?应该怎么解决该?

  • 写回答

5条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-11-09 17:15
    关注
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月16日
  • 创建了问题 11月9日

悬赏问题

  • ¥15 乘性高斯噪声在深度学习网络中的应用
  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧