我有一个可观察的集合,它为单选按钮提供值。当用户从一个项目移动到另一个项目时,如果用户先前选择了该按钮,我希望自动选择相应的组单选按钮。
总结一下,这是一个多问题类型考试,我想在用户从一个问题导航到另一个问题时保持选择单选按钮。
以下是观点:
<ItemsControl ItemsSource="{Binding CurrentQuestion.Choices}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<RadioButton Content="{Binding .}"
Command="{Binding DataContext.SaveAnswerCommand, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"
CommandParameter="{Binding}"
GroupName="choices"
/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
可观察的集合:
public static ObservableCollection<ExamModel> Questions
{
get
{
return _questions;
}
set
{
_questions = value;
}
}
//this is how i keep track of which item is currently active
public ExamModel CurrentQuestion
{
get { return _currentQuestion; }
set
{
if (_currentQuestion != value)
{
_currentQuestion = value;
OnPropertyChanged("CurrentQuestion");
}
}
}
模特:
public List<string> Choices
{
get
{
if (_choices == null)
_choices = new List<string>();
return _choices;
}
set
{
if (_choices != value)
{
_choices = value;
OnPropertyChanged("Choices");
}
}
}
答案 0 :(得分:0)
我通过使用此方法MVVM: Binding radio buttons to a view model?并使用所选单选按钮的值绑定 SelectedItem 属性来解决此问题。
所选单选按钮会在我的可观察集合 CurrentQuestion.StudentAnswer 的其中一个字段上保持跟踪。
答案 1 :(得分:0)
有一篇有趣的文章介绍了如何以多种方式处理RadioButton绑定。
请参阅Jerry Nixon on Windows: Let’s code! Data binding to a Radio Button in XAML