如何在ItemsControl中填充外键字段?

时间:2016-08-12 23:26:32

标签: c# mysql wpf entity-framework-6

我的数据库中有两个表。员工和图片。

员工持有一般员工凭证和名为PictureId的外键,引用图片表。

Employee table

图片表包含要在我的应用程序中使用的所有员工图像(以及一些其他杂项图像)

Picture table

所以在我的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中加载外部表字段?

1 个答案:

答案 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类的定义,以便我可以根据需要编辑我的答案,否则您将从上面的代码中了解该怎么做