我制作了一个字符串转换为颜色的转换器,并且运行正常,但在编辑器中它只是抛出“令牌无效”。错误,并防止编辑器出现,真的很烦人,因为它阻止我使用可视化编辑器。编辑器中的wpf转换器“令牌无效”,扩展WPF工具包中的ColorPicker
我从扩展的WPF工具包制作ColorPicker的转换器。
这里的转换代码:
public class MaddoColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Color color = Colors.Black;
if (value != null && !string.IsNullOrWhiteSpace(value.ToString()))
{
string c = value.ToString();
var convertedColor = ColorConverter.ConvertFromString(c);
if (convertedColor != null)
{
color = (Color) convertedColor;
}
}
return color;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null)
{
Color color = (Color)value;
Debug.WriteLine(color.ToString());
return color.ToString();
}
return string.Empty;
}
}
这里是从形式XAML一些相关片段:
<Window.Resources>
<wpfCatalog:MaddoColorConverter x:Key="ColorConverter" />
</Window.Resources>
<xctk:ColorPicker Grid.Row="3" Grid.Column="2" SelectedColor="{Binding ColoreTestoRGB, Converter={StaticResource ColorConverter}}"/>
什么是ColoreTestoRGB源属性的类型以及它返回的值是什么?这需要ColorConverter实际理解的有效值,例如“#000”。 – mm8
这是一个字符串属性,它查找字典中的正确值或返回默认值 公共字符串ColoreTestoRGB get {return PicSettings.GetString(“coloreTestoRGB”); } set { PicSettings.Set(“coloreTestoRGB”,value); RaisePropertyChanged(“ColoreTestoRGB”); } } – MaddoScientisto
很明显,您不能将字符串“ColoreTestoRGB”传递给转换器中的ColorConverter.ConvertFromString方法,而不会发生异常。 – mm8