2012-05-01 13 views
0

私のアプリケーションでは色のリストを持つComboBoxは表示されませんが、このリストには透明色が含まれません。リスト内の色は、Colourクラスからの色でなければなりません。 私はネットで検索し、そのような何かを見つける:透明色のないComboBoxの色を一覧表示する

<ObjectDataProvider MethodName="GetType" 
ObjectType="{x:Type System:Type}" x:Key="colorsTypeOdp"> 
     <ObjectDataProvider.MethodParameters> 
      <System:String>System.Windows.Media.Colors, PresentationCore, 
     Version=3.0.0.0, Culture=neutral, 
     PublicKeyToken=31bf3856ad364e35</System:String> 
     </ObjectDataProvider.MethodParameters> 
    </ObjectDataProvider> 
    <ObjectDataProvider ObjectInstance="{StaticResource colorsTypeOdp}" 
MethodName="GetProperties" x:Key="colorPropertiesOdp"> 
    </ObjectDataProvider> 

<ComboBox Width="80" ItemsSource="{Binding Source={StaticResource colorPropertiesOdp}}"> 
         <ComboBox.ItemTemplate> 
          <DataTemplate> 
           <StackPanel Orientation="Horizontal" Height="18" Margin="0,0,0,2"> 
            <Border BorderThickness="1" CornerRadius="2" 
       BorderBrush="Black" Width="50" VerticalAlignment="Stretch" 
       Background="{Binding Name}"/> 
            <TextBlock Text="{Binding Name}" Margin="8,0,0,0"/> 
           </StackPanel> 
          </DataTemplate> 
         </ComboBox.ItemTemplate> 

        </ComboBox> 

誰でもこのtaksを行う方法を知っているの?助けてくれてありがとう。

+0

XAMLで直接的な方法はありません。ソースコードでColorsのプロパティを収集し、透明なオブジェクトを手動で削除する必要があります。結果のコレクションは、xamlからより洗練された方法でバインドできるプロパティに置くことができます。 –

答えて

0

ColorsクラスからColorインスタンスの独自のリストを作成し、このリストからColors.Transparentの色を除外することをお勧めします。次に、このリストをコンボボックスのItemsSourceプロパティにバインドできます。

ColorsクラスからColorインスタンスのリストを取得するには、次のコードスニペットを使用することができます。

PropertyInfo[] properties = typeof(Colors).GetProperties(); 

foreach (PropertyInfo property in properties) 
    Color color = property.GetValue(null, null) as Color; 
関連する問題