2015-03-25 38 views
-1

我有一個應用程序,用戶希望我根據他定義的某些狀態對錶中的某些行着色。 目前,他選擇了5種顏色顏色的「選定」版本是什麼

  • 紅色
  • 綠色
  • 藍色
  • 黃色
  • 棕色

但列表可以擴大我猜。 我正在使用cellstyle來應用此顏色,並且此作品爲 但我希望用戶能夠在使用另一種顏色直觀地屬於基本顏色時選擇一行時看到差異。 因此,2行具有相同的狀態稱爲紅色,但其中一個被選中,則所選行應該具有「被選中紅色」的顏色。 我該怎麼做? 增加10個單位與R G和B?有沒有某種標準? 如何從紅色中選擇「紅色」,以便我可以將該概念應用於任何顏色。

+0

我們有類似的情況,我們周圍有一個藍色怪異的彩色邊框...改變顏色可能會混淆最終用戶這是什麼東西的全新顏色! – Muds 2015-03-25 12:34:34

+0

我不認爲有一個「選定」版本的顏色。那裏有很多色輪。 color.adobe.com是一個很好的。很難在顏色上有很多的對比,但仍然有文字脫穎而出。 – Paparazzi 2015-03-25 13:01:10

+0

Windows中有一個「標準」選擇顏色,它取決於當前選擇的UI主題。您可以將這種選擇顏色疊加在您的顏色上,並應用一些透明度。 – dymanoid 2015-03-25 13:01:40

回答

0

您保留三個RGB中的一個,然後更改其他兩個並保持比例相同。實際上,移動另外兩個移動的距離並不是一定的。你必須選擇哪一個。我認爲使用色輪挑選顏色更容易。

0

什麼是這樣的: 我已經得到了國家類的顏色信息和模型類,其中有國家信息:

public class State 
{ 
    public int ID { get; set; } 
    public System.Drawing.Color Color { get; set; } 

    public State(int id, Color color) 
    { 
     ID = id; 
     Color = color; 
    } 

    public override string ToString() 
    { 
     return ID.ToString(); 
    } 
} 
public class Model 
{ 
    public string Name { get; set; } 
    public State State { get; set; } 

    public Model(string name, State state) 
    { 
     Name = name; 
     State = state; 
    } 
} 

在視圖模型:

public MainViewModel() 
    { 
     Items = new List<Model>() { 
      new Model("item1", new State(1, Color.Red)), 
      new Model("item2", new State(1, Color.Red)), 
      new Model("item3", new State(2, Color.Green)) 
     }; 
    } 

和看法:

<Window.Resources> 
    <local:StateToColorConverter x:Key="StateToColorConverter"/> 
    <local:SelectedColorConverter x:Key="SelectedColorConverter"/> 

    <Style TargetType="DataGridCell"> 
     <Setter Property="Background" Value="{Binding State.Color, Converter={StaticResource StateToColorConverter}}"/> 

     <Style.Triggers> 
      <Trigger Property="IsSelected" Value="True"> 
       <Setter Property="Background" Value="{Binding State.Color,Converter={StaticResource SelectedColorConverter}}"/> 
      </Trigger> 
     </Style.Triggers> 
    </Style> 
</Window.Resources> 
<Grid> 
    <DataGrid ItemsSource="{Binding Items}"/> 
</Grid> 

最後轉換器: StateToC的olor:

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     var color = (System.Drawing.Color)value; 
     return new SolidColorBrush(System.Windows.Media.Color.FromArgb(color.A, color.R, color.G, color.B)); 
    } 

SelectedColor:

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     var newColor = ControlPaint.Light((System.Drawing.Color)value); 
     return new SolidColorBrush(System.Windows.Media.Color.FromArgb(newColor.A, newColor.R, newColor.G, newColor.B)); 
    } 

它使選擇顏色較淺基於顏色具有國家。