2009-04-23 7 views
1

J'ai appliqué un attribut TypeConverterAttribute à une propriété de ma sous-classe WPF FrameworkElement. La propriété est de type BitmapSource.Pourquoi mon TypeConverter n'est pas appelé?

Mais le TypeConverter n'est jamais créé ou appelé. Est-ce parce que TypeConverter spécifié sur ImageSource est prioritaire? J'essaie de déboguer un problème de liaison de données. Le message d'erreur, ne fait jamais mention de ma classe TypeConverter, ce qui suggère que l'ajout de l'attribut à la propriété n'a pas eu d'effet:

System.Windows.Data Error: 6 : 'TargetDefaultValueConverter' converter failed to convert value '../SmallItemIcons/Gallery.png' (type 'String'); fallback value will be used, if available. BindingExpression:Path=SmallImage.ImageUri; DataItem='ItemSettings' (HashCode=32104365); target element is 'Bitmap' (Name=''); target property is 'Source' (type 'BitmapSource') IOException:'System.IO.IOException: Cannot locate resource 'smallitemicons/gallery.png'. 
    at MS.Internal.AppModel.ResourcePart.GetStreamCore(FileMode mode, FileAccess access) 
    at System.IO.Packaging.PackagePart.GetStream(FileMode mode, FileAccess access) 
    at System.IO.Packaging.PackWebResponse.CachedResponse.GetResponseStream() 
    at System.IO.Packaging.PackWebResponse.GetResponseStream() 
    at System.IO.Packaging.PackWebResponse.get_ContentType() 
    at System.Windows.Media.Imaging.BitmapDecoder.SetupDecoderFromUriOrStream(Uri uri, Stream stream, BitmapCacheOption cacheOption, Guid& clsId, Boolean& isOriginalWritable, Stream& uriStream, UnmanagedMemoryStream& unmanagedMemoryStream, SafeFileHandle& safeFilehandle) 
    at System.Windows.Media.Imaging.BitmapDecoder.CreateFromUriOrStream(Uri baseUri, Uri uri, Stream stream, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, RequestCachePolicy uriCachePolicy, Boolean insertInDecoderCache) 
    at System.Windows.Media.Imaging.BitmapFrame.CreateFromUriOrStream(Uri baseUri, Uri uri, Stream stream, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, RequestCachePolicy uriCachePolicy) 
    at System.Windows.Media.ImageSourceConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value) 
    at MS.Internal.Data.DefaultValueConverter.ConvertHelper(Object o, Type destinationType, DependencyObject targetElement, CultureInfo culture, Boolean isForward) 
    at MS.Internal.Data.TargetDefaultValueConverter.Convert(Object o, Type type, Object parameter, CultureInfo culture) 
    at System.Windows.Data.BindingExpression.ConvertHelper(IValueConverter converter, Object value, Type targetType, Object parameter, CultureInfo culture)' 

Répondre

2

Je suis venu contre cela avant et ignoré parce que j'avais le luxe de posséder la classe en cours de conversion. Cependant, j'ai juste essayé ceci et peux confirmer que according to MSDN il devrait fonctionner. Cela dit, il semble certainement que cela ne fait pas travail pas.

J'ai soulevé ceci sur le WPF Disciples forum, où je fournis également une solution de contournement.

+0

Merci, je garderai un oeil sur ce fil. En fait, je garderai un oeil sur ce forum! NB: Le deuxième lien devrait être http://groups.google.com/group/wpf-disciples/browse_thread/thread/9f7bb40b7413fcd – mackenir

+0

Le lien est maintenant fixé - merci. –

-2

vous devez créer l'objet converti dans le XAML pour l'utiliser dans votre liaison. Consultez this article

<local:MyConverter key="myconverterorsomething"/> 

<TextBlock Text="{Binding Path=TimeOfSale, 
    Converter={StaticResource myconverterorsomething}, 
    ConverterParameter=' \{0:dd-MMM-yyyy hh:mm\}'}" /> 
+0

C'est un convertisseur de valeur. J'essaye de déboguer l'étape de TypeConverter, ainsi essaye de placer le TypeConverter. – mackenir

+0

Exemple MSDN: http://msdn.microsoft.com/en-us/library/bb546926.aspx –

+0

C'est un exemple où le TypeConverter attrib est attaché au type étant converti plutôt que la propriété - j'ai lu quelque part que vous pourriez attacher l'attribut à la propriété. Ce dernier usage est ce que j'essaie de faire. – mackenir

Questions connexes