我的组合框的下拉列表 (itemssource) 包含新产品请求项目。我想绑定到不在下拉列表中的旧数据。为了使事情复杂化,我使用多重绑定和 IMultiValueConverter 来组合显示字段。此外,绑定字段的名称与我绑定的属性名称不匹配。
组合框 itemssource 是 NewProductRequests 的列表。从此 NPR 对象中,NewProdNumber 和 NewProdName 组合在一起,以便由我的类型转换器显示在下拉列表中。ConvertBack 方法返回值 NewProdNumber 和 NewProdNumberCombinedWithName。这两个值将保存到名称略有不同的数据库字段中。对于本示例,我将它们称为 DBProdRequestNumber 和 DBProdRequestTitle。
我已成功显示和保存新项目。问题是我还没有弄清楚如何显示不在列表中的旧数据。它不在列表中,因为它不再符合新产品请求的条件。
这是 XAML 的问题(itemssource 在代码隐藏中设置):
<ComboBox x:Name="NPRComboBox" IsSynchronizedWithCurrentItem="False" IsEditable="False">
<ComboBox.SelectedItem>
<MultiBinding Converter="{StaticResource combineNPRStuffMultiConverter}">
<Binding Path="DBProdRequestNumber" UpdateSourceTrigger="PropertyChanged"/>
<Binding Path="DBProdRequestTitle" UpdateSourceTrigger="PropertyChanged"/>
</MultiBinding>
</ComboBox.SelectedItem>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock DataContext="{Binding}">
<TextBlock.Text>
<MultiBinding Converter="{StaticResource combineNPRStuffMultiConverter}">
<Binding Path="NewProdNumber" UpdateSourceTrigger="PropertyChanged"/>
<Binding Path="NewProdNumberCombinedWithName" UpdateSourceTrigger="PropertyChanged"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
我使用基于来自 Julie Lerman的MSDN Magazine 示例的 DataGridTemplateColumn.CellEditingTemplate 解决了与数据网格和组合框类似的问题。当然,在这种情况下,我没有使用数据网格。
提前感谢您的帮助。