Я новичок в WPF. У меня есть StackPanel, который содержит несколько comboboxes с ItemSource (установленный в стиле StackPanel) из представления (CaSupplierColumns
) в SQL Server (Visual Studio автоматически создала ссылку, которую я перетащил ordersDataSet
с панели источника данных). Нет проблем с этим.Несколько DisplayMemberPaths в CompositeCollection?
Проблема возникает, когда я использую CompositeCollection
, чтобы добавить пользовательское значение в одно из списков (Manufacturer
), все значения отображаются правильно, а добавленный элемент тоже отображается - но пустой. Добавленный элемент отображается как пустой параметр в поле со списком.
Виновника я обнаружил это DisplayMemberPath
набора для Columns
(который является именем заголовка столбца в представлении базы данных), когда я установил DisplayMemberPath
обнулить для этого выпадающего списка, добавленный элемент появляется действительно правильно, но другие значения в поле со списком отображается как System.Data.DataRowView
.
Как я могу использовать два разных DisplayMemberPath
s в одном CompositeCollection? Или, может быть, есть другой способ сделать это?
Вот мой текущий XAML (раздели, чтобы оставить ключевые части):
<Window.Resources>
<local:OrdersDataSet x:Key="ordersDataSet" />
<CollectionViewSource x:Key="caSupplierColumnsViewSource" Source="{Binding CaSupplierColumns, Source={StaticResource ordersDataSet}}" />
</Window.Resources>
<StackPanel Name="MapFields" DataContext="{StaticResource caSupplierColumnsViewSource}">
<StackPanel.Resources>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding}" />
<Setter Property="DisplayMemberPath" Value="Columns" />
<Setter Property="SelectedValuePath" Value="Columns" />
<Setter Property="IsSynchronizedWithCurrentItem" Value="False" />
</Style>
</StackPanel.Resources>
...
<ComboBox Name="MfrPartNo" />
...
<ComboBox Name="Manufacturer">
<ComboBox.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{Binding Source={StaticResource ResourceKey=caSupplierColumnsViewSource}}" />
<ListBoxItem>Another option</ListBoxItem>
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
</StackPanel>
Вы хотите показать фиксированный текст как «Пожалуйста, выберите ...» перед списком предметов? – AnjumSKhan