2

GridColumns をエンティティのプロパティの列/テーブルの列で設定する StackPanel があります。多くの列は、他のテーブルからの外部キーです。以下の簡単な例は、そのような外部キー - 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 のようなものを取得します。

注意事項:

Test と Customer は Code-First エンティティです。私も MVVM を使用しているので、これが XAML ではなく ViewModel で操作する必要がある場合はお知らせください。

4

1 に答える 1

0

私自身の問題を解決するために、より意味のある属性/プロパティ/列を返す LINQ クエリを実行するだけのビジネス モデル オブジェクトに一連の「表示専用」プロパティを作成しました。

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

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

        return _customerName;
    }
}
于 2013-03-11T21:17:22.253 に答える