这两天遇到的问题,终于解决了。记录一下!
问题: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 版权协议,转载请附上原文出处链接和本声明。