私はWPFが初めてです。SQL Serverのビュー () からの ItemSource (StackPanel のスタイルで設定) を持つ複数のコンボボックスを含む StackPanel がありCaSupplierColumns
ます (Visual Studio はordersDataSet
、データ ソース パネルからドラッグしたリンクを自動的に作成しました)。これで問題ありません。
CompositeCollection
コンボボックス ( ) の 1 つにカスタム値を追加するために使用すると問題が発生しManufacturer
、すべての値が正しく表示され、追加された項目も表示されますが、空白です。追加されたアイテムは、コンボボックスに空白のオプションとして表示されます。
私が発見した原因は、(データベース ビューの列ヘッダーの名前) に設定されていることです。このコンボ ボックスのDisplayMemberPath
をnull に設定すると、追加された項目は実際には正しく表示されますが、コンボ ボックスの他の値は.Columns
DisplayMemberPath
System.Data.DataRowView
DisplayMemberPath
1 つの CompositeCollection に2 つの異なる を含めるにはどうすればよいですか? それとも、それを行う別の方法がありますか?
これが私の現在の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>