我想使用C#在metro应用程序中为组合框添加颜色列表。反过来,用户可以从列表中选择特定颜色来更改背景。
可用的库是Windows.UI.Colors
以下链接指向简单的桌面应用:http://www.c-sharpcorner.com/uploadfile/mahesh/how-to-load-all-colors-in-a-combobox-using-C-Sharp/
但我无法将其移植到地铁环境。
此外,颜色名称以及颜色本身作为列表项目将是一个巨大的优势。
请尽快帮助... 来自MSDN的另一个帖子: http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/880a3b5b-e287-4cdc-a1ab-d1cd4a19aedb/
答案 0 :(得分:3)
此代码适用于我:
var colorsTypeInfo = typeof(Colors).GetTypeInfo();
var properties = colorsTypeInfo.DeclaredProperties;
Dictionary<string, string> colours = new Dictionary<string, string>();
foreach (var dp in properties)
{
colours.Add(dp.Name, dp.GetValue(typeof(Colors)).ToString());
}
请确保您添加了以下参考,否则无法使用
using System.Reflection;
using Windows.UI;
答案 1 :(得分:2)
<ComboBox x:Name="cbColorNames" Grid.Row="1" Height="40"
ItemsSource="{Binding Colors}"
SelectedItem="{Binding SelectedColorName, Mode=TwoWay}">
<ComboBox.ItemTemplate>
<DataTemplate>
<Grid Background="Black">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Rectangle Width="35" Height="20" Fill="{Binding Name}" Margin="5,0"/>
<TextBlock Grid.Column="1" Margin="10,0,0,0" Text="{Binding Name}" Foreground="White"/>
</Grid>
</DataTemplate>
</ComboBox.ItemTemplate>
这是xaml文件。
private static void LoadColors()
{
var t = typeof(Colors);
var ti = t.GetTypeInfo();
var dp = ti.DeclaredProperties;
colors = new List<PropertyInfo>();
foreach (var item in dp)
{
colors.Add(item);
}
}
private static List<PropertyInfo> colors;
public List<PropertyInfo> Colors
{
get
{
if (colors == null)
LoadColors();
return colors;
}
}
这是C#代码。
感谢大家的支持与支持帮助