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

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日

悬赏问题

  • ¥20 关于 openpyxl 处理excel文件地问题
  • ¥15 MS中不知道高分子的构型怎么构建模型
  • ¥60 QQOP数据,什么是op数据号,怎么提取op数据!能不能大量提取(语言-c语言)
  • ¥15 matlab代码 关于微分方程和嵌套的分段函数。
  • ¥15 onlyoffice编辑完后立即下载,下载的不是最新编辑的文档
  • ¥15 求caverdock使用教程
  • ¥15 Coze智能助手搭建过程中的问题请教
  • ¥15 12864只亮屏 不显示汉字
  • ¥20 三极管1000倍放大电路
  • ¥15 vscode报错如何解决