Bonjour,
Est ce que, en type d'elements d'une ListBox, peut-on mettre un element WindowsForms ?
Bonjour,
Est ce que, en type d'elements d'une ListBox, peut-on mettre un element WindowsForms ?
Oui: il suffit de les intégrer dans des contrôle de type WindowsFormsHost![]()
Thomas LEBRUN: MCAD.NET, MCTS (Win et Web), MCPD(Win et Web) & Microsoft MVP Client Application Development
WPF par la pratique, mon livre sur WPF ! (également disponible ici ou là)
A la découverte de .NET
ok.
Je pose la question, car je me demande ce que ca va donner avec le probleme du melange entre winform et WPF.
Normalement, cela doit bien fonctionner![]()
Thomas LEBRUN: MCAD.NET, MCTS (Win et Web), MCPD(Win et Web) & Microsoft MVP Client Application Development
WPF par la pratique, mon livre sur WPF ! (également disponible ici ou là)
A la découverte de .NET
J'ai une classe comme suit (classe representant un element de ma listebox) :
et voici mon DataTemplate :
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 public class ImageFile { public int id; private Uri _uri; private String _path; public ImageFile(int id,string path) { _path = path; _uri = new Uri(_path); this.id = id; } public override string ToString() { return Path; } public String Path { get { return _path; } } public Uri Uri { get { return _uri; } } public System.Drawing.Image Imag { get { /*JpegBitmapDecoder test = new JpegBitmapDecoder(_uri, BitmapCreateOptions.DelayCreation, BitmapCacheOption.OnDemand);*/ //return BitmapFrame.Create(test.Frames[0].Thumbnail); return System.Drawing.Image.FromFile(_path); } } }
Le problème est que le binding n'est pas accepté car ce n'est pas une dependencyproperty.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <DataTemplate DataType="{x:Type pd:ImageFile}"> <Border VerticalAlignment="Center" HorizontalAlignment="Center" Padding="4" Margin="2" Background="White"> <WindowsFormsHost> <wf:PictureBox Image="{Binding Imag}" /> </WindowsFormsHost> </Border> </DataTemplate>
Je précise que le but de ma listebox est de lister des images jpeg. J'utilisais avant uniquement des éléments WPF pour les afficher.
Cependant, j'utilisais au début l'image "complète", et chaque image dans ma listebox consommait à peu près 20Mo de mémoire vive (meme si mon image en 4000pixel par 3000 est redimensionnée dans la listebox).
Donc, j'ai voulu utiliser le thumbnail, me permettant de descendre à 5Mo de mémoire par image, correspondant à la taille du fichier jpeg, ça me convenait assez bien, mais certaines images que je gère ne possedent pas de thumb, et d'autres ont le thumb endommagé.
Je ne comprend pas pourquoi tu as besoin de passer par un WindowsFormsHost
Thomas LEBRUN: MCAD.NET, MCTS (Win et Web), MCPD(Win et Web) & Microsoft MVP Client Application Development
WPF par la pratique, mon livre sur WPF ! (également disponible ici ou là)
A la découverte de .NET
Partager