В моем приложении WPF есть список с несколькими элементами. На каждом элементе у нас есть изображение и текстовое поле.Добавление нескольких элементов в список. C#, WPF
См XAML ниже:
<ListBox x:Name="lstMagic" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="10,200,10,0" Width="Auto" Height="558" Background="{x:Null}" BorderBrush="Transparent">
<ListBoxItem>
<StackPanel Orientation="Horizontal">
<Image Source="images/plates/pig.jpg" Margin="0,0,5,0" Width="72"/>
<TextBox IsReadOnly="True" Background="{x:Null}" Foreground="White" Width="912">Some Magic is going to happen</TextBox>
</StackPanel>
</ListBoxItem>
Так что список начинается с свиней, как и ожидалось. В передней части свиньи он загружает pig.jpg успешно.
В этом разделе формы у меня есть кнопка. Я смог сделать волшебство на этой кнопке, чтобы добавить новый listBoxItem.
private void btnDoMagic(object sender, RoutedEventArgs e)
{
ListBoxItem newMagic = new ListBoxItem();
Image imageCurrent = new Image();
imageCurrent.Source = new BitmapImage(new Uri("images/plates/someOtherImage.jpg", UriKind.RelativeOrAbsolute));
newMagic.Content = imageCurrent;
lstCardapio.Items.Add(newMagic);
}
}
Эта функция работает и успешно добавляет изображение в список! Но у меня есть некоторые вопросы: Как я могу сделать так же, как мой первый XAML? Изображение и текстовое поле? Как я могу добавить их на событие с моей кнопкой?
Мне нужно это сделать, потому что мы получим эти элементы из нашей базы данных, поэтому мы должны загружать их динамически.
Не создавайте элементы пользовательского интерфейса или не манипулируйте ими в процедурный код в WPF. Для этого и предназначен XAML. Создайте правильный ViewModel с помощью 'ObservableCollection' и привяжите 'ListBox.ItemsSource' к этой коллекции. Затем используйте свойство «ListBox.ItemTemplate», чтобы определить, как будет выглядеть пользовательский интерфейс для каждого элемента. –
, потому что WPF не предназначен для использования таким образом. У вас будет много ненужного, сложного для ведения кода. Создайте правильный ViewModel, и все ваши проблемы будут волшебным образом исчезнуть. –
См. [Этот ответ] (http://stackoverflow.com/a/21315083/643085) –