ソースとして Country オブジェクトのコレクションを持つコンボ ボックスがあります (ビュー モデルの Country プロパティにバインドされます)。
Country コンボは、ユーザー フォームの一部に表示されます。ユーザー フォームは、ユーザー オブジェクトから生成されます。ユーザー オブジェクトは、CountryID のみを保持します (つまり、Country への外部キー)。現在、名前のテキスト ボックスをユーザー オブジェクトの名前プロパティなどにバインドして、ユーザー フォームにデータを入力しています。
コンボの私のバインディングは次のとおりです。
ItemsSource="{Binding Countries}" DisplayMemberPath="CountryDescription"
したがって、現在読み込まれているユーザーについては、国 ID を取得し、それを国コンボに何らかの方法でバインドする必要がありますか? 国のコンボにはintのリストがなく、Countryオブジェクトのリストがあるため、これを行うにはどうすればよいですか。私はコンバーターの使用について考えましたが、コンボのソースに対応する CountryID を持つ国オブジェクトがあるため、これはやり過ぎのようです。
ユーザーの CountryID プロパティを取得して Country コンボにバインドし、Country コンボをフレンドリなユーザー名にする方法はありますか? ユーザーが別の国を選択できるようにする必要があるため、双方向バインディングが必要です。これにより、ユーザー オブジェクトの対応する countryID プロパティが更新されます。
どんな助けでも大歓迎です!乾杯...
編集
これが私が持っているものの縮小版です(わかりやすくするために、すべてのnotifypropertychangedコードを省略しました)
class User
{
public int UserID
{
get;set;
}
public string Username
{
get;set;
}
public int CountryID
{
get;set;
}
}
class Country
{
public int CountryID
{
get;set;
}
public string CountryDescription
{
get;set;
}
}
私のビュー モデルには、単に Country オブジェクトのリストである Countries プロパティがあります (上記のバインド)。ビューには、ユーザー名のテキスト ボックスと、国の説明を表示するコンボ ボックスがあります。ビュー モデルには、ビューをバインドするための "User" プロパティがあります。ユーザー名のバインディングは次のとおりです。
<TextBox x:Name="NameBox" Text=" {Binding User.Username, Mode=TwoWay}"
DataContext="{Binding}" />
私が抱えている問題は、国のコンボの選択されたアイテムのバインディングです。次のように、コンボに 2 つの国オブジェクトがあるとします。
CountryID = 1、CountryDescription = "フランス" CountryID = 2、CountryDescription = "スペイン"
ユーザーは次のように設定されます。
ユーザー ID = 1、ユーザー名 = "ボブ"、国 ID = 1。
コンボは「フランス」を表示する必要があります。ただし、ユーザーがフランスをスペインに変更した場合、ユーザーの CountryID を 2 に変更する必要があります。