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

<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.cs中,以便能够将选择器中的选定颜色放置在矩形中。

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。


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


  知道的是:我的项目是使用.NET 4.6.1的C#编码的。
  c# - 从WPF ColorPicker到矩形画笔的颜色?-LMLPHP


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

最佳答案

您可以这样处理SelectedColorChangeColorPicker事件:

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


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

08-07 17:39