将外键表示为WPF StackPanel GridViewColumn中的其他值

时间:2013-03-08 22:56:29

标签: c# wpf entity-framework mvvm

我有一个StackPanel,它使用实体的属性/表列的列设置其GridColumns。很多列都是其他表中的外键。下面的简短示例显示了一次这样的外键 - CustomerID。

<StackPanel Orientation="Vertical" Margin="5">
    <Label Content="Tests to Run" FontWeight="Bold" x:Name="TestsToRunLabel"/>
    <ListView ItemsSource="{Binding SelectedTechnician.Tests}"
        SelectedItem="{Binding SelectedTest}" x:Name="AvailableTestsListView" Height="140">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="Id" Width="auto" DisplayMemberBinding="{Binding Id}"/>
                <GridViewColumn Header="Test" Width="auto" DisplayMemberBinding="{Binding CustomerId}"/>
            </GridView>
        </ListView.View>
    </ListView>
</StackPanel>

正如预期的那样,这只显示与密钥相关联的整数值,而不是某些“用户可读”的值,例如客户名称或其他一些有用的值。

如果可能的话,我如何“转换”或表示像CustomerId这样的外键来显示Customer表中的其他值?

这基本上可以像现在一样获取密钥并进入Customer表,并在我的StackPanel中抓取类似Customer.Name的代表属性。

需要注意的事项:

测试和客户是代码优先实体。我也在使用MVVM,所以如果我需要在ViewModel而不是XAML中操作,请告诉我。

1 个答案:

答案 0 :(得分:0)

为了解决我自己的问题,我在我的业务模型对象上创建了一组“仅显示”属性,它只执行LINQ查询以返回更有意义的属性/属性/列:

public string CustomerName
{
    get
    {
        var db = new Context();

        var customer = db.Customers.Find(CustomerId);
        _customerName = customer.Name;

        return _customerName;
    }
}