有時候你是不是也會遇到要在wpf后台給某個控件設置背景色或者給文字設置前景色的情況?
本人最近看到一個從自定義的combobox讀取系統字體和顏色的實例,該實例實現了隨字體combobox選項改變而改變字體的設置,而顏色combobox卻沒有實現,於是自己也想設置一下。結果發現顏色從前台好像不好設置成動態的,於是嘗試從后台combobox_SelectionChanged事件設置。
要設置顏色,首先要獲取顏色。獲取顏色的方式我總結了五種:
1、 Color color = Color.FromArgb(透明度, red數字, green數字, blue數字); //這四個數字范圍都是(0-255)
Color color = Color.FromRgb(red數字, green數字, blue數字);//默認透明度為255;
2、Color color = (Color)ColorConverter.ConvertFromString(“Blue”);
3、 if (e.Source is ComboBox)
{
var value = (e.Source as ComboBox).SelectedValue;
int start = value.ToString().IndexOf("Color");
string selectcolor = value.ToString().Substring(start+5);
Color color = (Color)ColorConverter.ConvertFromString(selectcolor);
textblock.Foreground = new SolidColorBrush(color);
}
4、TBlock_content.Foreground = Brushes.Blue; (對於有Brushes的時候)
這里我們着重說一下第三種,value獲取的值是:System.Windows.Media.Color 顏色名 (比如System.Windows.Media.Color Blue)。所以我們需要截取出后面的名字,然后使用(Color)ColorConverter.ConvertFromString(selectcolor) 轉換為顏色格式。注意,不能使用ColorConverter.ConvertFromString(selectcolor) as Color;提示錯誤Color必須為非Null值。
SolidColorBrush myBrush = new SolidColorBrush(System.Windows.Media.Color.FromArgb(0xFF, 0x25, 0x56, 0x87));
button.Background = (System.Windows.Media.Brush)myBrush;
轉自:http://blog.csdn.net/xingxing513234072/article/details/9016289