C# 如何在asp.net的dropdownlist中获取选定值

C# 如何在asp.net的dropdownlist中获取选定值,c#,asp.net,wpf,C#,Asp.net,Wpf,关闭下拉列表后,我无法在下拉列表中获取所选值。 设计文件: <StackPanel Orientation="Horizontal" Margin="2"> <TextBlock Width="60" VerticalAlignment="Center" Text="state"></TextBlock> <ComboBox Name="cmbState" Margin

关闭下拉列表后,我无法在下拉列表中获取所选值。 设计文件:

  <StackPanel Orientation="Horizontal" Margin="2">
                    <TextBlock Width="60" VerticalAlignment="Center" Text="state"></TextBlock>
                    <ComboBox  Name="cmbState" Margin="{StaticResource DefaultMargin}" Height="20" Width="220" ItemsSource="{Binding state}" DropDownOpened="cmbState_OnDropDownOpened" DropDownClosed="cmbState_OnDropDownClosed">
                        <ComboBox.ItemTemplate>
                            <DataTemplate>
                                <CheckBox Content="{Binding name}" IsChecked="{Binding selected, Mode=TwoWay}"/>
                            </DataTemplate>
                        </ComboBox.ItemTemplate>
                    </ComboBox>
                </StackPanel>


 public class State : ViewModelBase, ICloneable<State>
    {
        public State()
        {
            Selected = false;
        }

        public string name { get; set; }

        private bool Selected;
        public bool selected
        {
            get { return Selected; }
            set
            {
                if (value == Selected) return;
                Selected = value;
                NotifyPropertyChanged("selected");
            }
        }

        public State clone()
        {
            return MemberwiseClone() as State;
        }
    }
List<string> allState = new List<string> { "Proposed", "Active", "Resolved", "Closed" };
var states = allState.Select(state => new State { name = state }).ToList();
cmbState.ItemsSource = states;

private void cmbState_OnDropDownOpened(object sender, EventArgs e)
        {
            var selectedState = new List<string>();
            cmbState.Items.ToList().ForEach(item =>
            {
                var version = item as State;
                if (version == null) return;
                if (version.selected)
                {
                    if (!selectedState.Contains(version.name))
                        selectedState.Add(version.name);
                }
            });
            if (selectedState.Any())
            {

                var states = cmbState.ItemsSource as List<State>;
                if (states == null) return;
                var release = new State { name = string.Join(";", selectedState), selected = true };
                states.Insert(0, release);
                cmbState.SelectedIndex = 0;
            }
        }
        private void cmbState_OnDropDownClosed(object sender, EventArgs e)
        {
            var selectedState = cmbIssueType.Items[0] as State;

            if (selectedState == null) return;

            var states = cmbIssueType.ItemsSource as List<State>;

            if (states == null) return;

            foreach (var item in selectedState.name.Split(';').Select(version => states.FirstOrDefault(v => v.name == version)).Where(item => item != null))
          {
                item.selected = true;
            }
            states.Remove(selectedState);
        }
我已经复制粘贴了我的全部代码,有人能告诉我如何获得所选下拉列表值吗?我在第二次下拉列表中获得所选值,我希望在关闭下拉列表时获得相同的值。需要帮忙吗


谢谢

对不起,我自己修好了。问题是我更改了事件名称。我错误地在“打开”中写入了“关闭”事件代码,在“关闭”中写入了“打开”事件代码:-

答案就在这里

@Html.DropDownList("Gender", 
  new SelectList(
    Enum.GetValues(
      typeof(MvcLahore1.Models.Gender)
    ),
    selectedValue:Model.Gender), 
    new { @class = "form-control"}
  )

对不起,我自己修好了。问题是我更改了事件名称。我错误地在“打开”中写入了“关闭”事件代码,在“关闭”中写入了“打开”事件代码:-