如何用文本填充WPF组合框运行时的图像
本文关键字:运行时 图像 组合 WPF 何用 文本 填充 | 更新日期: 2023-09-27 18:12:05
我正在尝试使用WPF复制WinForms应用程序。
在我的应用程序中,我有一个组合框,其中填充了电影的标题,让我搜索电影。现在我将它移植到WPF,我想使用ComboBox来显示电影的标题和海报图像。
我已经创建了ComboBox和两个对象,但是不知道如何在运行时填充ComboBox,因为Add方法不允许我同时添加两个对象。
combobox.items.add()
请帮助我了解如何在运行时用文本和图像填充组合框。
更新:这是组合框
的xaml代码<ComboBox x:Name="busca_pelicula" HorizontalAlignment="Left" VerticalAlignment="Top" Width="334" Margin="147,93,0,0" IsEditable="True">
<ComboBox.Effect>
<DropShadowEffect/>
</ComboBox.Effect>
<TextBox HorizontalAlignment="Left" VerticalAlignment="Center" Name="PeliText"/>
<Image HorizontalAlignment="Right" Height="50" VerticalAlignment="Center" Width="50"/>
</ComboBox>
用电影数据库中的数据填充组合框的代码是
busca_pelicula.Items.clear();
使用SQL的东西检索标题和电影海报
BitmapImage ImagenPoster = new BitmapImage();
ImagenPoster.BeginInit();
ImagenPoster.UriSource = new Uri(wMediaPath+"Peli''"+wNombrePoster);
ImagenPoster.EndInit();
busca_pelicula.Items.Add(? don't know what to put here)
首先你必须创建一个类似于这样的类:
public class Movie : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public string Name { get; set; }
public ImageSource Picture { get; set; }
}
然后在你的xaml你必须改变组合如下:
<ComboBox >
<ComboBox.ItemTemplate>
<ItemContainerTemplate>
<StackPanel>
<Image Source="{Binding Picture}"></Image>
<TextBlock ><Run Text="{Binding Name}"/></TextBlock>
</StackPanel>
</ItemContainerTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
这是使用大量数据声明WPF组合框的方法,以让您"虚拟化"渲染
<ComboBox x:Name="busca_pelicula" HorizontalAlignment="Left" VerticalAlignment="Top" Width="334" Margin="147,93,0,0" IsEditable="True" Height="55" SelectionChanged="busca_pelicula_SelectionChanged" >
<ComboBox.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel />
</ItemsPanelTemplate>
</ComboBox.ItemsPanel>
<ComboBox.Effect>
<DropShadowEffect/>
</ComboBox.Effect>
<ComboBox.ItemTemplate>
<ItemContainerTemplate>
<StackPanel>
<TextBlock ><Run Text="{Binding Name}" /></TextBlock>
<Image Source="{Binding Picture}" Width="50" Height="50" HorizontalAlignment="Right"></Image>
</StackPanel>
</ItemContainerTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
现在工作得很好,组合框只呈现它显示的10个项目,希望对某些人有所帮助。