2016-07-13 7 views
0

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

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

犯人(データベースビューで列ヘッダーの名前です)ColumnsDisplayMemberPathセットである私は、このコンボボックスにnullにDisplayMemberPathを設定すると、追加項目が正しく実際に表示されますが、中に他の値コンボボックスはSystem.Data.DataRowViewと表示されます。

2つの異なるDisplayMemberPathを1つの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> 
+0

項目のリストの前に「Please choose ...」のような固定テキストを表示しますか? – AnjumSKhan

答えて

2

私はコレクションに様々なタイプの暗黙のDataTemplatesを作成し、そして私はあなた」は同じStackPanel.Resourcesに入れたいです暗黙のうちにComboBoxスタイルを持っています。 DisplayMemberPath属性を削除する必要があります。これは、暗黙のDataTemplatesが適用されないようにするためです。

は非常に強力な機能ではありません。あなたは変わったときにDataTemplatesに切り替えます。 ComboBoxの異種の束を投げ込むことは、WPFでできることのすばらしいことの1つですが、それでも多くの使い方をする必要があります。明らかな理由から、ここでも限定された使用になるであろう。別ウィンドウ(タブ)の大きな表示で見るSelectedItemObjectというタイプのviewmodelプロパティにバインドし、そこでセッターでいくつかの手品をしなければならないかもしれません。

関連する問題