2017-05-25 68 views
1

我有一个Rectangle属性,并以我colorprotype.xaml从WPF ColorPicker到矩形画笔的颜色?

<Rectangle Name="rect_NewSelect" Grid.Row="0" Style="{DynamicResource ColorInfoRectangle}" Width="60"/> 

而且

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

所以我把“的MouseDown”事件中我在ColorPicker的colorprotype.xaml.csColorPickerExtended WPF Toolkit能够把从矩形中的拾取器中选择颜色。

private void ColorPickerColor_MouseDown(object sender, MouseButtonEventArgs e) 
    { 
     if (rect_NewSelect == null) return; 
     rect_NewSelect.Fill = ClrPcker_Background.SelectedColor; 

    } 

但将这个之后,就会发生错误,并告诉我:

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

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

知道:我的项目是用C#.NET 4.6.1编码的。 enter image description here

从图像:颜色拾取=红色组合框和矩形=蓝

回答

1

你可以处理SelectedColorChange事件ColorPicker这样的:

<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); 
} 

你应该访问SelectedColor属性的Value属性来获取实际Color对象是选择。

+0

你是我所有的救世主问题!谢谢 – FWin

2

您可以创建一个新的画笔从采摘的颜色。 SolidColorBrush类具有接受颜色类型的构造函数。

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

返回错误“System.Windows.Media.Color不可能转换” “到”System.Windows.Media.Color“ – FWin

+0

然后尝试rect_NewSelect.Fill =新的SolidColorBrush((Color)ClrPcker_Background.SelectedColor); – Mishka

+0

这次它可以工作,但矩形不显示颜色 – FWin