2016-03-19 7 views
0

ウェディングプランナーアプリのUIで作業しているとします。ゲストのリストが表示され、 'Will Attend'/'Maybe'/'No'の値を含むコンボボックスの隣の画面に名前を表示します。コンボボックスを含むItemTemplate - どのようにSelectedValueにバインドするのですか?

私は何かにしようとしました....私はビューモデル(ゲスト)の中にアイテムのコレクションを持っています。これらのアイテムのそれぞれに対して、ラベルとコンボボックスを表示したいと思います。各ComboBoxはドロップダウンで同じ値を持ちます(可能な回答)。

ラベルとコンボボックスを含むItemTemplateを作成しました。私はゲストのコレクションにそれをバインドし、期待どおりに動作します。 ComboBoxのItemsSourceが可能な応答のリストにバインドされるように、祖先バインディングを使用しています。それは素晴らしい作品です。

私が苦労しているのは、SelectedItemをバインドしてユーザーが選択した値を取得する方法です。私は何とかViewModelに選択された値のコレクションを持っていますが、これを記述するための正しい単語を見つけるのは非常に困難です。

誰でも手伝ってもらえますか?私はこれについて間違った方法をとっていますか?

答えて

1

あなたは出席状態のための列挙型を作成し、お客様のクラスにAttendanceプロパティを追加する可能性があります。

public enum Attendance 
{ 
    Yes, 
    No, 
    Maybe 
} 

public class Guest 
{ 
    ... 
    public Attendance Attendance { get; set; } // raise PropertyChanged event if necessary 
} 

今、あなたは適切な列挙値にコンボボックス項目のTagプロパティを設定し、SelectedValueを結合することができますプロパティ:

<ItemsControl.ItemTemplate> 
    <DataTemplate> 
     <ComboBox SelectedValue="{Binding Attendance}" SelectedValuePath="Tag"> 
      <TextBlock Tag="Yes">Will Attend</TextBlock> 
      <TextBlock Tag="No">Won't Attend</TextBlock> 
      <TextBlock Tag="Maybe">May Attend</TextBlock> 
     </ComboBox> 
    </DataTemplate> 
</ItemsControl.ItemTemplate> 
関連する問題