我有一个实体表,列出了ISO国家代码及其描述,以便填充ComboBox。然后,我有另一张表,其中设置了一个国籍'到ComboBox的选定值。我在IsoCountryCodes和我的其他表之间没有外键约束。
我希望能够将ComboBox的SelectedItem设置为选定的IsoCountryCode,但我想将SelectedValue保存到'国籍'领域。
我已经尝试将ComboBox的SelectedItem设置为我的国籍' (字符串)字段,但它只是在IsoCountryCode上执行ToString()。当我设置'文字'字段而不是SelectedItem,它将DisplayPath值保存到'国籍'字段。
我想知道是否有办法让ValuePath值保存到没有任何外键约束的字段,同时仍向用户显示有效的DisplayPath?
IsoCountryCode表的示例:
IsoCode IsoDescription
'GBR' 'United Kingdom'
'USA' 'United States of America'
另一个表的示例:
PassengerId PassengerName PassengerNationality PassengerDocumentIssuingCountry
1 'Carter, John' 'GBR' 'USA'
我目前的Xaml:
<xctk:WatermarkComboBox x:Name="uxNationalityCmbo" Margin="0,0,5,5" Watermark="Nationality"
Grid.Row="2" ItemsSource="{Binding CountryCodeCollection}" SelectedValuePath="IsoCode" DisplayMemberPath="IsoDescription"
IsTextSearchEnabled="True" Text="{Binding SelectedPassenger.PassengerNationality, TargetNullValue=''}"/>
现在更改所选值将使USA将实体PassengerNationality更改为“United States of America”,而我需要&#39; USA&#39;
答案 0 :(得分:1)
您应该将SelectedValue
属性绑定到PassengerNationality
源属性:
<xctk:WatermarkComboBox x:Name="uxNationalityCmbo" Margin="0,0,5,5" Watermark="Nationality"
Grid.Row="2" ItemsSource="{Binding CountryCodeCollection}" SelectedValuePath="IsoCode" DisplayMemberPath="IsoDescription"
IsTextSearchEnabled="True" SelectedValue="{Binding SelectedPassenger.PassengerNationality, TargetNullValue=''}"/>