我正在使用 WPF,并且在我的视图中有一个组合框。我的要求是在组合框中显示一个名称列表(范围从 0 到 n 个元素)和一个可本地化的字符串“虚拟名称”。所以我从两个不同的来源获取组合框的 ItemsSource,一个名为“names”的字符串列表 + 一个本地化字符串“Dummy Name”。这一切都很好。所有元素都按应有的方式显示。这是我在 WPF 中的定义:
<CollectionViewSource Key="NamesSource" Source="{Binding Context.Data.Names}" />
<ComboBox HorizontalAlignment="Stretch" VerticalAlignment="Top" SelectedItem="{Binding Person.LastName}">
<ComboBox.ItemsSource>
<CompositeCollection>
<ComboBoxItem Content="{Static res:Labels.DummyName_Combobox_Selection}"/>
<CollectionContainer Collection="{Binding Source={StaticResource NamesSource}}" />
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
CollectionViewSource 是资源字典的一部分,我只是将其省略了。问题出在 ComboBoxItem 元素上。
当它在组合框中被选中时,它会将字符串“Combobox: Dummy Name”分配给 Person.LastName,而不是“Dummy Name”。
将 Combobox 的 SelectedMemberPath 属性设置为“Content”也不起作用(我猜是因为 Names 中的字符串没有 Content 属性)。
当在组合框中选择“虚拟名称”而不是“组合框:虚拟名称”时,如何将“虚拟名称”分配给 Person.LastName?