2017-05-25 74 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