我认为,最简单的一种是:
<ItemsControl ItemsSource="{Binding Options}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<RadioButton Content="{Binding}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
其中Options
是您的数据上下文的属性,如:
public IEnumerable<string> Options
{
get { return options; }
}
但是我想,你会想选择结果返回。
因此,任务变得更加复杂。您需要视图模型:
public class OptionViewModel
{
public bool? IsChecked { get; set; }
public string OptionName { get; set; }
}
然后,您必须字符串列表转换为视图模型的列表:
public IEnumerable<OptionViewModel> Options
{
get { return optionsAsViewModels ?? (optionsAsViewModels = new List(options.Select(_ => new OptionViewModel { OptionName = _ }))); }
}
private IEnumerable<OptionViewModel> optionsAsViewModels;
做出了一些更改到项目模板:
<ItemsControl ItemsSource="{Binding Options}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<RadioButton Content="{Binding OptionName}" IsChecked="{Binding IsChecked}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>