通常,该站点的用户更喜欢问题作者提供您所拥有的更多信息。我们还希望看到您至少尝试自己找到答案。
但是,由于您是新用户,我将为您提供完整的解决方案。有几种方法可以实现这一点……我将向您展示一种方法,您可以根据自己的需要进行调整。
启动一个新的 WPF 项目并将以下内容添加到您的MainWindow.xaml.cs
文件中:
using System;
using System.Collections.ObjectModel;
using System.Windows;
namespace WpfApplication1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = this;
Images.Add(new Tuple<string, string>("Picture 1",
"/WpfApplication1;component/Images/Picture 1.png"));
Images.Add(new Tuple<string, string>("Picture 2",
"/WpfApplication1;component/Images/Picture 2.png"));
Images.Add(new Tuple<string, string>("Picture 3",
"/WpfApplication1;component/Images/Picture 3.png"));
}
public static DependencyProperty ImagesProperty = DependencyProperty.Register(
"Images", typeof(ObservableCollection<Tuple<string, string>>), typeof(MainWindow),
new PropertyMetadata(new ObservableCollection<Tuple<string, string>>()));
public ObservableCollection<Tuple<string, string>> Images
{
get { return (ObservableCollection<Tuple<string, string>>)GetValue(
ImagesProperty); }
set { SetValue(ImagesProperty, value); }
}
}
}
在这里,我创建了一个DependencyProperty
命名Images
来保存图像信息。它是类型的Tuple<string, string>
,这使我能够添加每张图片的名称和文件路径。您将需要调整它以适应您在数据库中保存图像的系统。我建议将图像保存在某个文件夹中,然后引用文件路径,因为它比尝试将图像对象加载到Image
控件中要容易得多。
接下来,将以下代码放入您的MainWindow.xaml
文件中:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="100" />
</Grid.RowDefinitions>
<Image Grid.Row="0" Source="{Binding SelectedValue,
ElementName=ImageComboBox}" />
<ComboBox Grid.Row="1" Name="ImageComboBox" ItemsSource="{Binding Images}"
DisplayMemberPath="Item1" SelectedValuePath="Item2" Height="23" Width="120" />
</Grid>
</Window>
在这里,我将Images
集合绑定到ComboBox.ItemsSource
属性并将属性设置DisplayMemberPath
为Item1
... 这是Tuple
包含图片名称的第一个属性的名称 - 因此,将显示名称。我还将SelectedValuePath
属性设置为Item2
...这是Tuple
保存图片文件路径的第二个属性的名称 - 因此所选项目的值将是所选文件的文件路径Image
。
另请注意,该Image.Source
属性设置为Binding SelectedValue, ElementName=ImageComboBox
。这意味着图片的来源将来自ComboBox.SelectedValue
,如果您记得的话,它被设置为所选图像的文件路径。
注意事项:
您当然可以Tuple
用您自己的类替换对象,只要您更新正确属性的名称以用于ComboBox.SelectedValuePath
和ComboBox.DisplayMemberPath
属性。
还将您与此示例代码一起使用的任何图像添加到Images
应用程序根目录中命名的文件夹中。此外,除非您将它们命名为Picture 1.png
,Picture 2.png
和,否则您Picture 3.png
将需要更新添加到Images
集合中的文件路径。