使用WPF和MVVM模式,我得到了一个动态填充了Radio Buttons的Listbox。
<ListBox ItemsSource="{Binding SupportedNtgs}" VerticalAlignment="Stretch" Background="Transparent">
<ListBox.ItemTemplate>
<DataTemplate>
<RadioButton GroupName="SupportedNtgsRadioButtonList" Content="{Binding Item2}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
在我的ViewModel中我有一个属性
public Ntg SelectedNtg
{
get { return VariantInfo.Ntg; }
set
{
if (VariantInfo.Ntg == value) { return; }
VariantInfo.Ntg = value;
RaisePropertyChanged("SelectedNtg");
}
}
ListBox绑定的SupportedNtgs
是IEnumerable
public IEnumerable<Tuple<Ntg, String>> SupportedNtgs
{
get
{
if (this.supportedNtgs == null) {
this.supportedNtgs = new List<Tuple<Ntg, string>>();
foreach (var item in this.provider.SupportedNtgs) {
this.supportedNtgs.Add(new Tuple<Ntg, string>(item, EnumHelper<Ntg>.Description(item)));
}
}
return this.supportedNtgs;
}
}
有人能告诉我在SelectedNtg属性中存储用户选择的最简单方法是什么,而不对我的Ntg类进行任何更改?谢谢
谢谢
答案 0 :(得分:0)
你去吧
SelectedItem="{Binding SelectedNtg}"
你的xaml
<ListBox ItemsSource="{Binding SupportedNtgs}"
VerticalAlignment="Stretch" Background="Transparent"
SelectedItem="{Binding SelectedNtg}" >
<ListBox.ItemTemplate>
<DataTemplate>
<RadioButton GroupName="SupportedNtgsRadioButtonList"
Content="{Binding Item2}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这会将所选项目推送到您的视图模型中的属性,因此您将获得您要查找的数据