如何在WPF Mvvm中检索动态生成的单选按钮的选定单选按钮

时间:2014-06-05 11:22:08

标签: c# wpf mvvm

使用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绑定的SupportedNtgsIEnumerable

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类进行任何更改?谢谢

谢谢

1 个答案:

答案 0 :(得分:0)

你去吧

  • 使用SelectedNtg SelectedItem="{Binding SelectedNtg}"
  • 添加了对SelectedItem的绑定

你的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>

这会将所选项目推送到您的视图模型中的属性,因此您将获得您要查找的数据