什麼是這樣的: 我已經得到了國家類的顏色信息和模型類,其中有國家信息:
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));
}
它使選擇顏色較淺基於顏色具有國家。
我們有類似的情況,我們周圍有一個藍色怪異的彩色邊框...改變顏色可能會混淆最終用戶這是什麼東西的全新顏色! – Muds 2015-03-25 12:34:34
我不認爲有一個「選定」版本的顏色。那裏有很多色輪。 color.adobe.com是一個很好的。很難在顏色上有很多的對比,但仍然有文字脫穎而出。 – Paparazzi 2015-03-25 13:01:10
Windows中有一個「標準」選擇顏色,它取決於當前選擇的UI主題。您可以將這種選擇顏色疊加在您的顏色上,並應用一些透明度。 – dymanoid 2015-03-25 13:01:40