Ich versuche, eine ListBox zu verwenden, um einen Eintrag auszuwählen und dann ein Bild anzuzeigen, das zu diesem ausgewählten Eintrag gehört. Aber gerade am Anfang habe ich mein erstes Problem: Die ListBox mit Binding zu füllen funktioniert, aber wenn ich auf eine Zeile in meinem laufenden Programm klicke, wird die Zeile nicht ausgewählt. Ich kann nur den hervorgehobenen Hover-Effekt sehen, aber keine Linie auswählen. Irgendwelche Ideen, was mein Fehler sein könnte?Mit Binding gefüllte ListBox wählt Element nicht beim Klicken
Das ist mein XAML:
<ListBox x:Name="entrySelection" ItemsSource="{Binding Path=entryItems}" HorizontalAlignment="Left" Height="335" Margin="428,349,0,0" VerticalAlignment="Top" Width="540" FontSize="24"/>
Und in MainWindow.xaml.cs ich die List-Box mit Einträgen bin Füllung:
private void fillEntrySelectionListBox()
{
//Fill listBox with entries for active user
DataContext = this;
entryItems = new ObservableCollection<ComboBoxItem>();
foreach (HistoryEntry h in activeUser.History)
{
var cbItem = new ComboBoxItem();
cbItem.Content = h.toString();
entryItems.Add(cbItem);
}
this.entrySelection.ItemsSource = entryItems;
labelEntrySelection.Text = "Einträge für: " + activeUser.Id;
//show image matching the selected entry
if (activeUser.History != null)
{
int index = entrySelection.SelectedIndex;
if (index != -1 && index < activeUser.History.Count)
{
this.entryImage.Source = activeUser.History[index].Image;
}
}
}
So kann ich meine List-Box richtig gefüllt, sehen aber nicht Wählen Sie irgendwas - damit kann ich das Bild, das dem ausgewählten Eintrag entspricht, nicht laden. Ich bin noch recht neu in die Programmierung, so würde jede mögliche Hilfe groß sein :)
EDIT: Wenn jemand später einen Blick auf diesen Thread nimmt hier das ist - ganz offensichtlich ige Lösung
XAML jetzt sieht aus wie dieser hinter
<ListBox x:Name="entrySelection" ItemsSource="{Binding Path=entryItems}" HorizontalAlignment="Left" Height="335" Margin="428,349,0,0" VerticalAlignment="Top" Width="540" FontFamily="Siemens sans" FontSize="24">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Text}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
-Code, es zu füllen:
//Fill listbox with entries for selected user
DataContext = this;
entryItems = new ObservableCollection<DataItem>();
foreach (HistoryEntry h in selectedUser.History)
{
var lbItem = new DataItem(h.toString());
entryItems.Add(lbItem);
}
this.entrySelection.ItemsSource = entryItems;
labelEntrySelection.Text = "Einträge für: " + selectedUser.Id;
Und neue Klasse DataItem:
class DataItem
{
private String text;
public DataItem(String s)
{
text = s;
}
public String Text
{
get
{
return text;
}
}
}
Oh, vielen Dank für diesen Hinweis - das ist eine Kopie und Paste Fehler. Ich werde es versuchen :) – Denise
ja, jetzt klappt es - mir geht's jetzt ziemlich blöd ^^ danke für die Hilfe :) – Denise