2016-11-13 115 views
1

我试图绑定显示客户端视图窗体中的客户端状态的组合框。我有一个名为ClientUI一个上下文类它有一个属性CurrentClient这样的:父母更新时更新组合框

private Client _CurrentClient= null; 
public Client CurrentClient 
{ 
    get 
    { 
     return _CurrentClient; 
    } 
    set 
    { 
     _CurrentClient= value; 
     OnPropertyChanged("CurrentClient"); 
    } 
} 

在我的XAML形式我有充分的财产CurrentClient如姓名,ADRESS等绑定到文本框。 所以,当我做的:

CurrentClient = SomeClient; 

它会自动更新我的表格的所有字段以显示新的客户。 现在我想要到一个ComboBox与客户状态ClientUI结合我状态的列表和我CurrentClient状态财产。 状态也是属性类名称键入字符串。

这里是我的组合框结合:

<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中,但不是组合框。

感谢您的帮助!

+0

'SomeClient.Status'有价值吗?另外,当你尝试'CurrentClient.Status = SomeClient.Status'而不是'CurrentClient.Status = ClientStatusList [0]'时,结果是什么? – sthotakura

+0

谢谢! 'SomeClient.Status'有一个值,但是当我做'CurrentClient.Status = SomeClient.Status'时什么都没有发生:SomeClient.Status被设置为新状态,但comboBox不更新。 – Lolrapa

+0

'ItemsSource =“{Binding ClientStatusList}”'表示在'Client'类中有一个名为'ClientStatusList'的属性。检查'ClientStatusList'有一定的价值。 – AnjumSKhan

回答

0

您的“CurrentClient”属性具有属性更改通知,但您的客户端类中的“状态”属性是否具有属性更改通知?如果不尝试将INotifyPropertyChanged接口添加到客户端类,然后将属性更改通知添加到您的状态属性。

仅仅因为你有属性改变了属性的通知并不意味着子属性也可以。由于这个原因,绑定到虚线的属性可能是有节奏的。

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

+0

谢谢你的回答! 'Client'类实现'INotifyPropertyChanged'和'Status'属性触发'OnPropertyChanged' – Lolrapa

+0

对不起,如果没有任何帮助 –