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

本文关键字:GridViewColumn 其他 StackPanel WPF 表示 | 更新日期: 2023-09-27 18:02:57

我有一个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>

正如预期的那样,这只是显示与键相关联的整数值,而不是一些"用户可读"的值,如Customer Name或其他一些有用的值。

如果可能的话,我如何"强制转换"或表示像CustomerId这样的外键以在Customer表中显示一些其他值?

这实际上会像现在一样获取键并到达Customer表并获取类似Customer的内容。在我的StackPanel中作为代表属性。

注意事项

Test和Customer是代码优先实体。我也使用MVVM,所以如果这是我需要在ViewModel而不是XAML中操作的东西,请让我知道。

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

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

public string CustomerName
{
    get
    {
        var db = new Context();
        var customer = db.Customers.Find(CustomerId);
        _customerName = customer.Name;
        return _customerName;
    }
}