How can I list colors in WPF with XAML ?, Wpfxaml

Source: Internet
Author: User

How can I list colors in WPF with XAML ?, Wpfxaml

How can I get list of all colors I can pick in Visual Studio Designer (which isSystem.Windows.Media.Colors, But that isn't a collection) and put them into my ownComboBoxUsing WPF and XAML markup?

Link: http://stackoverflow.com/questions/562682/how-can-i-list-colors-in-wpf-with-xaml

Here is the pure XAML solution.

In your resources section, you wocould use this:

<!-- Make sure this namespace is declared so that it's in scope below -->.. xmlns:sys="clr-namespace:System;assembly=mscorlib" ..<ObjectDataProvider MethodName="GetType"     ObjectType="{x:Type sys:Type}" x:Key="colorsTypeOdp">    <ObjectDataProvider.MethodParameters>        <sys:String>System.Windows.Media.Colors, PresentationCore,            Version=3.0.0.0, Culture=neutral,             PublicKeyToken=31bf3856ad364e35</sys:String>    </ObjectDataProvider.MethodParameters></ObjectDataProvider><ObjectDataProvider ObjectInstance="{StaticResource colorsTypeOdp}"      MethodName="GetProperties" x:Key="colorPropertiesOdp"></ObjectDataProvider>

Or, as CodeNaked points out, it can be switched to one tag:

<ObjectDataProvider     ObjectInstance="{x:Type Colors}"     MethodName="GetProperties"     x:Key="colorPropertiesOdp" />

And then the combobox wowould look like this:

<ComboBox Name="comboBox1"     ItemsSource="{Binding Source={StaticResource colorPropertiesOdp}}"    DisplayMemberPath="Name"    SelectedValuePath="Name" />

Here is a great ItemTemplate to use for a combobox using casperOne's code:

<ComboBox Name="cboColors"          ItemsSource="{Binding Source={StaticResource colorPropertiesOdp}}"          SelectedValuePath="Name">     <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>

Here is what I have done in a past ASP.net app:

// populate colors drop down (will work with other kinds of list controls)Type colors = typeof(System.Drawing.Color);PropertyInfo[] colorInfo = colors.GetProperties(BindingFlags.Public |    BindingFlags.Static);foreach ( PropertyInfo info in colorInfo){    ddlColor.Items.Add(info.Name);                }// Get the selected colorSystem.Drawing.Color selectedColor =     System.Drawing.Color.FromName(ddlColor.SelectedValue);

Here's how to do it in code using reflection. The following will dump all predefined WPF color names to Output:

using System.Reflection;void ListAllColors(){    Type colorsType = typeof(System.Windows.Media.Colors);    PropertyInfo[] colorsTypePropertyInfos = colorsType.GetProperties(BindingFlags.Public | BindingFlags.Static);    foreach (PropertyInfo colorsTypePropertyInfo in colorsTypePropertyInfos)        Debug.WriteLine(colorsTypePropertyInfo.Name);}

And to put them in a combobox, you cocould simply change the last line:

_comboBox.Items.Add(colorsTypePropertyInfo.Name); 
 

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.