Bonjour à toutes et à tous,
Je débute en WPF et je rencontre un problème avec l'utilisation des Window.Resources
J'essaye d'utiliser dans mon xaml une classe de conversion de fichiers image en ImageResource et je rencontre le problème suivant lors de la compilation :
Voici le début du Xaml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Erreur de génération inconnue, 'MC3074 : la balise 'ByteArrayToImageSource' n'existe pas dans l'espace de noms XML 'clr-namespace:WPF_par_la_pratique;assembly=WPF_par_la_pratique'
Puis l'utilisation de ma resource :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <Window x:Class="WPF_par_la_pratique.Window2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:Converters="clr-namespace:WPF_par_la_pratique;assembly=WPF_par_la_pratique" Title="Window2" Height="480" Width="640"> <Window.Resources> <Converters:ByteArrayToImageSource x:Key="ImgConverter"></Converters:ByteArrayToImageSource> </Window.Resources>
Et enfin ma classe de conversion :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <Image x:Name="imgSelectedUser" Width="100" Canvas.Top="10" Canvas.Left="10" Source="{Binding Photo, Converter={StaticResource ImgConverter}}"></Image>
Je vous remercie d'avance pour toute aide que vous pourrez m'apporter
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Data; using System.Globalization; using System.Windows.Media; using System.Windows.Media.Imaging; using System.IO; namespace WPF_par_la_pratique { [ValueConversion(typeof(byte[]), typeof(ImageSource))] public class ByteArrayToImageSource : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { var byteArrayImage = value as byte[]; if (byteArrayImage != null && byteArrayImage.Length > 0) { var ms = new MemoryStream(byteArrayImage); var bitmapImg = new BitmapImage(); bitmapImg.BeginInit(); bitmapImg.StreamSource = ms; bitmapImg.EndInit(); return bitmapImg; } return null; } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return null; } } }
Partager