Как я могу получить список всех цветов, которые я могу выбрать в Visual Studio Designer (это System.Windows.Media.Colors
, но это не коллекция) и поместить их в мой собственный ComboBox
с использованием разметки WPF и XAML?Как я могу перечислить цвета в WPF с помощью XAML?
ответ
Вот чистый раствор XAML.
В вашем разделе ресурсов, вы бы использовать это:
<!-- 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>
Или, как CodeNaked points out, она может быть сведена к одному тегу:
<ObjectDataProvider
ObjectInstance="{x:Type Colors}"
MethodName="GetProperties"
x:Key="colorPropertiesOdp" />
И тогда выпадающий будет выглядеть следующим образом:
<ComboBox Name="comboBox1"
ItemsSource="{Binding Source={StaticResource colorPropertiesOdp}}"
DisplayMemberPath="Name"
SelectedValuePath="Name" />
@casperOne - Ваше решение можно свести к одной строке: '< ObjectDataProvider ObjectInstance = "{x: Тип Цвета}" MethodName = "GetProperties" x: Ключ = "colorPropertiesOdp" /> '. Этот ответ довольно старый, поэтому, возможно, он не работал в то время. Но я тестировал проект .NET 3.0, 3.5 и 4.0, и он работал каждый раз. – CodeNaked
Вот что я сделал в прошлом приложение ASP.net:
// 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 color
System.Drawing.Color selectedColor =
System.Drawing.Color.FromName(ddlColor.SelectedValue);
Описание: Отличный ItemTemplate для использования в combobox с использованием 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>
Вот как это делается в коде с использованием отражения. Ниже будет сбрасывать все предопределенный WPF названия цветов для вывода:
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);
}
И поставить их в выпадающем списке, вы можете просто изменить последнюю строку на:
_comboBox.Items.Add(colorsTypePropertyInfo.Name);
- 1. Как я могу перечислить все страницы XAML в сборке?
- 2. Как я могу получить ifdefs в XAML
- 3. WPF UserControl с помощью XAML
- 4. WPF: Как скрыть GridViewColumn с помощью XAML?
- 5. Как читать XAML (WPF) с помощью Java?
- 6. Как я могу перечислить XDocument?
- 7. Как я могу локализовать ресурс с помощью расширения локализации WPF?
- 8. Как я могу перебирать цвета?
- 9. Как я могу перечислить числа?
- 10. Как я могу перечислить радиоустройства/устройства Bluetooth с помощью Delphi?
- 11. Как я могу перечислить доступные устройства ввода с помощью haxe?
- 12. Как я могу перечислить все правила postgres с помощью SQL?
- 13. Как я могу перечислить атрибуты свойства с помощью rtti?
- 14. Как я могу перечислить все тесты с помощью `mix test`
- 15. Как я могу объединить несколько файлов XAML с помощью C# в WPF?
- 16. Как изменить значение XAML с помощью C#?
- 17. Как я могу перевернуть TextBox в xaml?
- 18. Как я могу в целом перечислить перечисление?
- 19. WPF XAML Изменение цвета нескольких эллипсов с привязкой данных
- 20. Как я могу получить падение врезки тень с помощью WPF XAML
- 21. В WPF XAML как я могу конкатенировать 2 константы, поэтому я могу использовать заранее определенные пути?
- 22. Как я могу перечислить список в эликсире?
- 23. Как я могу перечислить radioobuttonlist в .NET?
- 24. Как я могу перечислить отмену в латекс?
- 25. Могу ли я получить строго типизированные привязки в WPF/XAML?
- 26. Как я могу обращаться с кнопкой Нажмите в XAML?
- 27. WPF: Показать новое окно с помощью XAML
- 28. Как установить значение с помощью xaml только в привязке WPF?
- 29. Как перечислить все цвета в JavaFX
- 30. Могу ли я перечислить каталог с помощью Javascript/JQuery?
Подобно предложению CasperOne, вот это путь сделать все это в XAML, с приятным отображением всего в WrapPanel. http://stuff.seans.com/2011/02/14/creating-a-listbox-that-shows-all-predefined-wpf-colors/ –