我的数据库中有两个表。员工和图片。
员工持有一般员工凭证和名为PictureId的外键,引用图片表。
图片表包含要在我的应用程序中使用的所有员工图像(以及一些其他杂项图像)
所以在我的WPF应用程序中,我有一个UserControl,它有自己的ViewModel。 ViewModel从数据库中获取Employee信息(我使用Entity-Framework 6 Database First方法)。
public class MyViewModel
{
private databaseEntities context;
public List<employee> EmployeeList { get; set; }
// Constructor
public MyViewModel()
{
context = new databaseEntities();
var queryEmployees = context.employees;
EmployeeList = new List<employee>(queryEmployees);
}
}
View(Usercontrol)将此信息排列为卡片。
<ItemsControl ItemsSource="{Binding EmployeeList}">
<Grid...>
<Image Source="/assets/images/CardBackground.PNG" Stretch="Fill" />
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Top">
<!-- How would I fetch the corresponding image data meant to go below? -->
<Image Source="{Binding Path= ??, Converter={StaticResource PictureConverter}}"/>
<TextBlock Text="{Binding FirstName}"/>
<TextBlock Text="{Binding LastName}"/>
</StackPanel>
</Grid>
</ItemsControl>
我的问题出在哪里。我可以使用上面的代码从Employee表中检索信息。但是当谈到获取他们的显示图片时,我已经碰到了一堵砖墙。
我最初假设雇员模型首先必须加载它的依赖性,就像一个类加载一个基类一样,但显然它并没有那样工作。
创建和填充单独的列表似乎也没有任何效果。
如何在同一ItemsControl中加载外部表字段?
答案 0 :(得分:1)
如果您使用的是Entity FrameWork,那么Employee类中必须有导航属性。
让我们说财产是图片然后你可以做这样的事情。
<ItemsControl ItemsSource="{Binding EmployeeList}">
<Grid...>
<Image Source="/assets/images/CardBackground.PNG" Stretch="Fill" />
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Top">
<!-- How would I fetch the corresponding image data meant to go below? -->
<Image Source="{Binding Path=Employee.Picture.PicturePath, Converter={StaticResource PictureConverter}}"/>
<TextBlock Text="{Binding FirstName}"/>
<TextBlock Text="{Binding LastName}"/>
</StackPanel>
</Grid>
</ItemsControl>
我假设Navigation属性的名称和Picture实体的属性。请提供Employee类和Picture类的定义,以便我可以根据需要编辑我的答案,否则您将从上面的代码中了解该怎么做