7

私は周りを見回して、いくつかのことを見つけましたが、ドロップダウン領域に2つの列が表示されたコンボボックスに固執しました. 利用可能なxamlテーマがあり、コンボボックスの「スタイル」が定義されており、期待どおりにうまく機能するので、その部分は問題ありません。

これで、2 つの値を表示する必要があるコンボボックスができました。これは、アイテムの DataTable.DefaultView バインディング ソースから取得した、ドロップダウンの State Abbreviation と State Name と考えてください。

私が持っている場合

<my:cboStates TextSearch.TextPath="StateAbbrev">
  <ComboBox.ItemTemplate>
    <DataTemplate>
      <StackPanel Orientation="Horizontal" TextSearch.Text="{Binding Path=StateAbbrev}">
        <TextBlock Text="{Binding Path=StateAbbrev}"/>
        <TextBlock Text="{Binding Path=FullStateName}" Margin="10 0"/>
      </StackPanel>
    </DataTemplate>
  </ComboBox.ItemTemplate>
</my:cboStates>

これは機能します。さて、どのように/どこで立ち往生しています...今、私はこの同じ機能を5つの異なるフォームとすべてに同じコンテンツを表示させ、変更された場合(これではなく、他の複数列コンボボックスの場合)、これをフォームの XAML ファイルに直接入れ続ける必要はありません。

テーマのリソース ディクショナリ ファイルに入れて、その「スタイル」を何度も再利用したいと考えていました。理にかなっています。ただし、バインディングがデータテーブルにある場合、スタイルとして実行しようとしたときに得られる唯一の結果は、ドロップダウンに次の値が表示されることです

System.Data.DataRowView
System.Data.DataRowView
System.Data.DataRowView
System.Data.DataRowView

実際の 2 列の代わりに。「テーマ」リソース ディクショナリにあるものを次に示します。

<DataTemplate x:Key="myStateComboTemplate" >
  <StackPanel Orientation="Horizontal"  >
    <TextBlock Text="{Binding Path=StateAbbrev}"/>
    <TextBlock Text="{Binding Path=FullStateName}"/>
  </StackPanel>
</DataTemplate>

<Style x:Key="StyleMyStatesCombobox" TargetType="{x:Type ComboBox}" 
  BasedOn="{StaticResource MyOtherWorkingComboBoxStyle}" >
  <Setter Property="TextSearch.TextPath" Value="{Binding Path=StateAbbrev}" />
  <Setter Property="ItemTemplate" Value="{StaticResource myStateComboTemplate}" />
</Style>

したがって、フォーム上に作成された「cboStates」クラスの 2 つのインスタンスがあり、1 つを最初にリストされた明示的なスタイリングに設定し、2 つ目を「スタイル」設定に基づいて設定すると、2 つ目は繰り返される System.Data のみを表示することによって失敗します。 .DataRowView エントリであり、実際のデータ コンテンツではありません。

何が欠けていますか。

だから、私が探しているものを明確にするために...状態... ex data

AL Alabama
AK Alaska
AZ Arizona
AR Arkansas
CA California
CO Colorado
CT Connecticut
DE Delaware

コンボボックスに省略された AL、AK、A​​Z などと、より狭いコンボボックスを表示したい。これは、返されたときに「SelectedValue」にもなります。

実際のドロップダウンは、状態の略語と詳細な説明の両方を示す上記のデータを表示します。

目的のコンボボックスのサンプル

ここに画像の説明を入力

4

1 に答える 1