Attualmente sto lavorando a un'applicazione C# WPF in cui sto cercando di aggiungere un'immagine, seguita da un testo in ciascuna voce dell'elenco.Aggiunta di immagini all'elemento ListBox
Ho il binding che funziona per il testo ma l'immagine non viene visualizzata.
Qui di seguito è il mio XAML:
<Window x:Class="ServerAdministrator.FtpDirectoryListing"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:ServerAdministrator"
Title="FTP Directory Listing" Height="391" Width="599">
<Grid>
<StatusBar Height="30" Margin="0,322,0,0" Name="statusBar1" VerticalAlignment="Top" />
<ToolBar Height="26" Name="toolBar1" VerticalAlignment="Top" />
<TextBox Height="23" HorizontalAlignment="Left" Margin="12,32,0,0" Name="textBox1" VerticalAlignment="Top" Width="517" />
<ListBox x:Name="lstDirecotryListing" Height="233" HorizontalAlignment="Left" Margin="12,61,0,0" VerticalAlignment="Top" Width="553">
<ListBox.ItemTemplate>
<DataTemplate DataType="{x:Type local:DirectoryListing}">
<StackPanel>
<TextBlock Margin="3" Text="{Binding path}" />
<ContentControl Margin="3" Content="{Binding image}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</Window>
Qui di seguito è la mia classe DirectoryInserzione
class DirectoryListing
{
public string path {get; set;}
public Image image{get; set;}
public DirectoryListing(Image imgage, String path)
{
this.image = image;
this.path = path;
}
}
seguito è riportato come sto aggiungendo elementi alla casella di riepilogo
Image image = new Image();
BitmapImage bi = new BitmapImage(new Uri(@"C:\Users\Chris\Documents\Visual Studio 2010\Projects\ServerAdministrator\ServerAdministrator\bin\Debug\images\directory.png"));
image.Source = bi;
lstDirecotryListing.Items.Add(new DirectoryListing(image, "hello"));
è sempre aggiunto il testo bene ma non l'immagine.
non sono sicuro se è legato, ma ottengo il seguente nella Console di output in VS2010
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1''. BindingExpression:Path=HorizontalContentAlignment; DataItem=null; target element is 'ComboBoxItem' (Name=''); target property is 'HorizontalContentAlignment' (type 'HorizontalAlignment') System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1''. BindingExpression:Path=VerticalContentAlignment; DataItem=null; target element is 'ComboBoxItem' (Name=''); target property is 'VerticalContentAlignment' (type 'VerticalAlignment')
Grazie per tutto l'aiuto che possono fornire
UPDATE
I L'ho fatto funzionare grazie alla risposta di Clemens, usando ancora le stesse due variabili in quanto il percorso non è il percorso dell'immagine, ma in ogni caso sta visualizzando l'immagine e il testo ora.
Il problema è che visualizza il testo e l'immagine è sotto, ho bisogno di mostrare l'immagine e il testo fianco a fianco, come posso fare questo?
L'eccezione è per HorizontalContentAlignment su un elemento casella combinata, probabilmente non correlato a questo problema. Il tuo codice sembra buono, guarderò ancora un po 'e spero che tu abbia una risposta! – BradleyDotNET
Puoi postare 'XAML' dove è definito' ComboBoxItem' –
Ho guardato di nuovo. il messaggio relativo alla casella combinata è per un dialogo precedente, non quello con il problema – Boardy