1

Um Aufzählungen zu Icons konvertieren verwende ich einen Wert Konverter wie folgt aus:Resource als Content in einem 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(); 
    } 
} 

ich es in meiner XAML wie folgt verwenden:

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

Wenn ich die Anwendung zu starten Alles funktioniert gut, der Konverter konvertiert den Namen eines Wertes und holt das Icon aus dem ResourceDictionary mit seinem Schlüssel. Aber in meinem Designer beschwert sich Visual Studio 2010 immer noch:

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) 

Das ist anying! Irgendeine Idee? Gibt es eine einfachere Lösung zum Konvertieren von Enums in XAML-Symbolressourcen?

+0

Haben Sie versucht, explizit die Eigenschaft Einstellung mit ''? Ihr Konverter hat kein 'ContentPropertyAttribute' darauf, und ich frage mich, wie das überhaupt funktioniert und ob es vielleicht den Designer verwirrt. –

Antwort

Verwandte Themen