2011-09-16 4 views
3

私は私のViewModelから文字列のリストにバインドされたコンボボックスを持っています。私は何をしようとしているのが私のViewModel内のプロパティがtrueの場合、ComboBoxアイテムの前景色は異なる色に設定されています:コンボボックスItemTemplateにと前景

<ComboBox x:Name="myComboBox" ItemsSource="{Binding Names}"> 
    <ComboBox.ItemTemplate> 
    <DataTemplate> 
     <TextBlock Text="{Binding ...}"> 
     <TextBlock.Style> 
      <Style TargetType="{x:Type TextBlock}"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding IsActive}" Value="True"> 
       <Setter Property="Foreground" Value="Navy"/> 
       </DataTrigger> 
      </Style.Triggers> 
      </Style> 
     </TextBlock.Style> 
     </TextBlock> 
    </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

私はへのTextBlockのテキストを結合するのかわからないです。私が望むのは、文字列のリストを表示することだけです。私はいつもアイテムを持っているドロップダウンで終わるが、目に見えない。私は、おそらく私がそこにねじ込んでいたと思って、スタイルトリガーを削除しようとしましたが、それは助けになりませんでした。

は私が右のアプローチを取っていますか? isActiveを探したりなども間違って結合されていることときComboBox.ItemTemplateが正しく(データコンテキストである)私のViewModelを見ますか?各ComboBoxItem

ため

答えて

1

DataContextのでTextBlockについて

  • は、DataTriggerについてDataContextText="{Binding}
  • に結合するが、IsActiveを見つけることができる結合

    RelativeSourceを使用する文字列であります
    <ComboBox x:Name="myComboBox" ItemsSource="{Binding Names}"> 
        <ComboBox.ItemTemplate> 
         <DataTemplate> 
          <TextBlock Text="{Binding}"> 
           <TextBlock.Style> 
            <Style TargetType="{x:Type TextBlock}"> 
             <Style.Triggers> 
              <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}, 
                      Path=DataContext.IsActive}" 
                 Value="True"> 
               <Setter Property="Foreground" Value="Navy"/> 
              </DataTrigger> 
             </Style.Triggers> 
            </Style> 
           </TextBlock.Style> 
          </TextBlock> 
         </DataTemplate> 
        </ComboBox.ItemTemplate> 
    </ComboBox> 
    
+0

ありがとうMeleak。それは役に立ちます。ただし、ドロップダウンにテキストは表示されません。私は、コンボボックスItemsSourceがバインドされている文字列のリストを表示したい場合に、テキストをバインドする対象を知りません。また、私のviewModelが、求めているcomboBoxItemに基づいてIsActiveの異なる値を返す方法がありますか?どのアイテムがレンダリングされているかを私のviewModelがどのように知るかはわかりません。 – Flack

+0

あなたの最初の質問については、私の更新された答えを見てください。 2番目の質問では、文字列とブール値を保持するクラスのリストが必要です。 –

+0

はい、私は文字列/ boolのペアを含むいくつかのクラスが必要になると感じていた。お手伝いありがとう。 – Flack

関連する問題