C# 从WPF颜色选择器到矩形笔刷的颜色?

C# 从WPF颜色选择器到矩形笔刷的颜色?,c#,wpf,xaml,colors,brush,C#,Wpf,Xaml,Colors,Brush,我在我的colorprotype.xaml中有一个Rectangle属性和colorpocker来自Extended WPF Toolkit <Rectangle Name="rect_NewSelect" Grid.Row="0" Style="{DynamicResource ColorInfoRectangle}" Width="60"/> 但放了这个之后,出现了一个错误并告诉我: 无法将System.Windows.Media.Color类型转换为System.Window

我在我的
colorprotype.xaml中有一个
Rectangle
属性和
colorpocker
来自
Extended WPF Toolkit

<Rectangle Name="rect_NewSelect" Grid.Row="0" Style="{DynamicResource ColorInfoRectangle}" Width="60"/>
但放了这个之后,出现了一个错误并告诉我:

无法将System.Windows.Media.Color类型转换为System.Windows.Media.Brush

那么,如何将“颜色”转换为“画笔”?我的代码中最大的错误是什么

知道这一点:我的项目是用C#和.NET4.6.1编写的。


从图像:ColorPicker=红色组合框和Rectangle=蓝色

中,您可以根据拾取的颜色创建新笔刷。SolidColorBrush类具有接受颜色类型的构造函数

rect_NewSelect.Fill = new SolidColorBrush(ClrPcker_Background.SelectedColor);

您可以这样处理
颜色选择器的
SelectedColorChange
事件:

<xctk:ColorPicker x:Name="ClrPcker_Background" Margin="-36,-389,2,411"
                  RenderTransformOrigin="0.476,0.4" SelectedColor="Transparent"
                  SelectedColorChanged="ClrPcker_Background_SelectedColorChanged" DisplayColorAndName="True" 
                  Height="20" VerticalAlignment="Bottom"/>


private void ClrPcker\u Background\u SelectedColorChanged(对象发送方,RoutedPropertyChangedEventArgs e)
{
如果(rect_NewSelect==null | | ClrPcker|u Background==null | |!ClrPcker|u Background.SelectedColor.HasValue)
返回;
rect_NewSelect.Fill=新的SolidColorBrush(ClrPcker_Background.SelectedColor.Value);
}

您应该访问
SelectedColor
属性的
Value
属性,以获取所选的实际
Color
对象。

返回错误“无法从System.Windows.Media.Color转换”?改为“System.Windows.Media.Color”,然后尝试rect_NewSelect.Fill=new SolidColorBrush((Color)ClrPcker_Background.SelectedColor);这次它可以工作,但矩形不显示颜色您是我所有问题的救世主!谢谢
rect_NewSelect.Fill = new SolidColorBrush(ClrPcker_Background.SelectedColor);
<xctk:ColorPicker x:Name="ClrPcker_Background" Margin="-36,-389,2,411"
                  RenderTransformOrigin="0.476,0.4" SelectedColor="Transparent"
                  SelectedColorChanged="ClrPcker_Background_SelectedColorChanged" DisplayColorAndName="True" 
                  Height="20" VerticalAlignment="Bottom"/>
private void ClrPcker_Background_SelectedColorChanged(object sender, RoutedPropertyChangedEventArgs<Color?> e)
{
    if (rect_NewSelect == null || ClrPcker_Background == null || !ClrPcker_Background.SelectedColor.HasValue)
        return;

    rect_NewSelect.Fill = new SolidColorBrush(ClrPcker_Background.SelectedColor.Value);
}