2012-04-12 1 views
1

私はアンケートフォームで作業しています。調査は次のような構造を持つオブジェクトから作成されます。コンボボックスのselectedValueを、調査フォームのさまざまなソースと異なる構造からバインドする必要があります。

調査--has - >セクション--has - >質問--has - > QuestionOptions

各QuestionOptionがあります
QuestionIDを(質問に関連する)の​​調査のための
OptionText(コンボボックス結合(DisplayMemeberに表示されますどのような))
OptionValue(オプションのスコア、結合通常1-5(SelectedValuePath))

結果に保存されています次の構造:

結果--has - >

回答それぞれの回答があります
QuestionID(データベース内のオプションを調査するためのリンクの答えに)
スコア(これは、コンボボックスでユーザーが値selecterから来ている)

保存は正常ですが、調査を編集する必要がある場合は、これまでに選択した結果を戻す必要があります。オブジェクト "結果"は完全に入力されているので、私は利用可能なすべてのデータを持っています。

問題はGUIである:
はどのようにして初期化したり、保存された調査の対応する値とするDataTemplateから作成された各コンボボックスを設定する必要がありますか?私はXAMLに開いている

<DataTemplate x:Key="QuestonTemplate"> 
      <StackPanel Margin="10,2,10,2" Orientation="Vertical"> 
       <TextBlock HorizontalAlignment="Left" Text="{Binding Path=QuestionText}" TextWrapping="Wrap" Height="Auto" Margin="5" FontSize="14" /> 
       <ComboBox x:Name="Options" Grid.Row="1" HorizontalAlignment="Left" Width="400" Margin="10,0,10,0" 
        Style="{StaticResource FlatComboBoxPaleYellow}"        
        ItemsSource="{Binding Path=QuestionOptions}" 
        SelectedValuePath="OptionValue" 
        DisplayMemberPath="OptionText"       
        SelectionChanged="Answer_SelectionChanged" /> 
      </StackPanel> 
     </DataTemplate> 

:あるコンボボックスに使用するXAMLコードを考慮してくださいコンボボックスがオブジェクトから生成される「調査」と回答は、オブジェクトである「結果

コードやC#(さらに良い!私は古い学校です)または任意の提案。

ありがとうございます!

答えて

0

私は、あなたの質問オブジェクトが追加のプロパティを保持することをお勧めします:SelectedOption

これはあなたのコンボボックスのSelectedItemのにバインドされたデータを次のようになります。そして、

<ComboBox x:Name="Options" Grid.Row="1" HorizontalAlignment="Left" Width="400" Margin="10,0,10,0" 
       Style="{StaticResource FlatComboBoxPaleYellow}"        
       ItemsSource="{Binding Path=QuestionOptions}" 
       SelectedValuePath="OptionValue" 
       DisplayMemberPath="OptionText" 
       SelectedItem="{Binding Path=SelectedOption}"      
       SelectionChanged="Answer_SelectionChanged" /> 

あなたの調査の対象で、各質問のために質問コレクションで、その質問に対応する結果オブジェクト内のAnswersを見つけ、その質問に対応するQuestionOptionを検索し、そのQuestionオブジェクトのSelectedOptionプロパティに割り当てます。

public class Question : INotifyPropertyChanged 
{ 
    public QuestionOption SelectedOption 
    { 
     get 
     { 
      return _selectedOption; 
     } 
     set 
     { 
      if (value != _selectedOption) 
      { 
       _myList = value; 
       OnPropertyChanged("SelectedOption"); 
      } 
     } 
    } 
    private QuestionOption _selectedOption = new QuestionOption(); 

    // ... other properties ... 
} 
+0

ありがとう。それは正常に働いた。 – Steeler

関連する問題