Jak mogę uzyskać listę wszystkich kolorów, które mogę wybrać w Visual Studio Designer (który jest System.Windows.Media.Colors
, ale to nie jest kolekcja) i umieścić je w moim własnym ComboBox
przy użyciu znaczników WPF i XAML?Jak mogę wyświetlić kolory w WPF z XAML?
Odpowiedz
Oto czysty roztwór XAML.
W sekcji zasobów, należy użyć tego:
<!-- 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>
Albo, jak CodeNaked points out, może być zmniejszona do jednego tagu:
<ObjectDataProvider
ObjectInstance="{x:Type Colors}"
MethodName="GetProperties"
x:Key="colorPropertiesOdp" />
A potem combobox będzie wyglądać następująco:
<ComboBox Name="comboBox1"
ItemsSource="{Binding Source={StaticResource colorPropertiesOdp}}"
DisplayMemberPath="Name"
SelectedValuePath="Name" />
@casperOne - Twoje rozwiązanie może być skondensowane do jednej linii: '< ObjectDataProvider ObjectInstance = "{x: Wpisz kolory}" MethodName = "GetProperties" x: Key = "colorPropertiesOdp" /> '. Ta odpowiedź jest dość stara, więc może nie działała w tym czasie. Ale testowałem z projektem .NET 3.0, 3.5 i 4.0 i działało to za każdym razem. – CodeNaked
Oto co zrobiłem w przeszłości aplikacji 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);
Oto świetny ItemTemplate do użycia w combobox przy użyciu 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>
Oto jak to zrobić w kodzie za pomocą odbicia. Poniższa zrzuci wszystkie predefiniowanych nazw kolorów WPF do wyjścia:
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);
}
I umieścić je w combobox, można po prostu zmienić ostatni wiersz do:
_comboBox.Items.Add(colorsTypePropertyInfo.Name);
- 1. WPF: moc w XAML
- 2. Nie mogę powiązać danych z lokalną zmienną w WPF/XAML
- 3. Jak wyświetlić kolory git na Zsh?
- 4. WPF stylizacji Kolory
- 5. Czy mogę filtrować kolekcję z xaml?
- 6. Jak zadeklarować przestrzeń nazw w WPF XAML?
- 7. Jak mogę używać typów enum w XAML?
- 8. Jak wypełnić wpf combobox w xaml
- 9. Rozmyty Adorner WPF Xaml
- 10. WPF XAML WrapPanel ListBox z rzędu
- 11. Inny kolor z każdej strony w granicy w WPF XAML?
- 12. StringFormat w XAML, WPF: Formatowanie walut
- 13. UWP xaml: Jak wyświetlić przycisk z ikoną i tekstem?
- 14. WPF Obracanie animacji prostokątnej w XAML
- 15. Jak mogę porównać kolory w java?
- 16. WPF Wiązanie do tablicy wielowymiarowej w Xaml
- 17. Jak używać stylów z oddzielnych plików xaml
- 18. Gdzie mogę znaleźć szablony XAML dla DataGrid WPF?
- 19. Jak używać stringformat w multibinding w WPF XAML
- 20. Używanie grafiki wektorowej XAML w aplikacji WPF
- 21. Kolory systemu WPF: kolor ramki TextBox
- 22. Jak mogę serializować xaml "Pędzel"?
- 23. Dobre porady dotyczące dostępności w WPF/XAML?
- 24. Jak wyświetlić ikonę pliku Windows w WPF?
- 25. Jak mogę replikować "float: right" w XAML?
- 26. Nie mogę znaleźć DoubleClick w XAML
- 27. Jak mogę zlokalizować ciągi znaków w plikach Xaml dla WPFLocalizationExtension
- 28. Zastępowanie Przycisk w XAML WPF z ControlTemplate nie wyświetla zawartości
- 29. Format ciągu daty WPF w XAML
- 30. WPF: Ustawianie DataContext UserControl z Binding nie działa w XAML
podobne do sugestii CasperOne, oto jest droga zrobić to wszystko w XAML, z ładnym wyświetlaniem wszystkiego w WrapPanel. http://stuff.seans.com/2011/02/14/creating-a-listbox-that-shows-all-predefined-wpf-colors/ –