0

私はWPFが初めてです。SQL Serverのビュー () からの ItemSource (StackPanel のスタイルで設定) を持つ複数のコンボボックスを含む StackPanel がありCaSupplierColumnsます (Visual Studio はordersDataSet、データ ソース パネルからドラッグしたリンクを自動的に作成しました)。これで問題ありません。

CompositeCollectionコンボボックス ( ) の 1 つにカスタム値を追加するために使用すると問題が発生しManufacturer、すべての値が正しく表示され、追加された項目も表示されますが、空白です。追加されたアイテムは、コンボボックスに空白のオプションとして表示されます。

私が発見した原因は、(データベース ビューの列ヘッダーの名前) に設定されていることです。このコンボ ボックスのDisplayMemberPathをnull に設定すると、追加された項目は実際には正しく表示されますが、コンボ ボックスの他の値は.ColumnsDisplayMemberPathSystem.Data.DataRowView

DisplayMemberPath1 つの 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>
4

1 に答える 1