我有一个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中操作,请告诉我。
答案 0 :(得分:0)
为了解决我自己的问题,我在我的业务模型对象上创建了一组“仅显示”属性,它只执行LINQ查询以返回更有意义的属性/属性/列:
public string CustomerName
{
get
{
var db = new Context();
var customer = db.Customers.Find(CustomerId);
_customerName = customer.Name;
return _customerName;
}
}