Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何创建多选颜色列表_C#_Windows Phone 7_Xaml - Fatal编程技术网

C# 如何创建多选颜色列表

C# 如何创建多选颜色列表,c#,windows-phone-7,xaml,C#,Windows Phone 7,Xaml,我一直试图用WP7.1中支持的颜色填充multiselectlist,但在代码隐藏中生成这些颜色的列表时遇到问题。到目前为止,我的解决方案如下: ColorListPage.xaml <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"> <toolkit:MultiselectList x:Name="ColorList" ItemsSource="{Binding}" Height="88"

我一直试图用WP7.1中支持的颜色填充multiselectlist,但在代码隐藏中生成这些颜色的列表时遇到问题。到目前为止,我的解决方案如下:

ColorListPage.xaml

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <toolkit:MultiselectList x:Name="ColorList" ItemsSource="{Binding}" Height="88" HorizontalAlignment="Left" VerticalAlignment="Top" >                
            <DataTemplate>
                <StackPanel Orientation="Horizontal" Margin="16,21,0,20">
                    <Rectangle Fill="{Binding}" Width="50" Height="50"/>
                    <TextBlock Text="{Binding}" Margin="12,10,0,0"/>
                </StackPanel>
            </DataTemplate>                
        </toolkit:MultiselectList>


我正在尝试数据绑定到矩形和textblock属性,这样矩形将填充solidcolorbrush值,textblock将包含相应solidcolorbrush的名称。这就是我被困住的地方,因为我不知道如何实现这一点?具体地说,我不想调用强调颜色,但所有可用的颜色选项(例如,在设置矩形填充时,会看到一个巨大的选项列表)。

您想要多选列表还是列表选择器?您希望用户能够选择多种颜色吗?下面是一个使用ListPicker的示例。要获得颜色,您必须自己创建颜色。下面是一个使用强调色的示例

ListPicker的xaml:

        <toolkit:ListPicker x:Name="ColorPicker" ExpansionMode="FullScreenOnly"
                            FullModeHeader="COLOR"
                            Visibility="Collapsed"
                            ItemsSource="{Binding Brushes}"
                            SelectedItem="{Binding SelectedBrush, Mode=TwoWay}">
            <toolkit:ListPicker.FullModeItemTemplate>
                <DataTemplate>
                    <StackPanel Margin="0 20" Orientation="Horizontal">
                        <Rectangle Width="42" Height="42" Fill="{Binding Brush}"
                               Stroke="{StaticResource PhoneForegroundBrush}"
                               HorizontalAlignment="Left"/>
                        <TextBlock Text="{Binding Name}" Style="{StaticResource PhoneTextExtraLargeStyle}"
                                   HorizontalAlignment="Center" Margin="5,0"/>
                    </StackPanel>
                </DataTemplate>
            </toolkit:ListPicker.FullModeItemTemplate>
        </toolkit:ListPicker>

以及生成颜色集合的代码:

private IList<ColorItem> CreateBrushes()
    {
        var brushes = new List<ColorItem>
        {
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255,27,161,226)), Name = "blue" },    
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255,160,80,0)), Name = "brown" },     
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255, 51,153,51)), Name = "green" },   
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255,162,193,57)), Name = "lime" },   
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255,216,0,115)), Name = "magenta" }, 
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255,240,150,9)), Name = "mango" },   
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255,230,113,184)), Name = "pink" },  
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255,162,0,255)), Name = "purple" },  
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255,229,20,0)), Name = "red" },      
            new ColorItem { Brush = new SolidColorBrush(Color.FromArgb(255,0,171,169)), Name = "teal" },    
        };
        return brushes;
    }



public class ColorItem
{
    public SolidColorBrush Brush { get; set; }
    public string Name { get; set; }
}
private IList createBrusks()
{
var=新列表
{
new ColorItem{Brush=new SolidColorBrush(Color.FromArgb(255,27161226)),Name=“blue”},
new ColorItem{Brush=new SolidColorBrush(Color.FromArgb(255160,80,0)),Name=“brown”},
new ColorItem{Brush=new SolidColorBrush(Color.FromArgb(255,51153,51)),Name=“green”},
new ColorItem{Brush=new SolidColorBrush(Color.FromArgb(255162193,57)),Name=“lime”},
new ColorItem{Brush=new SolidColorBrush(Color.FromArgb(255216,0115)),Name=“magenta”},
new ColorItem{Brush=new SolidColorBrush(Color.FromArgb(255240150,9)),Name=“mango”},
new ColorItem{Brush=new SolidColorBrush(Color.FromArgb(25523011184)),Name=“pink”},
new ColorItem{Brush=new SolidColorBrush(Color.FromArgb(255162,0255)),Name=“purple”},
new ColorItem{Brush=new SolidColorBrush(Color.FromArgb(255229,20,0)),Name=“red”},
new ColorItem{Brush=new SolidColorBrush(Color.FromArgb(255,0171169)),Name=“teal”},
};
回刷;
}
公共类颜色项
{
公共SolidColorBrush笔刷{get;set;}
公共字符串名称{get;set;}
}
您还可以使用反射来获取颜色集合

        Type t = typeof(Colors);
        var properties = t.GetProperties();
        List<ColorItem> items = new List<ColorItem>();

        for (int i = 0; i < properties.Length; i++)
        {
            var property = properties[i];
            items.Add(new ColorItem
            {
                Name = property.Name,
                Color = new SolidColorBrush((Color)property.GetValue(null, null))
            });
        }
Type t=typeof(颜色);
var properties=t.GetProperties();
列表项=新列表();
for(int i=0;i
感谢您的回复。事实上,我希望用户使用Multiselectlist选择尽可能多的颜色。我见过将强调色绑定到列表的示例,但由于填充选项有更多的内置颜色(如白烟、米色、深色等),我想知道是否有更简单的方法将这些颜色调用到列表以绑定到Multiselectlist?除了在xaml中显式设置前景、填充或其他颜色,然后从填充的颜色选项列表中进行选择之外,我不知道如何获得这些颜色。添加了另一种解决方案,希望能有所帮助