Вы можете привязать данные к System.Drawing.Color
, используя преобразователь значений. Это работает в моей тестовой среде.
public class SystemDrawingColorConverter : IValueConverter
{
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
System.Windows.Media.Color color = (System.Windows.Media.Color)value;
return System.Drawing.Color.FromArgb(color.A, color.R, color.G, color.B);
}
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
System.Drawing.Color color = (System.Drawing.Color)value;
return System.Windows.Media.Color.FromArgb(color.A, color.R, color.G, color.B);
}
}
XAML:
<Grid>
<Grid.Resources>
<local:SystemDrawingColorConverter x:Key="converter" />
</Grid.Resources>
<Grid.DataContext>
<local:VM />
</Grid.DataContext>
<tk:ColorPicker SelectedColor="{Binding Color, Converter={StaticResource converter}}" />
</Grid>
код для модели тестового просмотра:
public class VM
{
private System.Drawing.Color _color;
public System.Drawing.Color Color
{
get { return _color; }
set { _color = value; }
}
}