我正在尝试绑定一个在客户端视图表单中显示客户端状态的ComboBox。我有一个上下文类,名为 ClientUI ,它有一个属性 CurrentClient ,如下所示:
private Client _CurrentClient= null;
public Client CurrentClient
{
get
{
return _CurrentClient;
}
set
{
_CurrentClient= value;
OnPropertyChanged("CurrentClient");
}
}
在我的xaml表单中,我将 CurrentClient 中的所有属性(如名称,地址等)绑定到文本框。 所以当我这样做时:
CurrentClient = SomeClient;
它会自动更新表单中的所有字段以显示新客户端。 现在我正在尝试使用 ClientUI 中的客户端状态绑定ComboBox我有一个状态列表和我的 CurrentClient < / em>具有状态属性。 状态也是一个属性名称类型字符串的类。
这是我的ComboBox绑定:
<ComboBox IsEditable="False" DisplayMemberPath="Name" SelectedItem="{Binding CurrentClient.Status, Mode=TwoWay}" ItemsSource="{Binding ClientStatusList}" SelectedValuePath="Name" />
它有效,当我更改ComboBox时,它会更改 CurrentClient 中的proprty,当我强制 CurrentClient.Status 时......
CurrentClient.Status = ClientStatusList[0]
...... Combobox显示了该值。 问题是我什么时候
CurrentClient = SomeClient;
它更新每个textBox但不更新comboBox。
感谢帮助人员!
答案 0 :(得分:0)
您的“CurrentClient”属性是否已更改属性,但您的Client类中的“Status”属性是否已更改属性通知?如果没有尝试将INotifyPropertyChanged接口添加到Client类,然后将属性更改通知添加到Status属性。
仅仅因为您对属性的属性更改通知并不意味着子属性也可以。因此,与点状属性的绑定可能是不稳定的。
如果您没有编辑Client类的选项,那么您可以尝试在clientUI类中创建另一个“status”属性,该属性具有属性更改通知,然后在“CurrentClient”设置器中设置该属性。您应该能够更可靠地绑定到这个新属性