Wpf 需要在调查表单中绑定来自不同来源和不同结构的ComboBox的selectedValue
我在做调查。测量是从具有以下结构的对象创建的: 调查--有-->部分--有-->问题--有-->问题选项 每个问题选项都有:Wpf 需要在调查表单中绑定来自不同来源和不同结构的ComboBox的selectedValue,wpf,wcf-binding,Wpf,Wcf Binding,我在做调查。测量是从具有以下结构的对象创建的: 调查--有-->部分--有-->问题--有-->问题选项 每个问题选项都有: 问题ID(与问题相关) OptionText(将在组合框中显示什么(DisplayMemeber绑定)) OptionValue(选项的分数,通常为1-5(SelectedValuePath绑定)) 调查结果存储在以下结构中: 结果——有-->个答案 每个答案都有: 问题ID(将答案链接到数据库中的调查选项) 分数(来自组合框中用户的值选择器) 保存效果很好,但是如果我需
问题ID(与问题相关)
OptionText(将在组合框中显示什么(DisplayMemeber绑定))
OptionValue(选项的分数,通常为1-5(SelectedValuePath绑定)) 调查结果存储在以下结构中: 结果——有-->个答案 每个答案都有:
问题ID(将答案链接到数据库中的调查选项)
分数(来自组合框中用户的值选择器) 保存效果很好,但是如果我需要编辑调查,我需要返回到目前为止选择的结果。对象“Result”填充得非常完美,因此我拥有所有可用数据 问题出在GUI中:
我应该如何使用存储的测量的相应值初始化或设置从DataTemplate创建的每个组合框?考虑到组合框是从对象“调查”生成的,答案在对象“结果”中 ComboBox使用的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#(甚至更好!我是老派)或任何建议
谢谢 我建议您的问题对象保留一个附加属性: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" />
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 ...
}