したがって、顧客レコードを含む顧客テーブルがあり、各レコードには顧客タイプ フィールドがあります。また、customertype フィールドの有効な値を含む customertype テーブルもあります。
また、CRUD を実行するには WPF が必要です。(作成、レビュー、更新、削除)。
明らかな解決策は、SelectedValue プロパティを customertype フィールドにバインドし、ItemsSource プロパティを customertype テーブルのクエリによって取り込まれたリストにバインドして、ComboBox を使用することです。
問題は、演習で見られるような単純な問題以外ではうまくいかないことです。
customertype テーブルにない customertype 値を持つ顧客レコードを表示または編集しているときに問題が発生します。これは、エラーによって発生するか、customertype が廃止され、テーブルから削除されたために発生する可能性があります。
SelectedValue が ItemsSource リストにないため、この状況で WPF が行うことは、customertype フィールドを null に設定することです。そして、それは問題です。
表示のみの場合は、リストにあるかどうかに関係なく、テーブルにある値が表示されます。編集している場合は、少なくとも最初はテーブルにある値も表示する必要があるという合理的な議論を行うことができますが、選択を変更すると、元の値を取得できなくなります。
それで、何かアイデアはありますか?これは、私が持っているほぼすべての編集/表示フォームで発生する問題なので、使用時に合理的にクリーンなものを好むでしょう。(つまり、XAML の複雑さ、これらのフィールドの 1 つを処理する必要があるすべての場所、またはこれらのフィールドの 1 つを処理するために挿入する XAML をサポートするコードの複雑さの選択を考えると、私は後者を好みます。)