关于WPF Combox数据绑定

  • Post author:
  • Post category:其他


这两天遇到的问题,终于解决了。记录一下!

问题:WPF 中Combox绑定了数据,选择时没有问题。但当绑定值改变时,Combox中的SelectItem没有更新。

在网上查了些资料,最后发现绑定的对象需要实现Equals 这个方法就可以。

如:

 public class Order : PropertyNotifier, IEquatable<Order> {
        private string _orderNo = string.Empty;
        private string _addressName;

        public string AddressName {
            get => _addressName;
            set {
                _addressName = value;
                NotifyPropertyChanged();
            }
        }
        public string OrderNo {
            get => _orderNo;
            set {
                _orderNo = value;
                NotifyPropertyChanged();
            }
        }
        [JsonIgnore]
        public string Name {
            get => $"{OrderNo}-{AddressName}";
        }
        public bool Equals(Order other) {
            if (ReferenceEquals(this, other)) {
                return true;
            }
            if (OrderNo == null) {
                OrderNo = string.Empty;
            }
            return OrderNo.Equals(other?.OrderNo);
        }

    }

XAML 中:

 <ComboBox Grid.Column="4" VerticalAlignment="Center"
                          SelectedItem="{Binding Path=Order, UpdateSourceTrigger=PropertyChanged}"
                          DisplayMemberPath="Name"  //显示内容
                          SelectionChanged="Order_OnSelectionChanged"
                          ItemsSource="{Binding Orders, UpdateSourceTrigger=PropertyChanged}" />



版权声明:本文为Falcon2000原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。