更新父级时更新ComboBox

时间:2016-11-13 21:34:11

标签: c# wpf xaml combobox

我正在尝试绑定一个在客户端视图表单中显示客户端状态的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。

感谢帮助人员!

1 个答案:

答案 0 :(得分:0)

您的“CurrentClient”属性是否已更改属性,但您的Client类中的“Status”属性是否已更改属性通知?如果没有尝试将INotifyPropertyChanged接口添加到Client类,然后将属性更改通知添加到Status属性。

仅仅因为您对属性的属性更改通知并不意味着子属性也可以。因此,与点状属性的绑定可能是不稳定的。

如果您没有编辑Client类的选项,那么您可以尝试在clientUI类中创建另一个“status”属性,该属性具有属性更改通知,然后在“CurrentClient”设置器中设置该属性。您应该能够更可靠地绑定到这个新属性