2017-01-25 5 views
1

私は問題の解決方法を見つけることに問題があります。つまり、領域によって異なる色でコンボボックスの各行/列を色付けするというアイデアがありましたが、手がかりやヒントや指示を見つけることができません。コンボボックスの行の色を設定しますか?

SortedList<int, string> AreaList = new SortedList<int, string>(); 
     AreaList.Add(1, "Agriculture"); 
     AreaList.Add(2, "Forestry"); 
     AreaList.Add(3, "Fruits"); 
     AreaList.Add(4, "Food"); 
     AreaList.Add(5, "Metals"); 
     AreaList.Add(6, "Mining"); 
     AreaList.Add(7, "Electricity"); 
     AreaList.Add(8, "Building Contracts"); 
     AreaList.Add(9, "Transport"); 
     AreaList.Add(10, "Alcohol"); 
     AreaList.Add(11, "Information Technologies"); 
     AreaList.Add(12, "Health And Social Services"); 
     AreaList.Add(13, "Art and Entertainement"); 
     AreaList.Add(14, "Hospitality Business"); 
     AreaList.Add(15, "Education"); 
     AreaList.Add(16, "Real Estate"); 
     AreaList.Add(17, "Sales"); 
     AreaList.Add(18, "Architecture"); 
     AreaList.Add(19, "Engineering"); 
     AreaList.Add(20, "Wholesale"); 
     AreaList.Add(21, "Other"); 

     comboBox1.ItemsSource = AreaList.ToList(); 
     comboBox1.SelectedValuePath = "Key"; 
     comboBox1.DisplayMemberPath = "Value"; 

これらの各項目別のウィンドウで自分の色を持っていますが、私はそれらを表示したいと思います:アプリは、これは私がコードから埋める私のXAMLのコンボボックス、ある

<ComboBox x:Name="comboBox1" HorizontalAlignment="Left" Margin="84,70,0,0" VerticalAlignment="Top" Width="230"/> 

非常に単純ですコンボボックスの色、 "農業"の行/列の背景などは緑色でなければなりません。 解決策はありますか、それともやり直す必要がありますか?

答えて

0

<ComboBox x:Name="comboBox1"> 
    <ComboBox.ItemContainerStyle> 
     <Style TargetType="ComboBoxItem"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Value}" Value="Agriculture"> 
        <Setter Property="Background" Value="Green" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Value}" Value="Forestry"> 
        <Setter Property="Background" Value="Red" /> 
       </DataTrigger> 
       <!-- and so on--> 
      </Style.Triggers> 
     </Style> 
    </ComboBox.ItemContainerStyle> 
</ComboBox> 

012 WPFのコンボボックスの背景色を変更する

https://blog.magnusmontin.net/2014/04/30/changing-the-background-colour-of-a-combobox-in-wpf-on-windows-8/

+0

は実際に、これは、それは、このためにTNXたくさんあり、私はまだWPFを学んだ、と私はコードで私の方法を見つけることができますが、XAMLはまだあります忍耐のためのミステリー、tnx: – MicroDev

+0

ああ、ちょうど私の心を越えて、将来の参考のために、例えば、農業の柱、緑の緑、正方形の終わりに正方形のように追加することは可能ですか?あなたは質問が愚かなxDであれば答える必要はありません – MicroDev

0

あなたは色にマップ値ごとにDataTriggerでItemContainerStyleを使用することができますが、ItemContainerStyleとコンバーター

の使用
public class StringToColorConverter : IValueConverter 
    { 
     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      if (((KeyValuePair<int, string>)value).Value.ToString() == "Agriculture") 
       return Brushes.Green; 
      //and so on or other ways to get the color 
      return Brushes.Transparent; 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 
    } 

を作ることができますし、次のようにXAMLが行く、

<Window.Resources> 
     <local:StringToColorConverter x:Key="StringToColorConverter"/> 
    </Window.Resources> 
    <Grid > 
     <ComboBox x:Name="comboBox1" HorizontalAlignment="Left" Margin="84,70,0,0" VerticalAlignment="Top" Width="230"> 
      <ComboBox.ItemContainerStyle> 
       <Style TargetType="ComboBoxItem"> 
        <Setter Property="Background" Value="{Binding Converter={StaticResource StringToColorConverter}}"> 

        </Setter> 
       </Style> 
      </ComboBox.ItemContainerStyle> 
     </ComboBox> 
    </Grid> 
関連する問題