1

Для преобразования перечислений в иконки я использовать преобразователь значений подобное:ResourceDictionary в ContentProperty в ValueConverter

public class IconConverter : IValueConverter 
{ 
    public ResourceDictionary Items { get; set; } 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 

     string key = Enum.GetName(value.GetType(), value); 
     return Items[key]; 

    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

Я использую его в моем XAML, как это:

<UserControl.Resources> 
    <local:IconConverter x:Key="IconConverter"> 
     <ResourceDictionary Source="/Leister.WPFControls;component/ButtonStyles.xaml" /> 
    </local:IconConverter> 
</UserControl.Resources> 

При запуске приложения все работает нормально, конвертер преобразует Имя значения и получает его из ResourceDictionary по его ключу. Но в моем Дизайнере Visual Studio 2010 жалуется:

The object of type System.Windows.ResourceDictionary" can not be cast to type "Microsoft.Expression.DesignModel.DocumentModel.DocumentNode". 
at Microsoft.Expression.DesignModel.Core.InstanceBuilderOperations.SetValue(Object target, IProperty propertyKey, Object value) 
at Microsoft.Expression.DesignModel.InstanceBuilders.ClrObjectInstanceBuilder.ModifyValue(IInstanceBuilderContext context, ViewNode target, IProperty propertyKey, Object value, PropertyModification modification) 
at Microsoft.Expression.DesignModel.InstanceBuilders.ClrObjectInstanceBuilder.UpdateProperty(IInstanceBuilderContext context, ViewNode viewNode, IProperty propertyKey, DocumentNode valueNode) 

Это anoying! Есть идеи? Есть ли более простое решение для преобразования Enums в ресурсы XAML-Icon?

+0

Вы пробовали явно устанавливая свойство с помощью '<местные: IconConverter.Items>'? У вашего конвертера нет 'ContentPropertyAttribute' на нем, и мне интересно, как это работает вообще, и, может быть, это путает дизайнера. –

ответ

 Смежные вопросы

  • Нет связанных вопросов^_^