2012-05-09 12 views
0

私はこのWebサイトで提供されているすべての回答を見て問題を解決しましたが、解決策を見つけることができませんでした。ComboBoxの背景とフォアグラウンドを項目選択後に変更します

ItemsSourceプロパティを使用してクラスにバインドされたコンボボックスがあります。次のように

クラス定義は次のとおりです。

public class DataSource 
{ 
    public string DisplayField { get; set; } 
    public string ValueField { get; set; } 
} 

コンボボックスは、これは、背後にあるコードで行われ... DisplayMemberPath =「DisplayField」とSelectedValuePath =「ValueField」を使用してデータを表示するためにバインドされていますウィンドウロード時に読み込まれます。

次のようにコンボボックスが定義されています

<ComboBox Grid.Row="0" Grid.Column="1" Margin="5 5 5 0" Name="releaseHoldDropDown" Width="100"/> 

私は「リリース」への変更、ドロップダウンの値ならば白に緑と前景に背景を変更する方法が必要です。

また、ドロップダウンの値が「ホールド」に変更された場合は、背景を赤に、前景を白に変更する必要があります。

FYI:私はExpressionLight.xamlテーマを使用してアプリケーション全体のスタイルを設定しています。

私はまた、すべての私のコンボボックスの背景をグレーから白に変えて読みやすくする方法も欲しいと思います。 ExpressionLight.xamlを変更する必要がありますが、変更を加えるためにどの部分を編集するのか分かりません。

ヘルプはお寄せいただきありがとうございます。あなただけが私を与えることができれば、私はあなたを助けることができる前景色ではなく(白のまま)背景色を変更したいので、releaseHoldDropDown_SelectionChangedイベントに

private void releaseHoldDropDown_SelectionChanged(object sender, FooBar e) 
{ 
    releaseHoldDropDown.ForeGround = new SolidColorBrush(Colors.White); 

    DataSource ds = (DataSource)releaseHoldDropDown.SelectedItem; 

    if (ds.DisplayField == "Release") 
     releaseHoldDropDown.Background = new SolidColorBrush(Colors.Green); 
    else if(ds.DisplayField == "Hold") 
     releaseHoldDropDown.Background = new SolidColorBrush(Colors.Red); 
} 

とバディを使用しているので

はあなたに

答えて

0

なぜstyle.triggerを使わないのですか?

 <ComboBox.Style> 
      <Style TargetType="ComboBox"> 
       <Setter Property="Background" Value="Transparent"/> 
       <Setter Property="Foreground" Value="Black"/> 
       <Style.Triggers> 
        <Trigger Property="SelectedValue" Value="Release"> 
         <Setter Property="Background" Value="Green"/> 
         <Setter Property="Foreground" Value="White"/> 
        </Trigger> 
        <Trigger Property="SelectedValue" Value="Hold"> 
         <Setter Property="Background" Value="Red"/> 
         <Setter Property="Foreground" Value="White"/> 
        </Trigger> 
       </Style.Triggers> 
      </Style> 
     </ComboBox.Style> 

これはあなた

+0

私はそれを試してみます。 – SamN

+0

私はあなたのソリューションを試しましたが、うまくいきませんでした。 ComboBoxの背景は変更されませんでした。その周りに白い枠線が現れましたが、コンボボックスの背景自体は変わりませんでした。 – SamN

+0

私は白い背景値であなたのソリューションを試してみました。 私はこの表現を表現テーマの一般的なスタイルにするために何が必要なのでしょうか? – SamN

0

に感謝しますExpressionLight.xaml。それでは私だけが助けることができます

+0

私はxamlでこれを実行しようとしています。コントロールを白または透明にするには、バックグラウンドが必要です – SamN

0

の開始可能性がありますが、以下のようなテンプレートのコントロールの必要な色を変更しようとしましたか?

<ComboBox x:Name="comboBox" 
      ItemsSource="{Binding Items}" 
      Margin="0,0,0,10" 
      Background="White"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <Grid Background="White"> 
       <TextBlock Foreground="Black" Text="{Binding Name}"/> 
      </Grid>  
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 
関連する問題