学习测试了别人写的转换器,记录一下:
1、定义数据源类型:
public class ConverterViewModel
{
public IList<ColorInfo> ColorList { get; set; }
public int SelectedColor { get; set; }
public ConverterViewModel()
{
ColorList = new List<ColorInfo>()
{
new ColorInfo() {ID = 0,Name = "red"},
new ColorInfo() {ID = 1,Name = "green"},
new ColorInfo() {ID = 2,Name = "blue" }
};
SelectedColor = 0;
}
}
public class ColorInfo
{
public int ID { get; set; }
public string Name { get; set; }
}
2、定义转换器
public class ColorConverter : IValueConverter
{
public static Color[] ColorCollection = new Color[]
{
Color.FromRgb(255,0,0),
Color.FromRgb(0,255,0),
Color.FromRgb(0,0,255)
};
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
{
return new SolidColorBrush(ColorCollection[0]);
}
try
{
return new SolidColorBrush(ColorCollection[(int)value]);
}
catch (Exception)
{
return new SolidColorBrush(ColorCollection[0]);
}
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
3、XAML代码:
<ComboBox Cursor="Hand" Name="ComboBox_ColorSelect" Height="25" Width="80"
ItemsSource="{Binding ColorList}" SelectedValuePath="ID" DisplayMemberPath="Name"
SelectedValue="{Binding SelectedColor}"/>
<TextBlock Background="{Binding SelectedValue,ElementName=ComboBox_ColorSelect,Converter={StaticResource ColorConverter}}"
Height="25" Width="80"/>
4、xaml.cs代码:
public MainWindow()
{
InitializeComponent();
this.DataContext = new ConverterViewModel();
}